Index: /XIOS/trunk/bld.cfg
===================================================================
--- /XIOS/trunk/bld.cfg	(revision 313)
+++ /XIOS/trunk/bld.cfg	(revision 314)
@@ -27,6 +27,6 @@
 bld::lib xios
 bld::target libxios.a
-#bld::target main_server.exe test_xios.exe 
-bld::target generate_fortran_interface.exe server_main.exe test_cs.exe 
+bld::target generate_fortran_interface.exe 
+bld::target xios_server.exe test_cs.exe 
 bld::exe_dep
 
Index: OS/trunk/src/buffer.hpp
===================================================================
--- /XIOS/trunk/src/buffer.hpp	(revision 313)
+++ 	(revision )
@@ -1,142 +1,0 @@
-#ifndef __XMLIO_CBuffer__
-#define __XMLIO_CBuffer__
-
-/// xmlioserver headers ///
-#include "xmlioserver_spl.hpp"
-#include "exception.hpp"
-#include "array.hpp"
-
-namespace xmlioserver
-{
-   namespace comm
-   {
-      /// ////////////////////// DÃ©clarations ////////////////////// ///
-      class CBuffer
-      {
-         public :
-
-         //--------------------------------------------------------------
-
-            typedef enum buffer_data_type
-            { TBOOL8 = 0, TINT32, TCHAR8, TFLOAT32, TDOUBLE64
-            } CBufferDataType;
-
-            typedef struct  buffer_data
-            { CBufferDataType type; bool isArray; StdSize size; StdSize position;
-            } CBufferData;
-
-         //--------------------------------------------------------------
-
-            /// Operateurs ///
-            operator char * (void);
-            char * operator[](StdSize position);
-
-            /// Accesseurs ///
-            StdSize getSize(StdSize position = 0) const;
-            char * getData(StdSize position = 0) const;
-
-            template <class T>
-               inline StdSize getRequestedSize(T data) const;
-            template <class T>
-               inline StdSize getRequestedSize(ARRAY(T, 1) data) const;
-
-            StdSize getNextDataPosition(StdSize position);
-            static inline StdSize getDataHeaderSize(void) { return sizeof(CBufferDataType) + 2 * sizeof(StdSize) + sizeof(bool) ; }
-         //--------------------------------------------------------------
-
-            char     getChar  (StdSize position) const;
-            bool     getBool  (StdSize position) const;
-            float    getFloat (StdSize position) const;
-            double   getDouble(StdSize position) const;
-            long int getInt   (StdSize position) const;
-
-            StdString getString(StdSize position) const;
-
-            ARRAY(char,     1) getCharArray  (StdSize position) const;
-            ARRAY(bool,     1) getBoolArray  (StdSize position) const;
-            ARRAY(float,    1) getFloatArray (StdSize position) const;
-            ARRAY(double,   1) getDoubleArray(StdSize position) const;
-            ARRAY(long int, 1) getIntArray   (StdSize position) const;
-
-         //--------------------------------------------------------------
-
-            /// Mutateurs ///
-            void setChar  (char     value, StdSize position) ;
-            void setBool  (bool     value, StdSize position) ;
-            void setFloat (float    value, StdSize position) ;
-            void setDouble(double   value, StdSize position) ;
-            void setInt   (long int value, StdSize position) ;
-
-            void setString(const StdString & value, StdSize position) ;
-
-            void setCharArray  (ARRAY(char,     1) value, StdSize position) ;
-            void setBoolArray  (ARRAY(bool,     1) value, StdSize position) ;
-            void setFloatArray (ARRAY(float,    1) value, StdSize position) ;
-            void setDoubleArray(ARRAY(double,   1) value, StdSize position) ;
-            void setIntArray   (ARRAY(long int, 1) value, StdSize position) ;
-
-         //--------------------------------------------------------------
-
-            virtual void clear(void) = 0;
-            void updateBufferData(StdSize position);
-
-            /// Sortie fichier binaire ///
-            void printToBinaryFile (const StdString & filename);
-            void printToBinaryStream (StdOStream & ostr);
-
-            /// Sortie fichier ascii ///
-            virtual void printToTextFile (const StdString & filename) = 0;
-            virtual void printToTextStream (StdOStream & ostr) = 0;
-
-            /// Destructeur ///
-            virtual ~CBuffer(void);
-
-         protected :
-
-            /// Construteurs ///
-            CBuffer(char * data, StdSize size);
-            explicit CBuffer(StdSize size);
-            CBuffer(const CBuffer & buffer);
-            CBuffer(const CBuffer * const buffer);
-
-            /// Accesseurs protÃ©gÃ©s ///
-            void getBufferData(CBufferData & bufdata, StdSize position) const;
-
-            template <class T>
-               inline void getData(T & data, StdSize position) const;
-            template <class T>
-               inline void getDataArray(ARRAY(T, 1) data, StdSize position) const;
-
-            /// Mutateurs protÃ©gÃ©s ///
-            template <class T>
-               inline void setData(const T & data, StdSize position);
-            template <class T>
-               inline void setDataArray(const ARRAY(T, 1) data, StdSize position);
-
-            void setData(const char * data, StdSize size, StdSize position);
-            void fillData(char data, StdSize size, StdSize position);
-
-         private :
-
-         //--------------------------------------------------------------
-
-            /// Accesseurs privÃ©s ///
-            void getData(char * data, StdSize size, StdSize position) const;
-            template <class T>
-               CBufferDataType getBufferDataType(void) const;
-
-            /// Mutateurs privÃ©s ///
-            void setBufferData(const CBufferData & bufdata, StdSize position);
-            
-         //--------------------------------------------------------------
-
-            /// PropriÃ©tÃ©s privÃ©es ///
-            StdSize size;
-            char * idata;
-            bool delIdata;
-
-      }; // class CBuffer
-   } // namespace comm
-} // namespace xmlioserver
-
-#endif // __XMLIO_CBuffer__
Index: OS/trunk/src/buffer_list.hpp
===================================================================
--- /XIOS/trunk/src/buffer_list.hpp	(revision 313)
+++ 	(revision )
@@ -1,54 +1,0 @@
-#ifndef __XMLIO_CBufferList__
-#define __XMLIO_CBufferList__
-
-/// xmlioserver headers ///
-#include "xmlioserver_spl.hpp"
-#include "buffer.hpp"
-#include "circular_buffer.hpp"
-#include "linear_buffer.hpp"
-#include "mpi_manager.hpp"
-
-namespace xmlioserver
-{
-   namespace comm
-   {
-      /// ////////////////////// DÃ©clarations ////////////////////// ///
-      class CBufferList
-         : public std::vector<CCircularBuffer>   // << pas une liste
-      {
-
-            /// DÃ©finition de type ///
-            typedef std::vector<CCircularBuffer> SuperClass;
-            typedef CCircularBuffer BufferType;
-
-         public :
-
-            /// Construteurs ///
-            CBufferList(MPI_Comm com_client_server = CMPIManager::GetCommWorld());
-            CBufferList(const CBufferList & buffer_list);         // Not implemented yet.
-            CBufferList(const CBufferList * const buffer_list);   // Not implemented yet.
-
-            /// Test ///
-            bool hasRequests(void) const;
-
-            /// Traitement ///
-            bool recvRequests(void);
-
-            /// Accesseurs ///
-            StdSize getNumberOfBuffers(void) const;
-            void getRequests(std::vector<CLinearBuffer> & lbuffer);
-
-            /// Destructeur ///
-            virtual ~CBufferList(void);
-
-
-         private :
-
-            MPI_Comm com_client_server;
-            StdSize nbbuffer;
-
-      }; // class CBufferList
-   } // namespace comm
-} // namespace xmlioserver
-
-#endif // __XMLIO_CBufferList__
Index: OS/trunk/src/buffer_pair.hpp
===================================================================
--- /XIOS/trunk/src/buffer_pair.hpp	(revision 313)
+++ 	(revision )
@@ -1,103 +1,0 @@
-#ifndef __XMLIO_CBufferPair__
-#define __XMLIO_CBufferPair__
-
-/// xmlioserver headers ///
-#include "xmlioserver_spl.hpp"
-#include "buffer.hpp"
-#include "circular_buffer.hpp"
-#include "linear_buffer.hpp"
-#include "mpi_manager.hpp"
-
-namespace xmlioserver
-{
-   namespace comm
-   {
-      /// ////////////////////// DÃ©clarations ////////////////////// ///
-      class CBufferPair
-      {
-
-            /// DÃ©finition de type ///
-            typedef CLinearBuffer BufferType;
-
-         public :
-
-            /// Construteurs ///
-            CBufferPair(MPI_Comm com_client_server = CMPIManager::GetCommWorld());
-            CBufferPair(const CBufferPair & buffer_pair);       // Not implemented yet.
-            CBufferPair(const CBufferPair * const buffer_pair); // Not implemented yet.
-
-            template <typename A1, typename A2, typename A3, typename A4>
-               void prepareRequest(const long int & managerId,
-                                   const long int & methodId,
-                                   A1 * arg1 = CLinearBuffer::NULL_ARG,
-                                   A2 * arg2 = CLinearBuffer::NULL_ARG,
-                                   A3 * arg3 = CLinearBuffer::NULL_ARG,
-                                   A4 * arg4 = CLinearBuffer::NULL_ARG);
-            /// Accesseur ///    
-            CLinearBuffer & getCurrentBuffer(void);
-            
-            /// Traitements divers ///
-            MPI_Request wait(void);
-            void sendCurrentBuffer(void); 
-                        
-            /// Destructeur ///
-            virtual ~CBufferPair(void);
-            
-         protected :
-            
-            /// Test ///
-            bool mustBeSent(void);           
-
-         private :
-
-            /// PropriÃ©tÃ©s privÃ©es ///
-            MPI_Comm com_client_server;
-            CLinearBuffer first, second;
-            MPI_Request first_request, second_request;
-            int currentBuffer;
-
-      }; // class CBufferPair
-      
-      ///--------------------------------------------------------------
-      
-      template <typename A1, typename A2, typename A3, typename A4>
-         void CBufferPair::prepareRequest(const long int & managerId,
-                                          const long int & methodId,
-                                          A1 * arg1, A2 * arg2, A3 * arg3, A4 * arg4)
-      {       
-         if (this->mustBeSent()) 
-            this->sendCurrentBuffer();
-           
-         CLinearBuffer & cbuffer = this->getCurrentBuffer();
-         StdSize usize = cbuffer.getUnusedSize();         
-         StdSize rsize = cbuffer.getRequestedSize(arg1, arg2, arg3, arg4) ;
-         StdSize msize = cbuffer.getSize();
-         
-         long int nbargs = 0;
-         
-         if (arg1 != NULL) nbargs++;
-         if (arg2 != NULL) nbargs++;
-         if (arg3 != NULL) nbargs++;
-         if (arg4 != NULL) nbargs++;
-         
-         if (rsize > msize)
-            ERROR("CBufferPair::sendRequest(...)", << "Le tampon client est trop petit !");
-                  
-         if (rsize <= usize)
-         {
-            cbuffer.appendRequestInfos(managerId, methodId, nbargs);
-         }
-         else
-         {
-            this->wait();
-            this->prepareRequest(managerId, methodId, arg1, arg2, arg3, arg4);
-         }
-      }
-      
-      ///--------------------------------------------------------------
-      
-      
-   } // namespace comm
-} // namespace xmlioserver
-
-#endif // __XMLIO_CBufferPair__
Index: OS/trunk/src/circular_buffer.cpp
===================================================================
--- /XIOS/trunk/src/circular_buffer.cpp	(revision 313)
+++ 	(revision )
@@ -1,260 +1,0 @@
-#include "circular_buffer.hpp"
-
-#include "linear_buffer_impl.hpp"
-
-namespace xmlioserver
-{
-   namespace comm
-   {
-      /// ////////////////////// DÃ©finitions ////////////////////// ///
-      CCircularBuffer::CCircularBuffer(StdSize size)
-         : SuperClass(size)
-         , p_write(0), p_read(0), p_unused(0)
-         , nbrequest(0)
-      { /* Ne rien faire de plus */ }
-
-      CCircularBuffer::CCircularBuffer(const CCircularBuffer & cbuffer)
-         : SuperClass(cbuffer)
-         , p_write(cbuffer.p_write), p_read(cbuffer.p_read), p_unused(cbuffer.p_unused)
-         , nbrequest(cbuffer.nbrequest)
-      { /* Ne rien faire de plus */ }
-      
-      CCircularBuffer::CCircularBuffer(const CCircularBuffer * const cbuffer)
-         : SuperClass(cbuffer)
-         , p_write(cbuffer->p_write), p_read(cbuffer->p_read), p_unused(cbuffer->p_unused)
-         , nbrequest(cbuffer->nbrequest)
-      { /* Ne rien faire de plus */ }
-
-      CCircularBuffer::~CCircularBuffer(void)
-      { /* Ne rien faire de plus */ }
-
-      ///--------------------------------------------------------------
-
-      void CCircularBuffer::clear(void)
-      {
-         this-> p_write  = 0;
-         this-> p_read   = 0;
-         this-> p_unused = 0;
-      }
-
-      //-------------------------------------------------------------
-
-      StdSize CCircularBuffer::getNextRequestSize(void) const
-      {
-         if (!this->hasRequest())
-            ERROR("CCircularBuffer::getNextRequestSize()",
-                  << " invalid call !");
-         long int nbargs  = 0;
-         StdSize startpos = this-> p_read;
-         StdSize currsize = 2 * SuperClass::getRequestedSize(nbargs);
-         nbargs    = SuperClass::getInt(startpos + currsize);
-         currsize += SuperClass::getRequestedSize(nbargs);
-         
-         for (long int i = 0; i < nbargs; i++)
-         {
-            CBufferData bufdata;
-            SuperClass::getBufferData(bufdata, startpos + currsize);
-            currsize += (bufdata.size + DATA_HEADER_SIZE);
-         }
-         return (currsize);
-      }
-      
-      //-------------------------------------------------------------
-      
-      CLinearBuffer CCircularBuffer::getNextRequest(void)
-      {
-         StdSize startpos = this-> p_read;
-         StdSize currsize = this->getNextRequestSize();
-        
-         this->movePRead(currsize);
-         this->nbrequest--;
-        
-         return (CLinearBuffer(SuperClass::getData(startpos), currsize));
-      }
-
-      //-------------------------------------------------------------
-
-      void CCircularBuffer::appendRequest(const CLinearBuffer & brequest)
-      {
-         StdSize usedsize   = brequest.getUsedSize();
-         if (!this->isAvailable(usedsize))
-            ERROR("CCircularBuffer::appendRequest(brequest)",
-                  << " invalid call !");
-         StdSize data_begin = this->prepareNextDataPosition(usedsize);
-         SuperClass::setData(brequest.getData(), usedsize, data_begin);
-         this->updateNbRequests(data_begin, data_begin + usedsize);
-      }
-
-      //-------------------------------------------------------------
-
-      char * CCircularBuffer::prepareNextData(StdSize data_size)
-      {
-         return (SuperClass::getData(this->prepareNextDataPosition(data_size)));
-      }
-      
-      //-------------------------------------------------------------
-
-      StdSize CCircularBuffer::prepareNextDataPosition(StdSize data_size)
-      {
-         StdSize startpos = this-> p_write;
-         if (!this->isAvailable(data_size))
-            ERROR("CCircularBuffer::prepareNextDataPosition(data_size)",
-                  << " invalid call !");
-         if ((this-> p_write + data_size) > SuperClass::getSize())
-            startpos = 0;
-
-         this->movePWrite(data_size);
-         return (startpos);
-      }
-
-      //-------------------------------------------------------------
-
-      void CCircularBuffer::movePRead(StdSize data_size)
-      {
-         this-> p_read += data_size;
-         if ((this-> p_read == this-> p_unused) &&
-             (this-> p_read == this-> p_write))
-         {
-            this->clear();
-            return;
-         }
-         
-         if (this-> p_read == this-> p_unused)
-         {
-            this-> p_unused = this-> p_write;
-            this-> p_read   = 0;
-            return;
-         }
-         if (this-> p_read == this-> p_write)
-         {
-            this->clear();
-         }
-      }
-      
-      //-------------------------------------------------------------
-      
-      void CCircularBuffer::movePWrite(StdSize data_size)
-      {
-         if ((this-> p_write + data_size) > SuperClass::getSize())
-         {
-            this-> p_unused = this-> p_write;
-            this-> p_write  = data_size;
-            if (this-> p_read < (data_size))
-               ERROR("CCircularBuffer::movePWrite(data_size)",
-                     << " invalid position 1 !");
-         }
-         else
-         {
-            if ((this-> p_read > this-> p_write) &&
-                (this-> p_read < (this-> p_write + data_size)))
-               ERROR("CCircularBuffer::movePWrite(data_size)",
-                     << " invalid position 2 !");
-            this-> p_write += data_size;
-            if (this->p_read < this->p_write)
-               this-> p_unused = this-> p_write;
-         }
-      }
-
-      //-------------------------------------------------------------
-
-      bool CCircularBuffer::hasRequest(void) const
-      { 
-         return (this->nbrequest != 0); 
-      }
-      
-      //-------------------------------------------------------------
-      
-      bool CCircularBuffer::isAvailable(StdSize data_size) const
-      {
-         if (this->p_write == this->p_unused)
-            return (((SuperClass::getSize() - this->p_write) >= data_size) ||
-                   (this->p_read >= data_size));
-         else
-            return ((this->p_read - this->p_write) >= data_size);
-      }
-      //---------------------------------------------------------------
-
-      void CCircularBuffer::printToTextFile (const StdString & filename)
-      {
-         StdOFStream ofs(filename.c_str());
-         this->printToTextStream(ofs);
-         ofs.close();
-      }
-      
-      //-------------------------------------------------------------
-      
-      void CCircularBuffer::printToTextStream (StdOStream & ostr)
-      {
-         StdSize _p_write   = p_write,
-                 _p_read    = p_read,
-                 _p_unused  = p_unused,
-                 _nbrequest = nbrequest;
-
-         while (this->hasRequest())
-         {
-            this->getNextRequest().printToTextStream(ostr);
-            ostr << std::endl;
-         }
-
-         p_write   = _p_write;
-         p_read    = _p_read;
-         p_unused  = _p_unused;
-         nbrequest = _nbrequest;
-      }
-
-      //---------------------------------------------------------------
-
-      StdSize CCircularBuffer::getNumberOfRequest(void) const
-      { 
-         return (this->nbrequest); 
-      }
-
-      //---------------------------------------------------------------
-
-      StdSize CCircularBuffer::getReadPosition(void) const
-      { 
-         return (this->p_read); 
-      }
-
-      //---------------------------------------------------------------
-
-      StdSize CCircularBuffer::getWritePosition(void) const
-      { 
-         return (this->p_write); 
-      }
-
-      //---------------------------------------------------------------
-
-      StdSize CCircularBuffer::getUnusedPosition(void) const
-      { 
-         return (this->p_unused); 
-      }
-
-      //---------------------------------------------------------------
-
-      void CCircularBuffer::updateNbRequests(StdSize data_begin, StdSize data_end)
-      {
-         StdSize position = data_begin;        
-         while (position != data_end)
-         {
-            this->nbrequest++;
-            position = SuperClass::getNextDataPosition(position); // manager id           
-            position = SuperClass::getNextDataPosition(position); // method id           
-            SuperClass::updateBufferData(position);
-            long int nbarg = SuperClass::getInt(position);
-            position = SuperClass::getNextDataPosition(position);
-            for (long int i = 0; i < nbarg; i++)
-               position = SuperClass::getNextDataPosition(position);
-               
-            if (position > data_end)
-              ERROR("CCircularBuffer::updateNbRequests(StdSize data_begin, StdSize data_end)",
-                     << "[ position courante" << position
-                     << ", fin de traitement" << data_end << " ] "
-                     << "Impossible de mettre Ã  jour la liste des requÃªtes !");
-         }
-      }
-
-      ///------------------------------------------------------------
-   } // namespace tree
-} // namespace xmlioserver
-
Index: OS/trunk/src/circular_buffer.hpp
===================================================================
--- /XIOS/trunk/src/circular_buffer.hpp	(revision 313)
+++ 	(revision )
@@ -1,72 +1,0 @@
-#ifndef __XMLIO_CCircularBuffer__
-#define __XMLIO_CCircularBuffer__
-
-/// xmlioserver headers ///
-#include "xmlioserver_spl.hpp"
-#include "linear_buffer.hpp"
-
-namespace xmlioserver
-{
-   namespace comm
-   {
-      /// ////////////////////// DÃ©clarations ////////////////////// ///
-      class CCircularBuffer
-         : public CBuffer
-      {
-
-            /// DÃ©finition de type ///
-            typedef CBuffer SuperClass;
-
-         public :
-
-            /// Construteurs ///
-            explicit CCircularBuffer(StdSize size = BUFFER_SERVER_SIZE);
-            CCircularBuffer(const CCircularBuffer & cbuffer);
-            CCircularBuffer(const CCircularBuffer * const cbuffer);
-
-            /// Mutateurs ///
-            virtual void clear(void);
-
-            char * prepareNextData(StdSize data_size);
-            StdSize prepareNextDataPosition(StdSize data_size);
-
-            void appendRequest(const CLinearBuffer & brequest);
-
-            void updateNbRequests(StdSize data_begin, StdSize data_end);
-
-            /// Test ///
-            bool hasRequest(void) const ;
-            bool isAvailable(StdSize data_size) const;
-
-            /// Accesseurs ///
-            CLinearBuffer getNextRequest(void);
-            StdSize getNumberOfRequest(void) const;
-
-            StdSize getReadPosition(void) const;
-            StdSize getWritePosition(void) const;
-            StdSize getUnusedPosition(void) const;
-
-            /// Sortie fichier ascii ///
-            virtual void printToTextFile (const StdString & filename);
-            virtual void printToTextStream (StdOStream & ostr);
-
-            /// Destructeur ///
-            virtual ~CCircularBuffer(void);
-
-         private :
-
-            /// Mutateurs privÃ©s ///
-            void movePWrite(StdSize data_size);
-            void movePRead(StdSize data_size);
-
-            /// Accesseurs privÃ©s ///
-            StdSize getNextRequestSize(void) const;
-
-            /// PropriÃ©tÃ©s privÃ©es ///
-            StdSize p_write, p_read, p_unused, nbrequest;
-
-      }; // class CCircularBuffer
-   } // namespace comm
-} // namespace xmlioserver
-
-#endif // __XMLIO_CCircularBuffer__
Index: OS/trunk/src/client.cpp
===================================================================
--- /XIOS/trunk/src/client.cpp	(revision 313)
+++ 	(revision )
@@ -1,133 +1,0 @@
-#include "client.hpp"
-
-#include "linear_buffer_impl.hpp"
-
-namespace xmlioserver {
-namespace comm {
-
-   /// ////////////////////// DÃ©finitions ////////////////////// ///
-   
-   CClient::CClient(MPI_Comm comm_client_server)
-      : bpair(comm_client_server)
-   { 
-      this->initialize();
-   }  
-        
-   CClient::~CClient(void)
-   { 
-      //this->finalize();
-   } 
-   
-   ///--------------------------------------------------------------
-
-   boost::shared_ptr<CClient> CClient::Client;
-
-   ///--------------------------------------------------------------
-
-   boost::shared_ptr<CClient> CClient::CreateClient(MPI_Comm comm_client_server)
-   {
-      if (CClient::Client.get() == NULL)
-         CClient::Client = boost::shared_ptr<CClient>(new CClient(comm_client_server));
-      return (CClient::GetClient());
-   }
-
-   ///--------------------------------------------------------------
-
-   boost::shared_ptr<CClient> CClient::GetClient(void)
-   {
-      return (CClient::Client);
-   }
-
-   ///--------------------------------------------------------------
-   
-   const CBufferPair & CClient::getBufferPair(void) const 
-   {
-      return (this->bpair);
-   }   
-   
-   //---------------------------------------------------------------
-
-   void CClient::initialize(void)
-   {
-      this->bpair.prepareRequest(0, 0, CLinearBuffer::NULL_ARG,
-                                       CLinearBuffer::NULL_ARG,
-                                       CLinearBuffer::NULL_ARG,
-                                       CLinearBuffer::NULL_ARG);
-      // Pas d'argument Ã  ajouter.
-   }
-   
-   //---------------------------------------------------------------
-   
-   void CClient::finalize(void)
-   {
-      this->bpair.prepareRequest(0, 1, CLinearBuffer::NULL_ARG,
-                                       CLinearBuffer::NULL_ARG,
-                                       CLinearBuffer::NULL_ARG,
-                                       CLinearBuffer::NULL_ARG);
-      // Pas d'argument Ã  ajouter.
-      this->bpair.sendCurrentBuffer();
-      comm::CMPIManager::Barrier(CMPIManager::GetCommClientServer());
-   }
-   
-   //---------------------------------------------------------------
-   
-   void CClient::setContext(const StdString & idContext)
-   {
-      this->bpair.prepareRequest(1, 0, &idContext,
-                                       CLinearBuffer::NULL_ARG,
-                                       CLinearBuffer::NULL_ARG,
-                                       CLinearBuffer::NULL_ARG);
-      this->bpair.getCurrentBuffer().appendString(idContext);
-   }
-   
-   //---------------------------------------------------------------
-   
-   void CClient::updateCalendar(long int timestep)
-   {
-       this->bpair.prepareRequest(1, 1, &timestep,
-                                       CLinearBuffer::NULL_ARG,
-                                       CLinearBuffer::NULL_ARG,
-                                       CLinearBuffer::NULL_ARG);
-      this->bpair.getCurrentBuffer().appendInt(timestep);
-   }
-
-   //---------------------------------------------------------------
-
-   void CClient::setTimestep(const date::CDuration & duration)
-   {
-      StdString durationstr = duration.toString();
-      this->bpair.prepareRequest(1, 2, &durationstr,
-                                       CLinearBuffer::NULL_ARG,
-                                       CLinearBuffer::NULL_ARG,
-                                       CLinearBuffer::NULL_ARG);
-      this->bpair.getCurrentBuffer().appendString(durationstr);
-   }
-   
-   //---------------------------------------------------------------
-   
-   void CClient::sendData
-      (const StdString & fieldId, const StdString & fileId, const ARRAY(float, 1) dataArray)
-   {
-      this->bpair.prepareRequest(2, 0, &fieldId, &fileId, &dataArray,
-                                       CLinearBuffer::NULL_ARG);
-      this->bpair.getCurrentBuffer().appendString(fieldId);
-      this->bpair.getCurrentBuffer().appendString(fileId);
-      this->bpair.getCurrentBuffer().appendFloatArray(dataArray);
-   }
-   
-   //---------------------------------------------------------------
-   
-   void CClient::sendData
-      (const StdString & fieldId, const StdString & fileId, const ARRAY(double, 1) dataArray)
-   {
-      this->bpair.prepareRequest(2, 1, &fieldId, &fileId, &dataArray,
-                                       CLinearBuffer::NULL_ARG);
-      this->bpair.getCurrentBuffer().appendString(fieldId);
-      this->bpair.getCurrentBuffer().appendString(fileId);
-      this->bpair.getCurrentBuffer().appendDoubleArray(dataArray);
-   }
-
-   ///--------------------------------------------------------------
-
-} // namespace comm
-} // namespace xmlioserver
Index: OS/trunk/src/client.hpp
===================================================================
--- /XIOS/trunk/src/client.hpp	(revision 313)
+++ 	(revision )
@@ -1,64 +1,0 @@
-#ifndef __XMLIO_Client__
-#define __XMLIO_Client__
-
-/// xmlioserver headers ///
-#include "xmlioserver_spl.hpp"
-#include "mpi_manager.hpp"
-#include "buffer_pair.hpp"
-#include "array.hpp"
-#include "duration.hpp"
-
-namespace xmlioserver {
-namespace comm {
-
-   /// ////////////////////// DÃ©clarations ////////////////////// ///
-   
-   class CClient
-   {
-      public :
-
-         static boost::shared_ptr<CClient> CreateClient(MPI_Comm comm_client_server);
-         static boost::shared_ptr<CClient> GetClient(void);
-                
-         /// Destructeur ///
-         ~CClient(void);  
-         
-      public : 
-      
-         /// Accesseur ///
-         const CBufferPair & getBufferPair(void) const;
-              
-         /// Appels distants///   
-         void initialize(void); // manager 0, method 0
-         void finalize(void);   // manager 0, method 1
-         
-      public : 
-       
-         void setContext(const StdString & idContext);      // manager 1, method 0
-         void updateCalendar(long int timestep);            // manager 1, method 1
-         void setTimestep(const date::CDuration & duration);// manager 1, method 2
-         
-         void sendData(const StdString & fieldId,
-                       const StdString & fileId,
-                       const ARRAY(float, 1)  dataArray); // manager 2, method 0
-         
-         void sendData(const StdString & fieldId,
-                       const StdString & fileId,
-                       const ARRAY(double, 1) dataArray); // manager 2, method 1
-         
-      private :
-
-         /// Constructeurs ///
-         CClient(MPI_Comm comm_client_server);
-      
-         /// PropriÃ©tÃ© privÃ©e ///
-         CBufferPair bpair;
-
-         static boost::shared_ptr<CClient> Client;
-      
-   }; // class CClient   
-   
-} // namespace comm
-} // namespace xmlioserver
-
-#endif //__XMLIO_Client__
Index: /XIOS/trunk/src/client_ym.cpp
===================================================================
--- /XIOS/trunk/src/client_ym.cpp	(revision 313)
+++ /XIOS/trunk/src/client_ym.cpp	(revision 314)
@@ -4,5 +4,4 @@
 #include <boost/functional/hash.hpp>
 #include "type.hpp"
-#include "buffer.hpp"
 #include "context.hpp"
 #include "context_client.hpp"
@@ -130,59 +129,4 @@
     
     
-    
-    
-/*    
-    void CClient::initialize(const string& codeId,MPI_Comm& localComm,MPI_Comm& returnComm)
-    {
-      boost::hash<string> hashString ;    
-    
-      unsigned long hashClient=hashString(codeId) ;
-      unsigned long hashServer=hashString(CXios::xiosCodeId) ;
-      unsigned long* hashAll ;
-      int rank ;
-      int size ;
-      int myColor ;
-      int i,c ;
-      MPI_Comm newComm ;
-      
-      MPI_Comm_size(CXios::globalComm,&size) ;
-      MPI_Comm_rank(CXios::globalComm,&rank);
-      hashAll=new unsigned long[size] ;
-     
-      MPI_Allgather(&hashClient,1,MPI_LONG,hashAll,1,MPI_LONG,CXios::globalComm) ;
-
-      map<unsigned long, int> colors ;
-      map<unsigned long, int> leaders ;
-      
-      for(i=0,c=0;i<size;i++)
-      {
-        if (colors.find(hashAll[i])==colors.end())
-        {
-          colors[hashAll[i]] =c ;
-          leaders[hashAll[i]]=i ;
-          c++ ;
-        }
-        
-      }
-     
-      myColor=colors[hashClient] ;
-      
-      MPI_Comm_split(CXios::globalComm,myColor,rank,&intraComm) ;
-
-      if (!CXios::isServer)
-      {     
-        int clientLeader=leaders[hashClient] ;
-        serverLeader=leaders[hashServer] ;
-        MPI_Intercomm_create(intraComm,0,CXios::globalComm,serverLeader,0,&interComm) ;
-      }
-      else
-      {
-        MPI_Comm_dup(intraComm,&interComm) ;
-      }
-
-      delete [] hashAll ;
-    }
-  */
-    
     void CClient::registerContext(const string& id,MPI_Comm contextComm)
     {
Index: /XIOS/trunk/src/context_client.cpp
===================================================================
--- /XIOS/trunk/src/context_client.cpp	(revision 313)
+++ /XIOS/trunk/src/context_client.cpp	(revision 314)
@@ -8,5 +8,4 @@
 #include "message.hpp"
 #include "event_client.hpp"
-#include "transfert_parameters.hpp"
 #include "context.hpp"
 #include <mpi.h>
Index: /XIOS/trunk/src/context_server.cpp
===================================================================
--- /XIOS/trunk/src/context_server.cpp	(revision 313)
+++ /XIOS/trunk/src/context_server.cpp	(revision 314)
@@ -2,5 +2,4 @@
 #include "buffer_in.hpp"
 #include "type.hpp"
-#include "transfert_parameters.hpp"
 #include "context.hpp"
 #include "object_template_impl.hpp"
Index: OS/trunk/src/data_treatment.cpp
===================================================================
--- /XIOS/trunk/src/data_treatment.cpp	(revision 313)
+++ 	(revision )
@@ -1,189 +1,0 @@
-#include "data_treatment.hpp"
-
-#include "attribute_template_impl.hpp"
-#include "object_template_impl.hpp"
-#include "group_template_impl.hpp"
-#include "object_factory_impl.hpp"
-
-
-namespace xmlioserver
-{
-   namespace data
-   {
-      /// ////////////////////// DÃ©finitions ////////////////////// ///
-      CDataTreatment::CDataTreatment (boost::shared_ptr<CContext> _ctxt)
-         : currentContext(_ctxt), enabledFiles()
-      { this->doTreatment(); }
-
-      CDataTreatment::~CDataTreatment(void)
-      { /* Ne rien faire de plus */ }
-
-      ///---------------------------------------------------------------
-
-      const boost::shared_ptr<CContext>
-         CDataTreatment::getCurrentContext(void) const
-      {
-         return (this->currentContext);
-      }
-
-      const std::vector<boost::shared_ptr<CFile> > &
-         CDataTreatment::getEnabledFiles (void) const
-      {
-         return (this->enabledFiles);
-      }
-      //----------------------------------------------------------------
-
-      void CDataTreatment::update_calendar(int step)
-      {
-         // Mise Ã  jour cÃŽtÃ© client
-         this->currentContext->getCalendar()->update(step);
-         if (CXIOSManager::GetStatus() == CXIOSManager::LOC_CLIENT)
-         { // Mise Ã  jour cÃŽtÃ© serveur
-            boost::shared_ptr<comm::CClient> client = comm::CClient::GetClient();
-            client->updateCalendar(step);
-         }
-      }
-
-      void CDataTreatment::set_timestep(const date::CDuration & duration)
-      {
-         // Mise Ã  jour cÃŽtÃ© client
-         this->currentContext->getCalendar()->setTimeStep(duration);
-         this->currentContext->timestep.setValue(duration.toString());
-         if (CXIOSManager::GetStatus() == CXIOSManager::LOC_CLIENT)
-         { // Mise Ã  jour cÃŽtÃ© serveur
-            boost::shared_ptr<comm::CClient> client = comm::CClient::GetClient();
-            client->setTimestep(duration);
-         }
-      }
-
-      void CDataTreatment::finalize(void)
-      {
-         // Mise Ã  jour cÃŽtÃ© client
-         if (CXIOSManager::GetStatus() == CXIOSManager::LOC_CLIENT)
-         { // Mise Ã  jour cÃŽtÃ© serveur
-            boost::shared_ptr<comm::CClient> client = comm::CClient::GetClient();
-            client->finalize();
-         }
-         else closeAllFile() ;
-      }
-
-      void CDataTreatment::closeAllFile(void )
-      {
-         std::vector<boost::shared_ptr<CFile> >::const_iterator
-            it = this->enabledFiles.begin(), end = this->enabledFiles.end();
-         
-         for (; it != end; it++)
-         {
-            (*it)->close();
-         }
-      }
-      //----------------------------------------------------------------
-      
-      void CDataTreatment::write_data
-                           (const StdString & fieldId,
-                            const StdString & fileId,
-                            const std::deque<ARRAY(double, 1)> & data)
-      {
-         const date::CDate & currDate =
-                this->currentContext->getCalendar()->getCurrentDate();
-         const std::vector<boost::shared_ptr<CField> > & refField=
-               CObjectFactory::GetObject<CField>(fieldId)->getAllReference();
-         std::vector<boost::shared_ptr<CField> >::const_iterator
-               it = refField.begin(), end = refField.end();
-
-         for (; it != end; it++)
-         {
-            boost::shared_ptr<CField> field = *it;
-            boost::shared_ptr<CFile>  file  = field->getRelFile();
-            
-            if (file->getId().compare(fileId) == 0)
-            {
-               if (field->updateDataServer(currDate, data))
-               {
-                  file->getDataOutput()->writeFieldData(field);
-               }
-               return;
-            }
-         }
-
-      }
-
-      //----------------------------------------------------------------
-
-      void CDataTreatment::doTreatment(void)
-      {         
-         // RÃ©solution du calendrier
-         this->currentContext->solveCalendar();         
-         
-         // RÃ©solution des hÃ©ritages pour le context actuel.
-         this->solveAllInheritance();
-
-         //Initialisation du vecteur 'enabledFiles' contenant la liste des fichiers Ã  sortir.
-         this->findEnabledFiles();
-
-         //Recherche des champs Ã  sortir (enable Ã  true + niveau de sortie correct)
-         // pour chaque fichier prÃ©cÃ©demment listÃ©.
-         this->findAllEnabledFields();
-
-         // RÃ©solution des rÃ©fÃ©rences de grilles pour chacun des champs.
-         this->solveAllGridRef();
-
-         // Traitement des opÃ©rations.
-         this->solveAllOperation();
-
-         // Nettoyage de l'arborescence
-         CContext::CleanTree();
-
-      }
-
-      void CDataTreatment::findAllEnabledFields(void)
-      {
-         for (unsigned int i = 0; i < this->enabledFiles.size(); i++)
-            (void)this->enabledFiles[i]->getEnabledFields();
-      }
-
-      void CDataTreatment::solveAllGridRef(void)
-      {
-         for (unsigned int i = 0; i < this->enabledFiles.size(); i++)
-            this->enabledFiles[i]->solveEFGridRef();
-      }
-
-      void CDataTreatment::solveAllOperation(void)
-      {
-         for (unsigned int i = 0; i < this->enabledFiles.size(); i++)
-            this->enabledFiles[i]->solveEFOperation();
-      }
-
-      void CDataTreatment::solveAllInheritance(void) const
-      {
-         // RÃ©solution des hÃ©ritages descendants (cÃ d des hÃ©ritages de groupes)
-         // pour chacun des contextes.
-         this->currentContext->solveDescInheritance();
-
-         // RÃ©solution des hÃ©ritages par rÃ©fÃ©rence au niveau des fichiers.
-          const std::vector<boost::shared_ptr<CFile> > & allFiles
-            = CObjectFactory::GetObjectVector<CFile>();
-
-         for (unsigned int i = 0; i < allFiles.size(); i++)
-            allFiles[i]->solveFieldRefInheritance();
-      }
-
-      void CDataTreatment::findEnabledFiles(void)
-      {
-         const std::vector<boost::shared_ptr<CFile> > & allFiles
-            = CObjectFactory::GetObjectVector<CFile>();
-
-         for (unsigned int i = 0; i < allFiles.size(); i++)
-            if (!allFiles[i]->enabled.isEmpty()) // Si l'attribut 'enabled' est dÃ©fini.
-               if (allFiles[i]->enabled.getValue()) // Si l'attribut 'enabled' est fixÃ© Ã  vrai.
-                  enabledFiles.push_back(allFiles[i]);
-
-         if (enabledFiles.size() == 0)
-            DEBUG(<<"Aucun fichier ne va Ãªtre sorti dans le contexte nommÃ© \""
-                  << this->currentContext->getId() << "\" !");
-      }
-
-      ///---------------------------------------------------------------
-
-   } // namespace data
-} // namespace xmlioserver
Index: /XIOS/trunk/src/fortran/icdata.cpp
===================================================================
--- /XIOS/trunk/src/fortran/icdata.cpp	(revision 313)
+++ /XIOS/trunk/src/fortran/icdata.cpp	(revision 314)
@@ -17,6 +17,4 @@
 
 #include "icutil.hpp"
-#include "mpi_manager.hpp"
-#include "buffer.hpp"
 #include "cxios.hpp"
 #include "client_ym.hpp"
Index: /XIOS/trunk/src/fortran_attr_interface/axis_interface_attr.f90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/axis_interface_attr.f90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/axis_interface_attr.f90	(revision 314)
@@ -0,0 +1,101 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+
+MODULE axis_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  
+  INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99
+    
+    
+    SUBROUTINE cxios_set_axis_long_name(axis_hdl, long_name, long_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: long_name
+      INTEGER  (kind = C_INT)     , VALUE        :: long_name_size
+    END SUBROUTINE cxios_set_axis_long_name
+    
+    SUBROUTINE cxios_get_axis_long_name(axis_hdl, long_name, long_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: long_name
+      INTEGER  (kind = C_INT)     , VALUE        :: long_name_size
+    END SUBROUTINE cxios_get_axis_long_name
+    
+    
+    SUBROUTINE cxios_set_axis_name(axis_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_set_axis_name
+    
+    SUBROUTINE cxios_get_axis_name(axis_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_get_axis_name
+    
+    
+    SUBROUTINE cxios_set_axis_size(axis_hdl, size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: size
+    END SUBROUTINE cxios_set_axis_size
+    
+    SUBROUTINE cxios_get_axis_size(axis_hdl, size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      INTEGER (KIND=C_INT)             :: size
+    END SUBROUTINE cxios_get_axis_size
+    
+    
+    SUBROUTINE cxios_set_axis_standard_name(axis_hdl, standard_name, standard_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: standard_name
+      INTEGER  (kind = C_INT)     , VALUE        :: standard_name_size
+    END SUBROUTINE cxios_set_axis_standard_name
+    
+    SUBROUTINE cxios_get_axis_standard_name(axis_hdl, standard_name, standard_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: standard_name
+      INTEGER  (kind = C_INT)     , VALUE        :: standard_name_size
+    END SUBROUTINE cxios_get_axis_standard_name
+    
+    
+    SUBROUTINE cxios_set_axis_unit(axis_hdl, unit, unit_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: unit
+      INTEGER  (kind = C_INT)     , VALUE        :: unit_size
+    END SUBROUTINE cxios_set_axis_unit
+    
+    SUBROUTINE cxios_get_axis_unit(axis_hdl, unit, unit_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: unit
+      INTEGER  (kind = C_INT)     , VALUE        :: unit_size
+    END SUBROUTINE cxios_get_axis_unit
+    
+    
+    SUBROUTINE cxios_set_axis_value(axis_hdl, value, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: axis_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: value
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_set_axis_value
+    
+    SUBROUTINE cxios_get_axis_value(axis_hdl, value, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: axis_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: value
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_get_axis_value
+    
+    
+    END INTERFACE
+  
+END MODULE axis_interface_attr
Index: /XIOS/trunk/src/fortran_attr_interface/axisgroup_interface_attr.f90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/axisgroup_interface_attr.f90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/axisgroup_interface_attr.f90	(revision 314)
@@ -0,0 +1,116 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+
+MODULE axisgroup_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  
+  INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99
+    
+    
+    SUBROUTINE cxios_set_axisgroup_group_ref(axisgroup_hdl, group_ref, group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: group_ref_size
+    END SUBROUTINE cxios_set_axisgroup_group_ref
+    
+    SUBROUTINE cxios_get_axisgroup_group_ref(axisgroup_hdl, group_ref, group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: group_ref_size
+    END SUBROUTINE cxios_get_axisgroup_group_ref
+    
+    
+    SUBROUTINE cxios_set_axisgroup_long_name(axisgroup_hdl, long_name, long_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: long_name
+      INTEGER  (kind = C_INT)     , VALUE        :: long_name_size
+    END SUBROUTINE cxios_set_axisgroup_long_name
+    
+    SUBROUTINE cxios_get_axisgroup_long_name(axisgroup_hdl, long_name, long_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: long_name
+      INTEGER  (kind = C_INT)     , VALUE        :: long_name_size
+    END SUBROUTINE cxios_get_axisgroup_long_name
+    
+    
+    SUBROUTINE cxios_set_axisgroup_name(axisgroup_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_set_axisgroup_name
+    
+    SUBROUTINE cxios_get_axisgroup_name(axisgroup_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_get_axisgroup_name
+    
+    
+    SUBROUTINE cxios_set_axisgroup_size(axisgroup_hdl, size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: size
+    END SUBROUTINE cxios_set_axisgroup_size
+    
+    SUBROUTINE cxios_get_axisgroup_size(axisgroup_hdl, size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      INTEGER (KIND=C_INT)             :: size
+    END SUBROUTINE cxios_get_axisgroup_size
+    
+    
+    SUBROUTINE cxios_set_axisgroup_standard_name(axisgroup_hdl, standard_name, standard_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: standard_name
+      INTEGER  (kind = C_INT)     , VALUE        :: standard_name_size
+    END SUBROUTINE cxios_set_axisgroup_standard_name
+    
+    SUBROUTINE cxios_get_axisgroup_standard_name(axisgroup_hdl, standard_name, standard_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: standard_name
+      INTEGER  (kind = C_INT)     , VALUE        :: standard_name_size
+    END SUBROUTINE cxios_get_axisgroup_standard_name
+    
+    
+    SUBROUTINE cxios_set_axisgroup_unit(axisgroup_hdl, unit, unit_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: unit
+      INTEGER  (kind = C_INT)     , VALUE        :: unit_size
+    END SUBROUTINE cxios_set_axisgroup_unit
+    
+    SUBROUTINE cxios_get_axisgroup_unit(axisgroup_hdl, unit, unit_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: unit
+      INTEGER  (kind = C_INT)     , VALUE        :: unit_size
+    END SUBROUTINE cxios_get_axisgroup_unit
+    
+    
+    SUBROUTINE cxios_set_axisgroup_value(axisgroup_hdl, value, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: axisgroup_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: value
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_set_axisgroup_value
+    
+    SUBROUTINE cxios_get_axisgroup_value(axisgroup_hdl, value, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: axisgroup_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: value
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_get_axisgroup_value
+    
+    
+    END INTERFACE
+  
+END MODULE axisgroup_interface_attr
Index: /XIOS/trunk/src/fortran_attr_interface/context_interface_attr.f90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/context_interface_attr.f90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/context_interface_attr.f90	(revision 314)
@@ -0,0 +1,73 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+
+MODULE context_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  
+  INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99
+    
+    
+    SUBROUTINE cxios_set_context_calendar_type(context_hdl, calendar_type, calendar_type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: context_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: calendar_type
+      INTEGER  (kind = C_INT)     , VALUE        :: calendar_type_size
+    END SUBROUTINE cxios_set_context_calendar_type
+    
+    SUBROUTINE cxios_get_context_calendar_type(context_hdl, calendar_type, calendar_type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: context_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: calendar_type
+      INTEGER  (kind = C_INT)     , VALUE        :: calendar_type_size
+    END SUBROUTINE cxios_get_context_calendar_type
+    
+    
+    SUBROUTINE cxios_set_context_output_dir(context_hdl, output_dir, output_dir_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: context_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: output_dir
+      INTEGER  (kind = C_INT)     , VALUE        :: output_dir_size
+    END SUBROUTINE cxios_set_context_output_dir
+    
+    SUBROUTINE cxios_get_context_output_dir(context_hdl, output_dir, output_dir_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: context_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: output_dir
+      INTEGER  (kind = C_INT)     , VALUE        :: output_dir_size
+    END SUBROUTINE cxios_get_context_output_dir
+    
+    
+    SUBROUTINE cxios_set_context_start_date(context_hdl, start_date, start_date_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: context_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: start_date
+      INTEGER  (kind = C_INT)     , VALUE        :: start_date_size
+    END SUBROUTINE cxios_set_context_start_date
+    
+    SUBROUTINE cxios_get_context_start_date(context_hdl, start_date, start_date_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: context_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: start_date
+      INTEGER  (kind = C_INT)     , VALUE        :: start_date_size
+    END SUBROUTINE cxios_get_context_start_date
+    
+    
+    SUBROUTINE cxios_set_context_timestep(context_hdl, timestep, timestep_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: context_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: timestep
+      INTEGER  (kind = C_INT)     , VALUE        :: timestep_size
+    END SUBROUTINE cxios_set_context_timestep
+    
+    SUBROUTINE cxios_get_context_timestep(context_hdl, timestep, timestep_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: context_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: timestep
+      INTEGER  (kind = C_INT)     , VALUE        :: timestep_size
+    END SUBROUTINE cxios_get_context_timestep
+    
+    
+    END INTERFACE
+  
+END MODULE context_interface_attr
Index: /XIOS/trunk/src/fortran_attr_interface/domain_interface_attr.f90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/domain_interface_attr.f90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/domain_interface_attr.f90	(revision 314)
@@ -0,0 +1,436 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+
+MODULE domain_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  
+  INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99
+    
+    
+    SUBROUTINE cxios_set_domain_data_dim(domain_hdl, data_dim) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: data_dim
+    END SUBROUTINE cxios_set_domain_data_dim
+    
+    SUBROUTINE cxios_get_domain_data_dim(domain_hdl, data_dim) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: data_dim
+    END SUBROUTINE cxios_get_domain_data_dim
+    
+    
+    SUBROUTINE cxios_set_domain_data_i_index(domain_hdl, data_i_index, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl
+      INTEGER (KIND=C_INT)     , DIMENSION(*) :: data_i_index
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_set_domain_data_i_index
+    
+    SUBROUTINE cxios_get_domain_data_i_index(domain_hdl, data_i_index, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl
+      INTEGER (KIND=C_INT)     , DIMENSION(*) :: data_i_index
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_get_domain_data_i_index
+    
+    
+    SUBROUTINE cxios_set_domain_data_ibegin(domain_hdl, data_ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: data_ibegin
+    END SUBROUTINE cxios_set_domain_data_ibegin
+    
+    SUBROUTINE cxios_get_domain_data_ibegin(domain_hdl, data_ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: data_ibegin
+    END SUBROUTINE cxios_get_domain_data_ibegin
+    
+    
+    SUBROUTINE cxios_set_domain_data_j_index(domain_hdl, data_j_index, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl
+      INTEGER (KIND=C_INT)     , DIMENSION(*) :: data_j_index
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_set_domain_data_j_index
+    
+    SUBROUTINE cxios_get_domain_data_j_index(domain_hdl, data_j_index, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl
+      INTEGER (KIND=C_INT)     , DIMENSION(*) :: data_j_index
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_get_domain_data_j_index
+    
+    
+    SUBROUTINE cxios_set_domain_data_jbegin(domain_hdl, data_jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: data_jbegin
+    END SUBROUTINE cxios_set_domain_data_jbegin
+    
+    SUBROUTINE cxios_get_domain_data_jbegin(domain_hdl, data_jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: data_jbegin
+    END SUBROUTINE cxios_get_domain_data_jbegin
+    
+    
+    SUBROUTINE cxios_set_domain_data_n_index(domain_hdl, data_n_index) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: data_n_index
+    END SUBROUTINE cxios_set_domain_data_n_index
+    
+    SUBROUTINE cxios_get_domain_data_n_index(domain_hdl, data_n_index) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: data_n_index
+    END SUBROUTINE cxios_get_domain_data_n_index
+    
+    
+    SUBROUTINE cxios_set_domain_data_ni(domain_hdl, data_ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: data_ni
+    END SUBROUTINE cxios_set_domain_data_ni
+    
+    SUBROUTINE cxios_get_domain_data_ni(domain_hdl, data_ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: data_ni
+    END SUBROUTINE cxios_get_domain_data_ni
+    
+    
+    SUBROUTINE cxios_set_domain_data_nj(domain_hdl, data_nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: data_nj
+    END SUBROUTINE cxios_set_domain_data_nj
+    
+    SUBROUTINE cxios_get_domain_data_nj(domain_hdl, data_nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: data_nj
+    END SUBROUTINE cxios_get_domain_data_nj
+    
+    
+    SUBROUTINE cxios_set_domain_domain_group_ref(domain_hdl, domain_group_ref, domain_group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: domain_group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: domain_group_ref_size
+    END SUBROUTINE cxios_set_domain_domain_group_ref
+    
+    SUBROUTINE cxios_get_domain_domain_group_ref(domain_hdl, domain_group_ref, domain_group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: domain_group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: domain_group_ref_size
+    END SUBROUTINE cxios_get_domain_domain_group_ref
+    
+    
+    SUBROUTINE cxios_set_domain_ibegin(domain_hdl, ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: ibegin
+    END SUBROUTINE cxios_set_domain_ibegin
+    
+    SUBROUTINE cxios_get_domain_ibegin(domain_hdl, ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: ibegin
+    END SUBROUTINE cxios_get_domain_ibegin
+    
+    
+    SUBROUTINE cxios_set_domain_iend(domain_hdl, iend) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: iend
+    END SUBROUTINE cxios_set_domain_iend
+    
+    SUBROUTINE cxios_get_domain_iend(domain_hdl, iend) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: iend
+    END SUBROUTINE cxios_get_domain_iend
+    
+    
+    SUBROUTINE cxios_set_domain_jbegin(domain_hdl, jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: jbegin
+    END SUBROUTINE cxios_set_domain_jbegin
+    
+    SUBROUTINE cxios_get_domain_jbegin(domain_hdl, jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: jbegin
+    END SUBROUTINE cxios_get_domain_jbegin
+    
+    
+    SUBROUTINE cxios_set_domain_jend(domain_hdl, jend) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: jend
+    END SUBROUTINE cxios_set_domain_jend
+    
+    SUBROUTINE cxios_get_domain_jend(domain_hdl, jend) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: jend
+    END SUBROUTINE cxios_get_domain_jend
+    
+    
+    SUBROUTINE cxios_set_domain_latvalue(domain_hdl, latvalue, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: latvalue
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_set_domain_latvalue
+    
+    SUBROUTINE cxios_get_domain_latvalue(domain_hdl, latvalue, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: latvalue
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_get_domain_latvalue
+    
+    
+    SUBROUTINE cxios_set_domain_long_name(domain_hdl, long_name, long_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: long_name
+      INTEGER  (kind = C_INT)     , VALUE        :: long_name_size
+    END SUBROUTINE cxios_set_domain_long_name
+    
+    SUBROUTINE cxios_get_domain_long_name(domain_hdl, long_name, long_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: long_name
+      INTEGER  (kind = C_INT)     , VALUE        :: long_name_size
+    END SUBROUTINE cxios_get_domain_long_name
+    
+    
+    SUBROUTINE cxios_set_domain_lonvalue(domain_hdl, lonvalue, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: lonvalue
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_set_domain_lonvalue
+    
+    SUBROUTINE cxios_get_domain_lonvalue(domain_hdl, lonvalue, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: lonvalue
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_get_domain_lonvalue
+    
+    
+    SUBROUTINE cxios_set_domain_mask(domain_hdl, mask, extent1, extent2) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask
+      INTEGER (kind = C_INT), VALUE  :: extent1
+      INTEGER (kind = C_INT), VALUE  :: extent2
+    END SUBROUTINE cxios_set_domain_mask
+    
+    SUBROUTINE cxios_get_domain_mask(domain_hdl, mask, extent1, extent2) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask
+      INTEGER (kind = C_INT), VALUE  :: extent1
+      INTEGER (kind = C_INT), VALUE  :: extent2
+    END SUBROUTINE cxios_get_domain_mask
+    
+    
+    SUBROUTINE cxios_set_domain_name(domain_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_set_domain_name
+    
+    SUBROUTINE cxios_get_domain_name(domain_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_get_domain_name
+    
+    
+    SUBROUTINE cxios_set_domain_ni(domain_hdl, ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: ni
+    END SUBROUTINE cxios_set_domain_ni
+    
+    SUBROUTINE cxios_get_domain_ni(domain_hdl, ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: ni
+    END SUBROUTINE cxios_get_domain_ni
+    
+    
+    SUBROUTINE cxios_set_domain_ni_glo(domain_hdl, ni_glo) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: ni_glo
+    END SUBROUTINE cxios_set_domain_ni_glo
+    
+    SUBROUTINE cxios_get_domain_ni_glo(domain_hdl, ni_glo) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: ni_glo
+    END SUBROUTINE cxios_get_domain_ni_glo
+    
+    
+    SUBROUTINE cxios_set_domain_nj(domain_hdl, nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: nj
+    END SUBROUTINE cxios_set_domain_nj
+    
+    SUBROUTINE cxios_get_domain_nj(domain_hdl, nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: nj
+    END SUBROUTINE cxios_get_domain_nj
+    
+    
+    SUBROUTINE cxios_set_domain_nj_glo(domain_hdl, nj_glo) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: nj_glo
+    END SUBROUTINE cxios_set_domain_nj_glo
+    
+    SUBROUTINE cxios_get_domain_nj_glo(domain_hdl, nj_glo) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: nj_glo
+    END SUBROUTINE cxios_get_domain_nj_glo
+    
+    
+    SUBROUTINE cxios_set_domain_standard_name(domain_hdl, standard_name, standard_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: standard_name
+      INTEGER  (kind = C_INT)     , VALUE        :: standard_name_size
+    END SUBROUTINE cxios_set_domain_standard_name
+    
+    SUBROUTINE cxios_get_domain_standard_name(domain_hdl, standard_name, standard_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: standard_name
+      INTEGER  (kind = C_INT)     , VALUE        :: standard_name_size
+    END SUBROUTINE cxios_get_domain_standard_name
+    
+    
+    SUBROUTINE cxios_set_domain_zoom_ibegin(domain_hdl, zoom_ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_ibegin
+    END SUBROUTINE cxios_set_domain_zoom_ibegin
+    
+    SUBROUTINE cxios_get_domain_zoom_ibegin(domain_hdl, zoom_ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: zoom_ibegin
+    END SUBROUTINE cxios_get_domain_zoom_ibegin
+    
+    
+    SUBROUTINE cxios_set_domain_zoom_ibegin_loc(domain_hdl, zoom_ibegin_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_ibegin_loc
+    END SUBROUTINE cxios_set_domain_zoom_ibegin_loc
+    
+    SUBROUTINE cxios_get_domain_zoom_ibegin_loc(domain_hdl, zoom_ibegin_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: zoom_ibegin_loc
+    END SUBROUTINE cxios_get_domain_zoom_ibegin_loc
+    
+    
+    SUBROUTINE cxios_set_domain_zoom_jbegin(domain_hdl, zoom_jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_jbegin
+    END SUBROUTINE cxios_set_domain_zoom_jbegin
+    
+    SUBROUTINE cxios_get_domain_zoom_jbegin(domain_hdl, zoom_jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: zoom_jbegin
+    END SUBROUTINE cxios_get_domain_zoom_jbegin
+    
+    
+    SUBROUTINE cxios_set_domain_zoom_jbegin_loc(domain_hdl, zoom_jbegin_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_jbegin_loc
+    END SUBROUTINE cxios_set_domain_zoom_jbegin_loc
+    
+    SUBROUTINE cxios_get_domain_zoom_jbegin_loc(domain_hdl, zoom_jbegin_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: zoom_jbegin_loc
+    END SUBROUTINE cxios_get_domain_zoom_jbegin_loc
+    
+    
+    SUBROUTINE cxios_set_domain_zoom_ni(domain_hdl, zoom_ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_ni
+    END SUBROUTINE cxios_set_domain_zoom_ni
+    
+    SUBROUTINE cxios_get_domain_zoom_ni(domain_hdl, zoom_ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: zoom_ni
+    END SUBROUTINE cxios_get_domain_zoom_ni
+    
+    
+    SUBROUTINE cxios_set_domain_zoom_ni_loc(domain_hdl, zoom_ni_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_ni_loc
+    END SUBROUTINE cxios_set_domain_zoom_ni_loc
+    
+    SUBROUTINE cxios_get_domain_zoom_ni_loc(domain_hdl, zoom_ni_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: zoom_ni_loc
+    END SUBROUTINE cxios_get_domain_zoom_ni_loc
+    
+    
+    SUBROUTINE cxios_set_domain_zoom_nj(domain_hdl, zoom_nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_nj
+    END SUBROUTINE cxios_set_domain_zoom_nj
+    
+    SUBROUTINE cxios_get_domain_zoom_nj(domain_hdl, zoom_nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: zoom_nj
+    END SUBROUTINE cxios_get_domain_zoom_nj
+    
+    
+    SUBROUTINE cxios_set_domain_zoom_nj_loc(domain_hdl, zoom_nj_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_nj_loc
+    END SUBROUTINE cxios_set_domain_zoom_nj_loc
+    
+    SUBROUTINE cxios_get_domain_zoom_nj_loc(domain_hdl, zoom_nj_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      INTEGER (KIND=C_INT)             :: zoom_nj_loc
+    END SUBROUTINE cxios_get_domain_zoom_nj_loc
+    
+    
+    END INTERFACE
+  
+END MODULE domain_interface_attr
Index: /XIOS/trunk/src/fortran_attr_interface/domaingroup_interface_attr.f90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/domaingroup_interface_attr.f90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/domaingroup_interface_attr.f90	(revision 314)
@@ -0,0 +1,451 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+
+MODULE domaingroup_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  
+  INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99
+    
+    
+    SUBROUTINE cxios_set_domaingroup_data_dim(domaingroup_hdl, data_dim) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: data_dim
+    END SUBROUTINE cxios_set_domaingroup_data_dim
+    
+    SUBROUTINE cxios_get_domaingroup_data_dim(domaingroup_hdl, data_dim) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: data_dim
+    END SUBROUTINE cxios_get_domaingroup_data_dim
+    
+    
+    SUBROUTINE cxios_set_domaingroup_data_i_index(domaingroup_hdl, data_i_index, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl
+      INTEGER (KIND=C_INT)     , DIMENSION(*) :: data_i_index
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_set_domaingroup_data_i_index
+    
+    SUBROUTINE cxios_get_domaingroup_data_i_index(domaingroup_hdl, data_i_index, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl
+      INTEGER (KIND=C_INT)     , DIMENSION(*) :: data_i_index
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_get_domaingroup_data_i_index
+    
+    
+    SUBROUTINE cxios_set_domaingroup_data_ibegin(domaingroup_hdl, data_ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: data_ibegin
+    END SUBROUTINE cxios_set_domaingroup_data_ibegin
+    
+    SUBROUTINE cxios_get_domaingroup_data_ibegin(domaingroup_hdl, data_ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: data_ibegin
+    END SUBROUTINE cxios_get_domaingroup_data_ibegin
+    
+    
+    SUBROUTINE cxios_set_domaingroup_data_j_index(domaingroup_hdl, data_j_index, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl
+      INTEGER (KIND=C_INT)     , DIMENSION(*) :: data_j_index
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_set_domaingroup_data_j_index
+    
+    SUBROUTINE cxios_get_domaingroup_data_j_index(domaingroup_hdl, data_j_index, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl
+      INTEGER (KIND=C_INT)     , DIMENSION(*) :: data_j_index
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_get_domaingroup_data_j_index
+    
+    
+    SUBROUTINE cxios_set_domaingroup_data_jbegin(domaingroup_hdl, data_jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: data_jbegin
+    END SUBROUTINE cxios_set_domaingroup_data_jbegin
+    
+    SUBROUTINE cxios_get_domaingroup_data_jbegin(domaingroup_hdl, data_jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: data_jbegin
+    END SUBROUTINE cxios_get_domaingroup_data_jbegin
+    
+    
+    SUBROUTINE cxios_set_domaingroup_data_n_index(domaingroup_hdl, data_n_index) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: data_n_index
+    END SUBROUTINE cxios_set_domaingroup_data_n_index
+    
+    SUBROUTINE cxios_get_domaingroup_data_n_index(domaingroup_hdl, data_n_index) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: data_n_index
+    END SUBROUTINE cxios_get_domaingroup_data_n_index
+    
+    
+    SUBROUTINE cxios_set_domaingroup_data_ni(domaingroup_hdl, data_ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: data_ni
+    END SUBROUTINE cxios_set_domaingroup_data_ni
+    
+    SUBROUTINE cxios_get_domaingroup_data_ni(domaingroup_hdl, data_ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: data_ni
+    END SUBROUTINE cxios_get_domaingroup_data_ni
+    
+    
+    SUBROUTINE cxios_set_domaingroup_data_nj(domaingroup_hdl, data_nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: data_nj
+    END SUBROUTINE cxios_set_domaingroup_data_nj
+    
+    SUBROUTINE cxios_get_domaingroup_data_nj(domaingroup_hdl, data_nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: data_nj
+    END SUBROUTINE cxios_get_domaingroup_data_nj
+    
+    
+    SUBROUTINE cxios_set_domaingroup_domain_group_ref(domaingroup_hdl, domain_group_ref, domain_group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: domain_group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: domain_group_ref_size
+    END SUBROUTINE cxios_set_domaingroup_domain_group_ref
+    
+    SUBROUTINE cxios_get_domaingroup_domain_group_ref(domaingroup_hdl, domain_group_ref, domain_group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: domain_group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: domain_group_ref_size
+    END SUBROUTINE cxios_get_domaingroup_domain_group_ref
+    
+    
+    SUBROUTINE cxios_set_domaingroup_group_ref(domaingroup_hdl, group_ref, group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: group_ref_size
+    END SUBROUTINE cxios_set_domaingroup_group_ref
+    
+    SUBROUTINE cxios_get_domaingroup_group_ref(domaingroup_hdl, group_ref, group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: group_ref_size
+    END SUBROUTINE cxios_get_domaingroup_group_ref
+    
+    
+    SUBROUTINE cxios_set_domaingroup_ibegin(domaingroup_hdl, ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: ibegin
+    END SUBROUTINE cxios_set_domaingroup_ibegin
+    
+    SUBROUTINE cxios_get_domaingroup_ibegin(domaingroup_hdl, ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: ibegin
+    END SUBROUTINE cxios_get_domaingroup_ibegin
+    
+    
+    SUBROUTINE cxios_set_domaingroup_iend(domaingroup_hdl, iend) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: iend
+    END SUBROUTINE cxios_set_domaingroup_iend
+    
+    SUBROUTINE cxios_get_domaingroup_iend(domaingroup_hdl, iend) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: iend
+    END SUBROUTINE cxios_get_domaingroup_iend
+    
+    
+    SUBROUTINE cxios_set_domaingroup_jbegin(domaingroup_hdl, jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: jbegin
+    END SUBROUTINE cxios_set_domaingroup_jbegin
+    
+    SUBROUTINE cxios_get_domaingroup_jbegin(domaingroup_hdl, jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: jbegin
+    END SUBROUTINE cxios_get_domaingroup_jbegin
+    
+    
+    SUBROUTINE cxios_set_domaingroup_jend(domaingroup_hdl, jend) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: jend
+    END SUBROUTINE cxios_set_domaingroup_jend
+    
+    SUBROUTINE cxios_get_domaingroup_jend(domaingroup_hdl, jend) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: jend
+    END SUBROUTINE cxios_get_domaingroup_jend
+    
+    
+    SUBROUTINE cxios_set_domaingroup_latvalue(domaingroup_hdl, latvalue, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: latvalue
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_set_domaingroup_latvalue
+    
+    SUBROUTINE cxios_get_domaingroup_latvalue(domaingroup_hdl, latvalue, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: latvalue
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_get_domaingroup_latvalue
+    
+    
+    SUBROUTINE cxios_set_domaingroup_long_name(domaingroup_hdl, long_name, long_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: long_name
+      INTEGER  (kind = C_INT)     , VALUE        :: long_name_size
+    END SUBROUTINE cxios_set_domaingroup_long_name
+    
+    SUBROUTINE cxios_get_domaingroup_long_name(domaingroup_hdl, long_name, long_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: long_name
+      INTEGER  (kind = C_INT)     , VALUE        :: long_name_size
+    END SUBROUTINE cxios_get_domaingroup_long_name
+    
+    
+    SUBROUTINE cxios_set_domaingroup_lonvalue(domaingroup_hdl, lonvalue, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: lonvalue
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_set_domaingroup_lonvalue
+    
+    SUBROUTINE cxios_get_domaingroup_lonvalue(domaingroup_hdl, lonvalue, extent1) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: lonvalue
+      INTEGER (kind = C_INT), VALUE  :: extent1
+    END SUBROUTINE cxios_get_domaingroup_lonvalue
+    
+    
+    SUBROUTINE cxios_set_domaingroup_mask(domaingroup_hdl, mask, extent1, extent2) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask
+      INTEGER (kind = C_INT), VALUE  :: extent1
+      INTEGER (kind = C_INT), VALUE  :: extent2
+    END SUBROUTINE cxios_set_domaingroup_mask
+    
+    SUBROUTINE cxios_get_domaingroup_mask(domaingroup_hdl, mask, extent1, extent2) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask
+      INTEGER (kind = C_INT), VALUE  :: extent1
+      INTEGER (kind = C_INT), VALUE  :: extent2
+    END SUBROUTINE cxios_get_domaingroup_mask
+    
+    
+    SUBROUTINE cxios_set_domaingroup_name(domaingroup_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_set_domaingroup_name
+    
+    SUBROUTINE cxios_get_domaingroup_name(domaingroup_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_get_domaingroup_name
+    
+    
+    SUBROUTINE cxios_set_domaingroup_ni(domaingroup_hdl, ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: ni
+    END SUBROUTINE cxios_set_domaingroup_ni
+    
+    SUBROUTINE cxios_get_domaingroup_ni(domaingroup_hdl, ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: ni
+    END SUBROUTINE cxios_get_domaingroup_ni
+    
+    
+    SUBROUTINE cxios_set_domaingroup_ni_glo(domaingroup_hdl, ni_glo) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: ni_glo
+    END SUBROUTINE cxios_set_domaingroup_ni_glo
+    
+    SUBROUTINE cxios_get_domaingroup_ni_glo(domaingroup_hdl, ni_glo) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: ni_glo
+    END SUBROUTINE cxios_get_domaingroup_ni_glo
+    
+    
+    SUBROUTINE cxios_set_domaingroup_nj(domaingroup_hdl, nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: nj
+    END SUBROUTINE cxios_set_domaingroup_nj
+    
+    SUBROUTINE cxios_get_domaingroup_nj(domaingroup_hdl, nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: nj
+    END SUBROUTINE cxios_get_domaingroup_nj
+    
+    
+    SUBROUTINE cxios_set_domaingroup_nj_glo(domaingroup_hdl, nj_glo) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: nj_glo
+    END SUBROUTINE cxios_set_domaingroup_nj_glo
+    
+    SUBROUTINE cxios_get_domaingroup_nj_glo(domaingroup_hdl, nj_glo) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: nj_glo
+    END SUBROUTINE cxios_get_domaingroup_nj_glo
+    
+    
+    SUBROUTINE cxios_set_domaingroup_standard_name(domaingroup_hdl, standard_name, standard_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: standard_name
+      INTEGER  (kind = C_INT)     , VALUE        :: standard_name_size
+    END SUBROUTINE cxios_set_domaingroup_standard_name
+    
+    SUBROUTINE cxios_get_domaingroup_standard_name(domaingroup_hdl, standard_name, standard_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: standard_name
+      INTEGER  (kind = C_INT)     , VALUE        :: standard_name_size
+    END SUBROUTINE cxios_get_domaingroup_standard_name
+    
+    
+    SUBROUTINE cxios_set_domaingroup_zoom_ibegin(domaingroup_hdl, zoom_ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_ibegin
+    END SUBROUTINE cxios_set_domaingroup_zoom_ibegin
+    
+    SUBROUTINE cxios_get_domaingroup_zoom_ibegin(domaingroup_hdl, zoom_ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: zoom_ibegin
+    END SUBROUTINE cxios_get_domaingroup_zoom_ibegin
+    
+    
+    SUBROUTINE cxios_set_domaingroup_zoom_ibegin_loc(domaingroup_hdl, zoom_ibegin_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_ibegin_loc
+    END SUBROUTINE cxios_set_domaingroup_zoom_ibegin_loc
+    
+    SUBROUTINE cxios_get_domaingroup_zoom_ibegin_loc(domaingroup_hdl, zoom_ibegin_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: zoom_ibegin_loc
+    END SUBROUTINE cxios_get_domaingroup_zoom_ibegin_loc
+    
+    
+    SUBROUTINE cxios_set_domaingroup_zoom_jbegin(domaingroup_hdl, zoom_jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_jbegin
+    END SUBROUTINE cxios_set_domaingroup_zoom_jbegin
+    
+    SUBROUTINE cxios_get_domaingroup_zoom_jbegin(domaingroup_hdl, zoom_jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: zoom_jbegin
+    END SUBROUTINE cxios_get_domaingroup_zoom_jbegin
+    
+    
+    SUBROUTINE cxios_set_domaingroup_zoom_jbegin_loc(domaingroup_hdl, zoom_jbegin_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_jbegin_loc
+    END SUBROUTINE cxios_set_domaingroup_zoom_jbegin_loc
+    
+    SUBROUTINE cxios_get_domaingroup_zoom_jbegin_loc(domaingroup_hdl, zoom_jbegin_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: zoom_jbegin_loc
+    END SUBROUTINE cxios_get_domaingroup_zoom_jbegin_loc
+    
+    
+    SUBROUTINE cxios_set_domaingroup_zoom_ni(domaingroup_hdl, zoom_ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_ni
+    END SUBROUTINE cxios_set_domaingroup_zoom_ni
+    
+    SUBROUTINE cxios_get_domaingroup_zoom_ni(domaingroup_hdl, zoom_ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: zoom_ni
+    END SUBROUTINE cxios_get_domaingroup_zoom_ni
+    
+    
+    SUBROUTINE cxios_set_domaingroup_zoom_ni_loc(domaingroup_hdl, zoom_ni_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_ni_loc
+    END SUBROUTINE cxios_set_domaingroup_zoom_ni_loc
+    
+    SUBROUTINE cxios_get_domaingroup_zoom_ni_loc(domaingroup_hdl, zoom_ni_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: zoom_ni_loc
+    END SUBROUTINE cxios_get_domaingroup_zoom_ni_loc
+    
+    
+    SUBROUTINE cxios_set_domaingroup_zoom_nj(domaingroup_hdl, zoom_nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_nj
+    END SUBROUTINE cxios_set_domaingroup_zoom_nj
+    
+    SUBROUTINE cxios_get_domaingroup_zoom_nj(domaingroup_hdl, zoom_nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: zoom_nj
+    END SUBROUTINE cxios_get_domaingroup_zoom_nj
+    
+    
+    SUBROUTINE cxios_set_domaingroup_zoom_nj_loc(domaingroup_hdl, zoom_nj_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_nj_loc
+    END SUBROUTINE cxios_set_domaingroup_zoom_nj_loc
+    
+    SUBROUTINE cxios_get_domaingroup_zoom_nj_loc(domaingroup_hdl, zoom_nj_loc) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      INTEGER (KIND=C_INT)             :: zoom_nj_loc
+    END SUBROUTINE cxios_get_domaingroup_zoom_nj_loc
+    
+    
+    END INTERFACE
+  
+END MODULE domaingroup_interface_attr
Index: /XIOS/trunk/src/fortran_attr_interface/field_interface_attr.f90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/field_interface_attr.f90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/field_interface_attr.f90	(revision 314)
@@ -0,0 +1,230 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+
+MODULE field_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  
+  INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99
+    
+    
+    SUBROUTINE cxios_set_field_axis_ref(field_hdl, axis_ref, axis_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_ref_size
+    END SUBROUTINE cxios_set_field_axis_ref
+    
+    SUBROUTINE cxios_get_field_axis_ref(field_hdl, axis_ref, axis_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_ref_size
+    END SUBROUTINE cxios_get_field_axis_ref
+    
+    
+    SUBROUTINE cxios_set_field_default_value(field_hdl, default_value) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      REAL (KIND=C_DOUBLE)      , VALUE :: default_value
+    END SUBROUTINE cxios_set_field_default_value
+    
+    SUBROUTINE cxios_get_field_default_value(field_hdl, default_value) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      REAL (KIND=C_DOUBLE)             :: default_value
+    END SUBROUTINE cxios_get_field_default_value
+    
+    
+    SUBROUTINE cxios_set_field_domain_ref(field_hdl, domain_ref, domain_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: domain_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: domain_ref_size
+    END SUBROUTINE cxios_set_field_domain_ref
+    
+    SUBROUTINE cxios_get_field_domain_ref(field_hdl, domain_ref, domain_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: domain_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: domain_ref_size
+    END SUBROUTINE cxios_get_field_domain_ref
+    
+    
+    SUBROUTINE cxios_set_field_enabled(field_hdl, enabled) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      LOGICAL (KIND=C_BOOL)      , VALUE :: enabled
+    END SUBROUTINE cxios_set_field_enabled
+    
+    SUBROUTINE cxios_get_field_enabled(field_hdl, enabled) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      LOGICAL (KIND=C_BOOL)             :: enabled
+    END SUBROUTINE cxios_get_field_enabled
+    
+    
+    SUBROUTINE cxios_set_field_field_ref(field_hdl, field_ref, field_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: field_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: field_ref_size
+    END SUBROUTINE cxios_set_field_field_ref
+    
+    SUBROUTINE cxios_get_field_field_ref(field_hdl, field_ref, field_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: field_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: field_ref_size
+    END SUBROUTINE cxios_get_field_field_ref
+    
+    
+    SUBROUTINE cxios_set_field_freq_offset(field_hdl, freq_offset, freq_offset_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: freq_offset
+      INTEGER  (kind = C_INT)     , VALUE        :: freq_offset_size
+    END SUBROUTINE cxios_set_field_freq_offset
+    
+    SUBROUTINE cxios_get_field_freq_offset(field_hdl, freq_offset, freq_offset_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: freq_offset
+      INTEGER  (kind = C_INT)     , VALUE        :: freq_offset_size
+    END SUBROUTINE cxios_get_field_freq_offset
+    
+    
+    SUBROUTINE cxios_set_field_freq_op(field_hdl, freq_op, freq_op_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: freq_op
+      INTEGER  (kind = C_INT)     , VALUE        :: freq_op_size
+    END SUBROUTINE cxios_set_field_freq_op
+    
+    SUBROUTINE cxios_get_field_freq_op(field_hdl, freq_op, freq_op_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: freq_op
+      INTEGER  (kind = C_INT)     , VALUE        :: freq_op_size
+    END SUBROUTINE cxios_get_field_freq_op
+    
+    
+    SUBROUTINE cxios_set_field_grid_ref(field_hdl, grid_ref, grid_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: grid_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: grid_ref_size
+    END SUBROUTINE cxios_set_field_grid_ref
+    
+    SUBROUTINE cxios_get_field_grid_ref(field_hdl, grid_ref, grid_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: grid_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: grid_ref_size
+    END SUBROUTINE cxios_get_field_grid_ref
+    
+    
+    SUBROUTINE cxios_set_field_level(field_hdl, level) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: level
+    END SUBROUTINE cxios_set_field_level
+    
+    SUBROUTINE cxios_get_field_level(field_hdl, level) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      INTEGER (KIND=C_INT)             :: level
+    END SUBROUTINE cxios_get_field_level
+    
+    
+    SUBROUTINE cxios_set_field_long_name(field_hdl, long_name, long_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: long_name
+      INTEGER  (kind = C_INT)     , VALUE        :: long_name_size
+    END SUBROUTINE cxios_set_field_long_name
+    
+    SUBROUTINE cxios_get_field_long_name(field_hdl, long_name, long_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: long_name
+      INTEGER  (kind = C_INT)     , VALUE        :: long_name_size
+    END SUBROUTINE cxios_get_field_long_name
+    
+    
+    SUBROUTINE cxios_set_field_name(field_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_set_field_name
+    
+    SUBROUTINE cxios_get_field_name(field_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_get_field_name
+    
+    
+    SUBROUTINE cxios_set_field_operation(field_hdl, operation, operation_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: operation
+      INTEGER  (kind = C_INT)     , VALUE        :: operation_size
+    END SUBROUTINE cxios_set_field_operation
+    
+    SUBROUTINE cxios_get_field_operation(field_hdl, operation, operation_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: operation
+      INTEGER  (kind = C_INT)     , VALUE        :: operation_size
+    END SUBROUTINE cxios_get_field_operation
+    
+    
+    SUBROUTINE cxios_set_field_prec(field_hdl, prec) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: prec
+    END SUBROUTINE cxios_set_field_prec
+    
+    SUBROUTINE cxios_get_field_prec(field_hdl, prec) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      INTEGER (KIND=C_INT)             :: prec
+    END SUBROUTINE cxios_get_field_prec
+    
+    
+    SUBROUTINE cxios_set_field_standard_name(field_hdl, standard_name, standard_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: standard_name
+      INTEGER  (kind = C_INT)     , VALUE        :: standard_name_size
+    END SUBROUTINE cxios_set_field_standard_name
+    
+    SUBROUTINE cxios_get_field_standard_name(field_hdl, standard_name, standard_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: standard_name
+      INTEGER  (kind = C_INT)     , VALUE        :: standard_name_size
+    END SUBROUTINE cxios_get_field_standard_name
+    
+    
+    SUBROUTINE cxios_set_field_unit(field_hdl, unit, unit_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: unit
+      INTEGER  (kind = C_INT)     , VALUE        :: unit_size
+    END SUBROUTINE cxios_set_field_unit
+    
+    SUBROUTINE cxios_get_field_unit(field_hdl, unit, unit_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: unit
+      INTEGER  (kind = C_INT)     , VALUE        :: unit_size
+    END SUBROUTINE cxios_get_field_unit
+    
+    
+    END INTERFACE
+  
+END MODULE field_interface_attr
Index: /XIOS/trunk/src/fortran_attr_interface/fieldgroup_interface_attr.f90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/fieldgroup_interface_attr.f90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/fieldgroup_interface_attr.f90	(revision 314)
@@ -0,0 +1,245 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+
+MODULE fieldgroup_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  
+  INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_axis_ref(fieldgroup_hdl, axis_ref, axis_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_ref_size
+    END SUBROUTINE cxios_set_fieldgroup_axis_ref
+    
+    SUBROUTINE cxios_get_fieldgroup_axis_ref(fieldgroup_hdl, axis_ref, axis_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_ref_size
+    END SUBROUTINE cxios_get_fieldgroup_axis_ref
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_default_value(fieldgroup_hdl, default_value) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      REAL (KIND=C_DOUBLE)      , VALUE :: default_value
+    END SUBROUTINE cxios_set_fieldgroup_default_value
+    
+    SUBROUTINE cxios_get_fieldgroup_default_value(fieldgroup_hdl, default_value) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      REAL (KIND=C_DOUBLE)             :: default_value
+    END SUBROUTINE cxios_get_fieldgroup_default_value
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_domain_ref(fieldgroup_hdl, domain_ref, domain_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: domain_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: domain_ref_size
+    END SUBROUTINE cxios_set_fieldgroup_domain_ref
+    
+    SUBROUTINE cxios_get_fieldgroup_domain_ref(fieldgroup_hdl, domain_ref, domain_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: domain_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: domain_ref_size
+    END SUBROUTINE cxios_get_fieldgroup_domain_ref
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_enabled(fieldgroup_hdl, enabled) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      LOGICAL (KIND=C_BOOL)      , VALUE :: enabled
+    END SUBROUTINE cxios_set_fieldgroup_enabled
+    
+    SUBROUTINE cxios_get_fieldgroup_enabled(fieldgroup_hdl, enabled) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      LOGICAL (KIND=C_BOOL)             :: enabled
+    END SUBROUTINE cxios_get_fieldgroup_enabled
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_field_ref(fieldgroup_hdl, field_ref, field_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: field_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: field_ref_size
+    END SUBROUTINE cxios_set_fieldgroup_field_ref
+    
+    SUBROUTINE cxios_get_fieldgroup_field_ref(fieldgroup_hdl, field_ref, field_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: field_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: field_ref_size
+    END SUBROUTINE cxios_get_fieldgroup_field_ref
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_freq_offset(fieldgroup_hdl, freq_offset, freq_offset_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: freq_offset
+      INTEGER  (kind = C_INT)     , VALUE        :: freq_offset_size
+    END SUBROUTINE cxios_set_fieldgroup_freq_offset
+    
+    SUBROUTINE cxios_get_fieldgroup_freq_offset(fieldgroup_hdl, freq_offset, freq_offset_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: freq_offset
+      INTEGER  (kind = C_INT)     , VALUE        :: freq_offset_size
+    END SUBROUTINE cxios_get_fieldgroup_freq_offset
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_freq_op(fieldgroup_hdl, freq_op, freq_op_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: freq_op
+      INTEGER  (kind = C_INT)     , VALUE        :: freq_op_size
+    END SUBROUTINE cxios_set_fieldgroup_freq_op
+    
+    SUBROUTINE cxios_get_fieldgroup_freq_op(fieldgroup_hdl, freq_op, freq_op_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: freq_op
+      INTEGER  (kind = C_INT)     , VALUE        :: freq_op_size
+    END SUBROUTINE cxios_get_fieldgroup_freq_op
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_grid_ref(fieldgroup_hdl, grid_ref, grid_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: grid_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: grid_ref_size
+    END SUBROUTINE cxios_set_fieldgroup_grid_ref
+    
+    SUBROUTINE cxios_get_fieldgroup_grid_ref(fieldgroup_hdl, grid_ref, grid_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: grid_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: grid_ref_size
+    END SUBROUTINE cxios_get_fieldgroup_grid_ref
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_group_ref(fieldgroup_hdl, group_ref, group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: group_ref_size
+    END SUBROUTINE cxios_set_fieldgroup_group_ref
+    
+    SUBROUTINE cxios_get_fieldgroup_group_ref(fieldgroup_hdl, group_ref, group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: group_ref_size
+    END SUBROUTINE cxios_get_fieldgroup_group_ref
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_level(fieldgroup_hdl, level) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: level
+    END SUBROUTINE cxios_set_fieldgroup_level
+    
+    SUBROUTINE cxios_get_fieldgroup_level(fieldgroup_hdl, level) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      INTEGER (KIND=C_INT)             :: level
+    END SUBROUTINE cxios_get_fieldgroup_level
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_long_name(fieldgroup_hdl, long_name, long_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: long_name
+      INTEGER  (kind = C_INT)     , VALUE        :: long_name_size
+    END SUBROUTINE cxios_set_fieldgroup_long_name
+    
+    SUBROUTINE cxios_get_fieldgroup_long_name(fieldgroup_hdl, long_name, long_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: long_name
+      INTEGER  (kind = C_INT)     , VALUE        :: long_name_size
+    END SUBROUTINE cxios_get_fieldgroup_long_name
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_name(fieldgroup_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_set_fieldgroup_name
+    
+    SUBROUTINE cxios_get_fieldgroup_name(fieldgroup_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_get_fieldgroup_name
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_operation(fieldgroup_hdl, operation, operation_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: operation
+      INTEGER  (kind = C_INT)     , VALUE        :: operation_size
+    END SUBROUTINE cxios_set_fieldgroup_operation
+    
+    SUBROUTINE cxios_get_fieldgroup_operation(fieldgroup_hdl, operation, operation_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: operation
+      INTEGER  (kind = C_INT)     , VALUE        :: operation_size
+    END SUBROUTINE cxios_get_fieldgroup_operation
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_prec(fieldgroup_hdl, prec) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: prec
+    END SUBROUTINE cxios_set_fieldgroup_prec
+    
+    SUBROUTINE cxios_get_fieldgroup_prec(fieldgroup_hdl, prec) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      INTEGER (KIND=C_INT)             :: prec
+    END SUBROUTINE cxios_get_fieldgroup_prec
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_standard_name(fieldgroup_hdl, standard_name, standard_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: standard_name
+      INTEGER  (kind = C_INT)     , VALUE        :: standard_name_size
+    END SUBROUTINE cxios_set_fieldgroup_standard_name
+    
+    SUBROUTINE cxios_get_fieldgroup_standard_name(fieldgroup_hdl, standard_name, standard_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: standard_name
+      INTEGER  (kind = C_INT)     , VALUE        :: standard_name_size
+    END SUBROUTINE cxios_get_fieldgroup_standard_name
+    
+    
+    SUBROUTINE cxios_set_fieldgroup_unit(fieldgroup_hdl, unit, unit_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: unit
+      INTEGER  (kind = C_INT)     , VALUE        :: unit_size
+    END SUBROUTINE cxios_set_fieldgroup_unit
+    
+    SUBROUTINE cxios_get_fieldgroup_unit(fieldgroup_hdl, unit, unit_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: unit
+      INTEGER  (kind = C_INT)     , VALUE        :: unit_size
+    END SUBROUTINE cxios_get_fieldgroup_unit
+    
+    
+    END INTERFACE
+  
+END MODULE fieldgroup_interface_attr
Index: /XIOS/trunk/src/fortran_attr_interface/file_interface_attr.f90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/file_interface_attr.f90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/file_interface_attr.f90	(revision 314)
@@ -0,0 +1,114 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+
+MODULE file_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  
+  INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99
+    
+    
+    SUBROUTINE cxios_set_file_description(file_hdl, description, description_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: description
+      INTEGER  (kind = C_INT)     , VALUE        :: description_size
+    END SUBROUTINE cxios_set_file_description
+    
+    SUBROUTINE cxios_get_file_description(file_hdl, description, description_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: description
+      INTEGER  (kind = C_INT)     , VALUE        :: description_size
+    END SUBROUTINE cxios_get_file_description
+    
+    
+    SUBROUTINE cxios_set_file_enabled(file_hdl, enabled) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      LOGICAL (KIND=C_BOOL)      , VALUE :: enabled
+    END SUBROUTINE cxios_set_file_enabled
+    
+    SUBROUTINE cxios_get_file_enabled(file_hdl, enabled) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      LOGICAL (KIND=C_BOOL)             :: enabled
+    END SUBROUTINE cxios_get_file_enabled
+    
+    
+    SUBROUTINE cxios_set_file_name(file_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_set_file_name
+    
+    SUBROUTINE cxios_get_file_name(file_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_get_file_name
+    
+    
+    SUBROUTINE cxios_set_file_name_suffix(file_hdl, name_suffix, name_suffix_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name_suffix
+      INTEGER  (kind = C_INT)     , VALUE        :: name_suffix_size
+    END SUBROUTINE cxios_set_file_name_suffix
+    
+    SUBROUTINE cxios_get_file_name_suffix(file_hdl, name_suffix, name_suffix_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name_suffix
+      INTEGER  (kind = C_INT)     , VALUE        :: name_suffix_size
+    END SUBROUTINE cxios_get_file_name_suffix
+    
+    
+    SUBROUTINE cxios_set_file_output_freq(file_hdl, output_freq, output_freq_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: output_freq
+      INTEGER  (kind = C_INT)     , VALUE        :: output_freq_size
+    END SUBROUTINE cxios_set_file_output_freq
+    
+    SUBROUTINE cxios_get_file_output_freq(file_hdl, output_freq, output_freq_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: output_freq
+      INTEGER  (kind = C_INT)     , VALUE        :: output_freq_size
+    END SUBROUTINE cxios_get_file_output_freq
+    
+    
+    SUBROUTINE cxios_set_file_output_level(file_hdl, output_level) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: output_level
+    END SUBROUTINE cxios_set_file_output_level
+    
+    SUBROUTINE cxios_get_file_output_level(file_hdl, output_level) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      INTEGER (KIND=C_INT)             :: output_level
+    END SUBROUTINE cxios_get_file_output_level
+    
+    
+    SUBROUTINE cxios_set_file_type(file_hdl, type, type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: type
+      INTEGER  (kind = C_INT)     , VALUE        :: type_size
+    END SUBROUTINE cxios_set_file_type
+    
+    SUBROUTINE cxios_get_file_type(file_hdl, type, type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: type
+      INTEGER  (kind = C_INT)     , VALUE        :: type_size
+    END SUBROUTINE cxios_get_file_type
+    
+    
+    END INTERFACE
+  
+END MODULE file_interface_attr
Index: /XIOS/trunk/src/fortran_attr_interface/filegroup_interface_attr.f90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/filegroup_interface_attr.f90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/filegroup_interface_attr.f90	(revision 314)
@@ -0,0 +1,129 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+
+MODULE filegroup_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  
+  INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99
+    
+    
+    SUBROUTINE cxios_set_filegroup_description(filegroup_hdl, description, description_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: description
+      INTEGER  (kind = C_INT)     , VALUE        :: description_size
+    END SUBROUTINE cxios_set_filegroup_description
+    
+    SUBROUTINE cxios_get_filegroup_description(filegroup_hdl, description, description_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: description
+      INTEGER  (kind = C_INT)     , VALUE        :: description_size
+    END SUBROUTINE cxios_get_filegroup_description
+    
+    
+    SUBROUTINE cxios_set_filegroup_enabled(filegroup_hdl, enabled) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      LOGICAL (KIND=C_BOOL)      , VALUE :: enabled
+    END SUBROUTINE cxios_set_filegroup_enabled
+    
+    SUBROUTINE cxios_get_filegroup_enabled(filegroup_hdl, enabled) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      LOGICAL (KIND=C_BOOL)             :: enabled
+    END SUBROUTINE cxios_get_filegroup_enabled
+    
+    
+    SUBROUTINE cxios_set_filegroup_group_ref(filegroup_hdl, group_ref, group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: group_ref_size
+    END SUBROUTINE cxios_set_filegroup_group_ref
+    
+    SUBROUTINE cxios_get_filegroup_group_ref(filegroup_hdl, group_ref, group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: group_ref_size
+    END SUBROUTINE cxios_get_filegroup_group_ref
+    
+    
+    SUBROUTINE cxios_set_filegroup_name(filegroup_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_set_filegroup_name
+    
+    SUBROUTINE cxios_get_filegroup_name(filegroup_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_get_filegroup_name
+    
+    
+    SUBROUTINE cxios_set_filegroup_name_suffix(filegroup_hdl, name_suffix, name_suffix_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name_suffix
+      INTEGER  (kind = C_INT)     , VALUE        :: name_suffix_size
+    END SUBROUTINE cxios_set_filegroup_name_suffix
+    
+    SUBROUTINE cxios_get_filegroup_name_suffix(filegroup_hdl, name_suffix, name_suffix_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name_suffix
+      INTEGER  (kind = C_INT)     , VALUE        :: name_suffix_size
+    END SUBROUTINE cxios_get_filegroup_name_suffix
+    
+    
+    SUBROUTINE cxios_set_filegroup_output_freq(filegroup_hdl, output_freq, output_freq_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: output_freq
+      INTEGER  (kind = C_INT)     , VALUE        :: output_freq_size
+    END SUBROUTINE cxios_set_filegroup_output_freq
+    
+    SUBROUTINE cxios_get_filegroup_output_freq(filegroup_hdl, output_freq, output_freq_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: output_freq
+      INTEGER  (kind = C_INT)     , VALUE        :: output_freq_size
+    END SUBROUTINE cxios_get_filegroup_output_freq
+    
+    
+    SUBROUTINE cxios_set_filegroup_output_level(filegroup_hdl, output_level) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: output_level
+    END SUBROUTINE cxios_set_filegroup_output_level
+    
+    SUBROUTINE cxios_get_filegroup_output_level(filegroup_hdl, output_level) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      INTEGER (KIND=C_INT)             :: output_level
+    END SUBROUTINE cxios_get_filegroup_output_level
+    
+    
+    SUBROUTINE cxios_set_filegroup_type(filegroup_hdl, type, type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: type
+      INTEGER  (kind = C_INT)     , VALUE        :: type_size
+    END SUBROUTINE cxios_set_filegroup_type
+    
+    SUBROUTINE cxios_get_filegroup_type(filegroup_hdl, type, type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: type
+      INTEGER  (kind = C_INT)     , VALUE        :: type_size
+    END SUBROUTINE cxios_get_filegroup_type
+    
+    
+    END INTERFACE
+  
+END MODULE filegroup_interface_attr
Index: /XIOS/trunk/src/fortran_attr_interface/grid_interface_attr.f90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/grid_interface_attr.f90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/grid_interface_attr.f90	(revision 314)
@@ -0,0 +1,73 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+
+MODULE grid_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  
+  INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99
+    
+    
+    SUBROUTINE cxios_set_grid_axis_ref(grid_hdl, axis_ref, axis_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_ref_size
+    END SUBROUTINE cxios_set_grid_axis_ref
+    
+    SUBROUTINE cxios_get_grid_axis_ref(grid_hdl, axis_ref, axis_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_ref_size
+    END SUBROUTINE cxios_get_grid_axis_ref
+    
+    
+    SUBROUTINE cxios_set_grid_description(grid_hdl, description, description_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: description
+      INTEGER  (kind = C_INT)     , VALUE        :: description_size
+    END SUBROUTINE cxios_set_grid_description
+    
+    SUBROUTINE cxios_get_grid_description(grid_hdl, description, description_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: description
+      INTEGER  (kind = C_INT)     , VALUE        :: description_size
+    END SUBROUTINE cxios_get_grid_description
+    
+    
+    SUBROUTINE cxios_set_grid_domain_ref(grid_hdl, domain_ref, domain_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: domain_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: domain_ref_size
+    END SUBROUTINE cxios_set_grid_domain_ref
+    
+    SUBROUTINE cxios_get_grid_domain_ref(grid_hdl, domain_ref, domain_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: domain_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: domain_ref_size
+    END SUBROUTINE cxios_get_grid_domain_ref
+    
+    
+    SUBROUTINE cxios_set_grid_name(grid_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_set_grid_name
+    
+    SUBROUTINE cxios_get_grid_name(grid_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_get_grid_name
+    
+    
+    END INTERFACE
+  
+END MODULE grid_interface_attr
Index: /XIOS/trunk/src/fortran_attr_interface/gridgroup_interface_attr.f90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/gridgroup_interface_attr.f90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/gridgroup_interface_attr.f90	(revision 314)
@@ -0,0 +1,88 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+
+MODULE gridgroup_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  
+  INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99
+    
+    
+    SUBROUTINE cxios_set_gridgroup_axis_ref(gridgroup_hdl, axis_ref, axis_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_ref_size
+    END SUBROUTINE cxios_set_gridgroup_axis_ref
+    
+    SUBROUTINE cxios_get_gridgroup_axis_ref(gridgroup_hdl, axis_ref, axis_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_ref_size
+    END SUBROUTINE cxios_get_gridgroup_axis_ref
+    
+    
+    SUBROUTINE cxios_set_gridgroup_description(gridgroup_hdl, description, description_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: description
+      INTEGER  (kind = C_INT)     , VALUE        :: description_size
+    END SUBROUTINE cxios_set_gridgroup_description
+    
+    SUBROUTINE cxios_get_gridgroup_description(gridgroup_hdl, description, description_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: description
+      INTEGER  (kind = C_INT)     , VALUE        :: description_size
+    END SUBROUTINE cxios_get_gridgroup_description
+    
+    
+    SUBROUTINE cxios_set_gridgroup_domain_ref(gridgroup_hdl, domain_ref, domain_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: domain_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: domain_ref_size
+    END SUBROUTINE cxios_set_gridgroup_domain_ref
+    
+    SUBROUTINE cxios_get_gridgroup_domain_ref(gridgroup_hdl, domain_ref, domain_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: domain_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: domain_ref_size
+    END SUBROUTINE cxios_get_gridgroup_domain_ref
+    
+    
+    SUBROUTINE cxios_set_gridgroup_group_ref(gridgroup_hdl, group_ref, group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: group_ref_size
+    END SUBROUTINE cxios_set_gridgroup_group_ref
+    
+    SUBROUTINE cxios_get_gridgroup_group_ref(gridgroup_hdl, group_ref, group_ref_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: group_ref
+      INTEGER  (kind = C_INT)     , VALUE        :: group_ref_size
+    END SUBROUTINE cxios_get_gridgroup_group_ref
+    
+    
+    SUBROUTINE cxios_set_gridgroup_name(gridgroup_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_set_gridgroup_name
+    
+    SUBROUTINE cxios_get_gridgroup_name(gridgroup_hdl, name, name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: name
+      INTEGER  (kind = C_INT)     , VALUE        :: name_size
+    END SUBROUTINE cxios_get_gridgroup_name
+    
+    
+    END INTERFACE
+  
+END MODULE gridgroup_interface_attr
Index: /XIOS/trunk/src/fortran_attr_interface/iaxis_attr.F90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/iaxis_attr.F90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/iaxis_attr.F90	(revision 314)
@@ -0,0 +1,165 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE iaxis_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE iaxis
+  USE axis_interface_attr
+  
+CONTAINS
+  
+  SUBROUTINE xios(set_axis_attr)  &
+    ( axis_id, long_name, name, size, standard_name, unit, value )
+    
+    IMPLICIT NONE
+      TYPE(txios(axis))  :: axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::axis_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      INTEGER  , OPTIONAL, INTENT(IN) :: size
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: value(:)
+      
+      CALL xios(get_axis_handle)(axis_id,axis_hdl)
+      CALL xios(set_axis_attr_hdl_)   &
+      ( axis_hdl, long_name, name, size, standard_name, unit, value )
+    
+  END SUBROUTINE xios(set_axis_attr)
+  
+  SUBROUTINE xios(set_axis_attr_hdl)  &
+    ( axis_hdl, long_name, name, size, standard_name, unit, value )
+    
+    IMPLICIT NONE
+      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      INTEGER  , OPTIONAL, INTENT(IN) :: size
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: value(:)
+      
+      CALL xios(set_axis_attr_hdl_)  &
+      ( axis_hdl, long_name, name, size, standard_name, unit, value )
+    
+  END SUBROUTINE xios(set_axis_attr_hdl)
+  
+  SUBROUTINE xios(set_axis_attr_hdl_)   &
+    ( axis_hdl, long_name_, name_, size_, standard_name_, unit_, value_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
+      INTEGER  , OPTIONAL, INTENT(IN) :: size_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: value_(:)
+      
+      IF (PRESENT(long_name_)) THEN
+        CALL cxios_set_axis_long_name(axis_hdl%daddr, long_name_, len(long_name_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_set_axis_name(axis_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(size_)) THEN
+        CALL cxios_set_axis_size(axis_hdl%daddr, size_)
+      ENDIF
+      
+      IF (PRESENT(standard_name_)) THEN
+        CALL cxios_set_axis_standard_name(axis_hdl%daddr, standard_name_, len(standard_name_))
+      ENDIF
+      
+      IF (PRESENT(unit_)) THEN
+        CALL cxios_set_axis_unit(axis_hdl%daddr, unit_, len(unit_))
+      ENDIF
+      
+      IF (PRESENT(value_)) THEN
+        CALL cxios_set_axis_value(axis_hdl%daddr, value_,size(value_,1))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(set_axis_attr_hdl_)
+  
+  SUBROUTINE xios(get_axis_attr)  &
+    ( axis_id, long_name, name, size, standard_name, unit, value )
+    
+    IMPLICIT NONE
+      TYPE(txios(axis))  :: axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::axis_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      INTEGER  , OPTIONAL, INTENT(OUT) :: size
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: value(:)
+      
+      CALL xios(get_axis_handle)(axis_id,axis_hdl)
+      CALL xios(get_axis_attr_hdl_)   &
+      ( axis_hdl, long_name, name, size, standard_name, unit, value )
+    
+  END SUBROUTINE xios(get_axis_attr)
+  
+  SUBROUTINE xios(get_axis_attr_hdl)  &
+    ( axis_hdl, long_name, name, size, standard_name, unit, value )
+    
+    IMPLICIT NONE
+      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      INTEGER  , OPTIONAL, INTENT(OUT) :: size
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: value(:)
+      
+      CALL xios(get_axis_attr_hdl_)  &
+      ( axis_hdl, long_name, name, size, standard_name, unit, value )
+    
+  END SUBROUTINE xios(get_axis_attr_hdl)
+  
+  SUBROUTINE xios(get_axis_attr_hdl_)   &
+    ( axis_hdl, long_name_, name_, size_, standard_name_, unit_, value_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: size_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: value_(:)
+      
+      IF (PRESENT(long_name_)) THEN
+        CALL cxios_get_axis_long_name(axis_hdl%daddr, long_name_, len(long_name_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_get_axis_name(axis_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(size_)) THEN
+        CALL cxios_get_axis_size(axis_hdl%daddr, size_)
+      ENDIF
+      
+      IF (PRESENT(standard_name_)) THEN
+        CALL cxios_get_axis_standard_name(axis_hdl%daddr, standard_name_, len(standard_name_))
+      ENDIF
+      
+      IF (PRESENT(unit_)) THEN
+        CALL cxios_get_axis_unit(axis_hdl%daddr, unit_, len(unit_))
+      ENDIF
+      
+      IF (PRESENT(value_)) THEN
+        CALL cxios_get_axis_value(axis_hdl%daddr, value_,size(value_,1))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(get_axis_attr_hdl_)
+  
+END MODULE iaxis_attr
Index: /XIOS/trunk/src/fortran_attr_interface/iaxisgroup_attr.F90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/iaxisgroup_attr.F90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/iaxisgroup_attr.F90	(revision 314)
@@ -0,0 +1,179 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE iaxisgroup_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE iaxis
+  USE axisgroup_interface_attr
+  
+CONTAINS
+  
+  SUBROUTINE xios(set_axisgroup_attr)  &
+    ( axisgroup_id, group_ref, long_name, name, size, standard_name, unit, value )
+    
+    IMPLICIT NONE
+      TYPE(txios(axisgroup))  :: axisgroup_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      INTEGER  , OPTIONAL, INTENT(IN) :: size
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: value(:)
+      
+      CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl)
+      CALL xios(set_axisgroup_attr_hdl_)   &
+      ( axisgroup_hdl, group_ref, long_name, name, size, standard_name, unit, value )
+    
+  END SUBROUTINE xios(set_axisgroup_attr)
+  
+  SUBROUTINE xios(set_axisgroup_attr_hdl)  &
+    ( axisgroup_hdl, group_ref, long_name, name, size, standard_name, unit, value )
+    
+    IMPLICIT NONE
+      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      INTEGER  , OPTIONAL, INTENT(IN) :: size
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: value(:)
+      
+      CALL xios(set_axisgroup_attr_hdl_)  &
+      ( axisgroup_hdl, group_ref, long_name, name, size, standard_name, unit, value )
+    
+  END SUBROUTINE xios(set_axisgroup_attr_hdl)
+  
+  SUBROUTINE xios(set_axisgroup_attr_hdl_)   &
+    ( axisgroup_hdl, group_ref_, long_name_, name_, size_, standard_name_, unit_, value_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
+      INTEGER  , OPTIONAL, INTENT(IN) :: size_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: value_(:)
+      
+      IF (PRESENT(group_ref_)) THEN
+        CALL cxios_set_axisgroup_group_ref(axisgroup_hdl%daddr, group_ref_, len(group_ref_))
+      ENDIF
+      
+      IF (PRESENT(long_name_)) THEN
+        CALL cxios_set_axisgroup_long_name(axisgroup_hdl%daddr, long_name_, len(long_name_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_set_axisgroup_name(axisgroup_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(size_)) THEN
+        CALL cxios_set_axisgroup_size(axisgroup_hdl%daddr, size_)
+      ENDIF
+      
+      IF (PRESENT(standard_name_)) THEN
+        CALL cxios_set_axisgroup_standard_name(axisgroup_hdl%daddr, standard_name_, len(standard_name_))
+      ENDIF
+      
+      IF (PRESENT(unit_)) THEN
+        CALL cxios_set_axisgroup_unit(axisgroup_hdl%daddr, unit_, len(unit_))
+      ENDIF
+      
+      IF (PRESENT(value_)) THEN
+        CALL cxios_set_axisgroup_value(axisgroup_hdl%daddr, value_,size(value_,1))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(set_axisgroup_attr_hdl_)
+  
+  SUBROUTINE xios(get_axisgroup_attr)  &
+    ( axisgroup_id, group_ref, long_name, name, size, standard_name, unit, value )
+    
+    IMPLICIT NONE
+      TYPE(txios(axisgroup))  :: axisgroup_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      INTEGER  , OPTIONAL, INTENT(OUT) :: size
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: value(:)
+      
+      CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl)
+      CALL xios(get_axisgroup_attr_hdl_)   &
+      ( axisgroup_hdl, group_ref, long_name, name, size, standard_name, unit, value )
+    
+  END SUBROUTINE xios(get_axisgroup_attr)
+  
+  SUBROUTINE xios(get_axisgroup_attr_hdl)  &
+    ( axisgroup_hdl, group_ref, long_name, name, size, standard_name, unit, value )
+    
+    IMPLICIT NONE
+      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      INTEGER  , OPTIONAL, INTENT(OUT) :: size
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: value(:)
+      
+      CALL xios(get_axisgroup_attr_hdl_)  &
+      ( axisgroup_hdl, group_ref, long_name, name, size, standard_name, unit, value )
+    
+  END SUBROUTINE xios(get_axisgroup_attr_hdl)
+  
+  SUBROUTINE xios(get_axisgroup_attr_hdl_)   &
+    ( axisgroup_hdl, group_ref_, long_name_, name_, size_, standard_name_, unit_, value_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: size_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: value_(:)
+      
+      IF (PRESENT(group_ref_)) THEN
+        CALL cxios_get_axisgroup_group_ref(axisgroup_hdl%daddr, group_ref_, len(group_ref_))
+      ENDIF
+      
+      IF (PRESENT(long_name_)) THEN
+        CALL cxios_get_axisgroup_long_name(axisgroup_hdl%daddr, long_name_, len(long_name_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_get_axisgroup_name(axisgroup_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(size_)) THEN
+        CALL cxios_get_axisgroup_size(axisgroup_hdl%daddr, size_)
+      ENDIF
+      
+      IF (PRESENT(standard_name_)) THEN
+        CALL cxios_get_axisgroup_standard_name(axisgroup_hdl%daddr, standard_name_, len(standard_name_))
+      ENDIF
+      
+      IF (PRESENT(unit_)) THEN
+        CALL cxios_get_axisgroup_unit(axisgroup_hdl%daddr, unit_, len(unit_))
+      ENDIF
+      
+      IF (PRESENT(value_)) THEN
+        CALL cxios_get_axisgroup_value(axisgroup_hdl%daddr, value_,size(value_,1))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(get_axisgroup_attr_hdl_)
+  
+END MODULE iaxisgroup_attr
Index: /XIOS/trunk/src/fortran_attr_interface/icaxis_attr.cpp
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/icaxis_attr.cpp	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/icaxis_attr.cpp	(revision 314)
@@ -0,0 +1,105 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CAxis*  axis_Ptr;
+  
+  void cxios_set_axis_long_name(axis_Ptr axis_hdl, const char * long_name, int long_name_size)
+  {
+    std::string long_name_str;
+    if(!cstr2string(long_name, long_name_size, long_name_str)) return;
+    axis_hdl->long_name.setValue(long_name_str);
+    axis_hdl->sendAttributToServer(axis_hdl->long_name);
+  }
+  
+  void cxios_get_axis_long_name(axis_Ptr axis_hdl, char * long_name, int long_name_size)
+  {
+    if(!string_copy(axis_hdl->long_name.getValue(),long_name , long_name_size))
+      ERROR("void cxios_get_axis_long_name(axis_Ptr axis_hdl, char * long_name, int long_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axis_name(axis_Ptr axis_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    axis_hdl->name.setValue(name_str);
+    axis_hdl->sendAttributToServer(axis_hdl->name);
+  }
+  
+  void cxios_get_axis_name(axis_Ptr axis_hdl, char * name, int name_size)
+  {
+    if(!string_copy(axis_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_axis_name(axis_Ptr axis_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axis_size(axis_Ptr axis_hdl, int size)
+  {
+    axis_hdl->size.setValue(size);
+    axis_hdl->sendAttributToServer(axis_hdl->size);
+  }
+  
+  void cxios_get_axis_size(axis_Ptr axis_hdl, int* size)
+  {
+    *size = axis_hdl->size.getValue();
+  }
+  
+  
+  void cxios_set_axis_standard_name(axis_Ptr axis_hdl, const char * standard_name, int standard_name_size)
+  {
+    std::string standard_name_str;
+    if(!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
+    axis_hdl->standard_name.setValue(standard_name_str);
+    axis_hdl->sendAttributToServer(axis_hdl->standard_name);
+  }
+  
+  void cxios_get_axis_standard_name(axis_Ptr axis_hdl, char * standard_name, int standard_name_size)
+  {
+    if(!string_copy(axis_hdl->standard_name.getValue(),standard_name , standard_name_size))
+      ERROR("void cxios_get_axis_standard_name(axis_Ptr axis_hdl, char * standard_name, int standard_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axis_unit(axis_Ptr axis_hdl, const char * unit, int unit_size)
+  {
+    std::string unit_str;
+    if(!cstr2string(unit, unit_size, unit_str)) return;
+    axis_hdl->unit.setValue(unit_str);
+    axis_hdl->sendAttributToServer(axis_hdl->unit);
+  }
+  
+  void cxios_get_axis_unit(axis_Ptr axis_hdl, char * unit, int unit_size)
+  {
+    if(!string_copy(axis_hdl->unit.getValue(),unit , unit_size))
+      ERROR("void cxios_get_axis_unit(axis_Ptr axis_hdl, char * unit, int unit_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axis_value(axis_Ptr axis_hdl, double* value, int extent1)
+  {
+    ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1]));
+    std::copy(value, &(value[array_tmp->num_elements()]), array_tmp->data());
+    axis_hdl->value.setValue(array_tmp);
+    axis_hdl->sendAttributToServer(axis_hdl->value);
+  }
+  
+  void cxios_get_axis_value(axis_Ptr axis_hdl, double* value, int extent1)
+  {
+    if (!array_copy(axis_hdl->value.getValue(), value, extent1))
+     ERROR("void cxios_set_axis_value(axis_Ptr axis_hdl, double* value, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/fortran_attr_interface/icaxisgroup_attr.cpp
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/icaxisgroup_attr.cpp	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/icaxisgroup_attr.cpp	(revision 314)
@@ -0,0 +1,120 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CAxisGroup*  axisgroup_Ptr;
+  
+  void cxios_set_axisgroup_group_ref(axisgroup_Ptr axisgroup_hdl, const char * group_ref, int group_ref_size)
+  {
+    std::string group_ref_str;
+    if(!cstr2string(group_ref, group_ref_size, group_ref_str)) return;
+    axisgroup_hdl->group_ref.setValue(group_ref_str);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->group_ref);
+  }
+  
+  void cxios_get_axisgroup_group_ref(axisgroup_Ptr axisgroup_hdl, char * group_ref, int group_ref_size)
+  {
+    if(!string_copy(axisgroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+      ERROR("void cxios_get_axisgroup_group_ref(axisgroup_Ptr axisgroup_hdl, char * group_ref, int group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axisgroup_long_name(axisgroup_Ptr axisgroup_hdl, const char * long_name, int long_name_size)
+  {
+    std::string long_name_str;
+    if(!cstr2string(long_name, long_name_size, long_name_str)) return;
+    axisgroup_hdl->long_name.setValue(long_name_str);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->long_name);
+  }
+  
+  void cxios_get_axisgroup_long_name(axisgroup_Ptr axisgroup_hdl, char * long_name, int long_name_size)
+  {
+    if(!string_copy(axisgroup_hdl->long_name.getValue(),long_name , long_name_size))
+      ERROR("void cxios_get_axisgroup_long_name(axisgroup_Ptr axisgroup_hdl, char * long_name, int long_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axisgroup_name(axisgroup_Ptr axisgroup_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    axisgroup_hdl->name.setValue(name_str);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->name);
+  }
+  
+  void cxios_get_axisgroup_name(axisgroup_Ptr axisgroup_hdl, char * name, int name_size)
+  {
+    if(!string_copy(axisgroup_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_axisgroup_name(axisgroup_Ptr axisgroup_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axisgroup_size(axisgroup_Ptr axisgroup_hdl, int size)
+  {
+    axisgroup_hdl->size.setValue(size);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->size);
+  }
+  
+  void cxios_get_axisgroup_size(axisgroup_Ptr axisgroup_hdl, int* size)
+  {
+    *size = axisgroup_hdl->size.getValue();
+  }
+  
+  
+  void cxios_set_axisgroup_standard_name(axisgroup_Ptr axisgroup_hdl, const char * standard_name, int standard_name_size)
+  {
+    std::string standard_name_str;
+    if(!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
+    axisgroup_hdl->standard_name.setValue(standard_name_str);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->standard_name);
+  }
+  
+  void cxios_get_axisgroup_standard_name(axisgroup_Ptr axisgroup_hdl, char * standard_name, int standard_name_size)
+  {
+    if(!string_copy(axisgroup_hdl->standard_name.getValue(),standard_name , standard_name_size))
+      ERROR("void cxios_get_axisgroup_standard_name(axisgroup_Ptr axisgroup_hdl, char * standard_name, int standard_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axisgroup_unit(axisgroup_Ptr axisgroup_hdl, const char * unit, int unit_size)
+  {
+    std::string unit_str;
+    if(!cstr2string(unit, unit_size, unit_str)) return;
+    axisgroup_hdl->unit.setValue(unit_str);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->unit);
+  }
+  
+  void cxios_get_axisgroup_unit(axisgroup_Ptr axisgroup_hdl, char * unit, int unit_size)
+  {
+    if(!string_copy(axisgroup_hdl->unit.getValue(),unit , unit_size))
+      ERROR("void cxios_get_axisgroup_unit(axisgroup_Ptr axisgroup_hdl, char * unit, int unit_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axisgroup_value(axisgroup_Ptr axisgroup_hdl, double* value, int extent1)
+  {
+    ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1]));
+    std::copy(value, &(value[array_tmp->num_elements()]), array_tmp->data());
+    axisgroup_hdl->value.setValue(array_tmp);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->value);
+  }
+  
+  void cxios_get_axisgroup_value(axisgroup_Ptr axisgroup_hdl, double* value, int extent1)
+  {
+    if (!array_copy(axisgroup_hdl->value.getValue(), value, extent1))
+     ERROR("void cxios_set_axisgroup_value(axisgroup_Ptr axisgroup_hdl, double* value, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/fortran_attr_interface/iccontext_attr.cpp
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/iccontext_attr.cpp	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/iccontext_attr.cpp	(revision 314)
@@ -0,0 +1,78 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CContext*  context_Ptr;
+  
+  void cxios_set_context_calendar_type(context_Ptr context_hdl, const char * calendar_type, int calendar_type_size)
+  {
+    std::string calendar_type_str;
+    if(!cstr2string(calendar_type, calendar_type_size, calendar_type_str)) return;
+    context_hdl->calendar_type.setValue(calendar_type_str);
+    context_hdl->sendAttributToServer(context_hdl->calendar_type);
+  }
+  
+  void cxios_get_context_calendar_type(context_Ptr context_hdl, char * calendar_type, int calendar_type_size)
+  {
+    if(!string_copy(context_hdl->calendar_type.getValue(),calendar_type , calendar_type_size))
+      ERROR("void cxios_get_context_calendar_type(context_Ptr context_hdl, char * calendar_type, int calendar_type_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_context_output_dir(context_Ptr context_hdl, const char * output_dir, int output_dir_size)
+  {
+    std::string output_dir_str;
+    if(!cstr2string(output_dir, output_dir_size, output_dir_str)) return;
+    context_hdl->output_dir.setValue(output_dir_str);
+    context_hdl->sendAttributToServer(context_hdl->output_dir);
+  }
+  
+  void cxios_get_context_output_dir(context_Ptr context_hdl, char * output_dir, int output_dir_size)
+  {
+    if(!string_copy(context_hdl->output_dir.getValue(),output_dir , output_dir_size))
+      ERROR("void cxios_get_context_output_dir(context_Ptr context_hdl, char * output_dir, int output_dir_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_context_start_date(context_Ptr context_hdl, const char * start_date, int start_date_size)
+  {
+    std::string start_date_str;
+    if(!cstr2string(start_date, start_date_size, start_date_str)) return;
+    context_hdl->start_date.setValue(start_date_str);
+    context_hdl->sendAttributToServer(context_hdl->start_date);
+  }
+  
+  void cxios_get_context_start_date(context_Ptr context_hdl, char * start_date, int start_date_size)
+  {
+    if(!string_copy(context_hdl->start_date.getValue(),start_date , start_date_size))
+      ERROR("void cxios_get_context_start_date(context_Ptr context_hdl, char * start_date, int start_date_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_context_timestep(context_Ptr context_hdl, const char * timestep, int timestep_size)
+  {
+    std::string timestep_str;
+    if(!cstr2string(timestep, timestep_size, timestep_str)) return;
+    context_hdl->timestep.setValue(timestep_str);
+    context_hdl->sendAttributToServer(context_hdl->timestep);
+  }
+  
+  void cxios_get_context_timestep(context_Ptr context_hdl, char * timestep, int timestep_size)
+  {
+    if(!string_copy(context_hdl->timestep.getValue(),timestep , timestep_size))
+      ERROR("void cxios_get_context_timestep(context_Ptr context_hdl, char * timestep, int timestep_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/fortran_attr_interface/icdomain_attr.cpp
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/icdomain_attr.cpp	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/icdomain_attr.cpp	(revision 314)
@@ -0,0 +1,417 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CDomain*  domain_Ptr;
+  
+  void cxios_set_domain_data_dim(domain_Ptr domain_hdl, int data_dim)
+  {
+    domain_hdl->data_dim.setValue(data_dim);
+    domain_hdl->sendAttributToServer(domain_hdl->data_dim);
+  }
+  
+  void cxios_get_domain_data_dim(domain_Ptr domain_hdl, int* data_dim)
+  {
+    *data_dim = domain_hdl->data_dim.getValue();
+  }
+  
+  
+  void cxios_set_domain_data_i_index(domain_Ptr domain_hdl, int* data_i_index, int extent1)
+  {
+    ARRAY(int,1) array_tmp(new CArray<int,1>(boost::extents[extent1]));
+    std::copy(data_i_index, &(data_i_index[array_tmp->num_elements()]), array_tmp->data());
+    domain_hdl->data_i_index.setValue(array_tmp);
+    domain_hdl->sendAttributToServer(domain_hdl->data_i_index);
+  }
+  
+  void cxios_get_domain_data_i_index(domain_Ptr domain_hdl, int* data_i_index, int extent1)
+  {
+    if (!array_copy(domain_hdl->data_i_index.getValue(), data_i_index, extent1))
+     ERROR("void cxios_set_domain_data_i_index(domain_Ptr domain_hdl, int* data_i_index, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domain_data_ibegin(domain_Ptr domain_hdl, int data_ibegin)
+  {
+    domain_hdl->data_ibegin.setValue(data_ibegin);
+    domain_hdl->sendAttributToServer(domain_hdl->data_ibegin);
+  }
+  
+  void cxios_get_domain_data_ibegin(domain_Ptr domain_hdl, int* data_ibegin)
+  {
+    *data_ibegin = domain_hdl->data_ibegin.getValue();
+  }
+  
+  
+  void cxios_set_domain_data_j_index(domain_Ptr domain_hdl, int* data_j_index, int extent1)
+  {
+    ARRAY(int,1) array_tmp(new CArray<int,1>(boost::extents[extent1]));
+    std::copy(data_j_index, &(data_j_index[array_tmp->num_elements()]), array_tmp->data());
+    domain_hdl->data_j_index.setValue(array_tmp);
+    domain_hdl->sendAttributToServer(domain_hdl->data_j_index);
+  }
+  
+  void cxios_get_domain_data_j_index(domain_Ptr domain_hdl, int* data_j_index, int extent1)
+  {
+    if (!array_copy(domain_hdl->data_j_index.getValue(), data_j_index, extent1))
+     ERROR("void cxios_set_domain_data_j_index(domain_Ptr domain_hdl, int* data_j_index, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domain_data_jbegin(domain_Ptr domain_hdl, int data_jbegin)
+  {
+    domain_hdl->data_jbegin.setValue(data_jbegin);
+    domain_hdl->sendAttributToServer(domain_hdl->data_jbegin);
+  }
+  
+  void cxios_get_domain_data_jbegin(domain_Ptr domain_hdl, int* data_jbegin)
+  {
+    *data_jbegin = domain_hdl->data_jbegin.getValue();
+  }
+  
+  
+  void cxios_set_domain_data_n_index(domain_Ptr domain_hdl, int data_n_index)
+  {
+    domain_hdl->data_n_index.setValue(data_n_index);
+    domain_hdl->sendAttributToServer(domain_hdl->data_n_index);
+  }
+  
+  void cxios_get_domain_data_n_index(domain_Ptr domain_hdl, int* data_n_index)
+  {
+    *data_n_index = domain_hdl->data_n_index.getValue();
+  }
+  
+  
+  void cxios_set_domain_data_ni(domain_Ptr domain_hdl, int data_ni)
+  {
+    domain_hdl->data_ni.setValue(data_ni);
+    domain_hdl->sendAttributToServer(domain_hdl->data_ni);
+  }
+  
+  void cxios_get_domain_data_ni(domain_Ptr domain_hdl, int* data_ni)
+  {
+    *data_ni = domain_hdl->data_ni.getValue();
+  }
+  
+  
+  void cxios_set_domain_data_nj(domain_Ptr domain_hdl, int data_nj)
+  {
+    domain_hdl->data_nj.setValue(data_nj);
+    domain_hdl->sendAttributToServer(domain_hdl->data_nj);
+  }
+  
+  void cxios_get_domain_data_nj(domain_Ptr domain_hdl, int* data_nj)
+  {
+    *data_nj = domain_hdl->data_nj.getValue();
+  }
+  
+  
+  void cxios_set_domain_domain_group_ref(domain_Ptr domain_hdl, const char * domain_group_ref, int domain_group_ref_size)
+  {
+    std::string domain_group_ref_str;
+    if(!cstr2string(domain_group_ref, domain_group_ref_size, domain_group_ref_str)) return;
+    domain_hdl->domain_group_ref.setValue(domain_group_ref_str);
+    domain_hdl->sendAttributToServer(domain_hdl->domain_group_ref);
+  }
+  
+  void cxios_get_domain_domain_group_ref(domain_Ptr domain_hdl, char * domain_group_ref, int domain_group_ref_size)
+  {
+    if(!string_copy(domain_hdl->domain_group_ref.getValue(),domain_group_ref , domain_group_ref_size))
+      ERROR("void cxios_get_domain_domain_group_ref(domain_Ptr domain_hdl, char * domain_group_ref, int domain_group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domain_ibegin(domain_Ptr domain_hdl, int ibegin)
+  {
+    domain_hdl->ibegin.setValue(ibegin);
+    domain_hdl->sendAttributToServer(domain_hdl->ibegin);
+  }
+  
+  void cxios_get_domain_ibegin(domain_Ptr domain_hdl, int* ibegin)
+  {
+    *ibegin = domain_hdl->ibegin.getValue();
+  }
+  
+  
+  void cxios_set_domain_iend(domain_Ptr domain_hdl, int iend)
+  {
+    domain_hdl->iend.setValue(iend);
+    domain_hdl->sendAttributToServer(domain_hdl->iend);
+  }
+  
+  void cxios_get_domain_iend(domain_Ptr domain_hdl, int* iend)
+  {
+    *iend = domain_hdl->iend.getValue();
+  }
+  
+  
+  void cxios_set_domain_jbegin(domain_Ptr domain_hdl, int jbegin)
+  {
+    domain_hdl->jbegin.setValue(jbegin);
+    domain_hdl->sendAttributToServer(domain_hdl->jbegin);
+  }
+  
+  void cxios_get_domain_jbegin(domain_Ptr domain_hdl, int* jbegin)
+  {
+    *jbegin = domain_hdl->jbegin.getValue();
+  }
+  
+  
+  void cxios_set_domain_jend(domain_Ptr domain_hdl, int jend)
+  {
+    domain_hdl->jend.setValue(jend);
+    domain_hdl->sendAttributToServer(domain_hdl->jend);
+  }
+  
+  void cxios_get_domain_jend(domain_Ptr domain_hdl, int* jend)
+  {
+    *jend = domain_hdl->jend.getValue();
+  }
+  
+  
+  void cxios_set_domain_latvalue(domain_Ptr domain_hdl, double* latvalue, int extent1)
+  {
+    ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1]));
+    std::copy(latvalue, &(latvalue[array_tmp->num_elements()]), array_tmp->data());
+    domain_hdl->latvalue.setValue(array_tmp);
+    domain_hdl->sendAttributToServer(domain_hdl->latvalue);
+  }
+  
+  void cxios_get_domain_latvalue(domain_Ptr domain_hdl, double* latvalue, int extent1)
+  {
+    if (!array_copy(domain_hdl->latvalue.getValue(), latvalue, extent1))
+     ERROR("void cxios_set_domain_latvalue(domain_Ptr domain_hdl, double* latvalue, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domain_long_name(domain_Ptr domain_hdl, const char * long_name, int long_name_size)
+  {
+    std::string long_name_str;
+    if(!cstr2string(long_name, long_name_size, long_name_str)) return;
+    domain_hdl->long_name.setValue(long_name_str);
+    domain_hdl->sendAttributToServer(domain_hdl->long_name);
+  }
+  
+  void cxios_get_domain_long_name(domain_Ptr domain_hdl, char * long_name, int long_name_size)
+  {
+    if(!string_copy(domain_hdl->long_name.getValue(),long_name , long_name_size))
+      ERROR("void cxios_get_domain_long_name(domain_Ptr domain_hdl, char * long_name, int long_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domain_lonvalue(domain_Ptr domain_hdl, double* lonvalue, int extent1)
+  {
+    ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1]));
+    std::copy(lonvalue, &(lonvalue[array_tmp->num_elements()]), array_tmp->data());
+    domain_hdl->lonvalue.setValue(array_tmp);
+    domain_hdl->sendAttributToServer(domain_hdl->lonvalue);
+  }
+  
+  void cxios_get_domain_lonvalue(domain_Ptr domain_hdl, double* lonvalue, int extent1)
+  {
+    if (!array_copy(domain_hdl->lonvalue.getValue(), lonvalue, extent1))
+     ERROR("void cxios_set_domain_lonvalue(domain_Ptr domain_hdl, double* lonvalue, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domain_mask(domain_Ptr domain_hdl, bool* mask, int extent1, int extent2)
+  {
+    ARRAY(bool,2) array_tmp(new CArray<bool,2>(boost::extents[extent1][extent2]));
+    std::copy(mask, &(mask[array_tmp->num_elements()]), array_tmp->data());
+    domain_hdl->mask.setValue(array_tmp);
+    domain_hdl->sendAttributToServer(domain_hdl->mask);
+  }
+  
+  void cxios_get_domain_mask(domain_Ptr domain_hdl, bool* mask, int extent1, int extent2)
+  {
+    if (!array_copy(domain_hdl->mask.getValue(), mask, extent1, extent2))
+     ERROR("void cxios_set_domain_mask(domain_Ptr domain_hdl, bool* mask, int extent1, int extent2)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domain_name(domain_Ptr domain_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    domain_hdl->name.setValue(name_str);
+    domain_hdl->sendAttributToServer(domain_hdl->name);
+  }
+  
+  void cxios_get_domain_name(domain_Ptr domain_hdl, char * name, int name_size)
+  {
+    if(!string_copy(domain_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_domain_name(domain_Ptr domain_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domain_ni(domain_Ptr domain_hdl, int ni)
+  {
+    domain_hdl->ni.setValue(ni);
+    domain_hdl->sendAttributToServer(domain_hdl->ni);
+  }
+  
+  void cxios_get_domain_ni(domain_Ptr domain_hdl, int* ni)
+  {
+    *ni = domain_hdl->ni.getValue();
+  }
+  
+  
+  void cxios_set_domain_ni_glo(domain_Ptr domain_hdl, int ni_glo)
+  {
+    domain_hdl->ni_glo.setValue(ni_glo);
+    domain_hdl->sendAttributToServer(domain_hdl->ni_glo);
+  }
+  
+  void cxios_get_domain_ni_glo(domain_Ptr domain_hdl, int* ni_glo)
+  {
+    *ni_glo = domain_hdl->ni_glo.getValue();
+  }
+  
+  
+  void cxios_set_domain_nj(domain_Ptr domain_hdl, int nj)
+  {
+    domain_hdl->nj.setValue(nj);
+    domain_hdl->sendAttributToServer(domain_hdl->nj);
+  }
+  
+  void cxios_get_domain_nj(domain_Ptr domain_hdl, int* nj)
+  {
+    *nj = domain_hdl->nj.getValue();
+  }
+  
+  
+  void cxios_set_domain_nj_glo(domain_Ptr domain_hdl, int nj_glo)
+  {
+    domain_hdl->nj_glo.setValue(nj_glo);
+    domain_hdl->sendAttributToServer(domain_hdl->nj_glo);
+  }
+  
+  void cxios_get_domain_nj_glo(domain_Ptr domain_hdl, int* nj_glo)
+  {
+    *nj_glo = domain_hdl->nj_glo.getValue();
+  }
+  
+  
+  void cxios_set_domain_standard_name(domain_Ptr domain_hdl, const char * standard_name, int standard_name_size)
+  {
+    std::string standard_name_str;
+    if(!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
+    domain_hdl->standard_name.setValue(standard_name_str);
+    domain_hdl->sendAttributToServer(domain_hdl->standard_name);
+  }
+  
+  void cxios_get_domain_standard_name(domain_Ptr domain_hdl, char * standard_name, int standard_name_size)
+  {
+    if(!string_copy(domain_hdl->standard_name.getValue(),standard_name , standard_name_size))
+      ERROR("void cxios_get_domain_standard_name(domain_Ptr domain_hdl, char * standard_name, int standard_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domain_zoom_ibegin(domain_Ptr domain_hdl, int zoom_ibegin)
+  {
+    domain_hdl->zoom_ibegin.setValue(zoom_ibegin);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_ibegin);
+  }
+  
+  void cxios_get_domain_zoom_ibegin(domain_Ptr domain_hdl, int* zoom_ibegin)
+  {
+    *zoom_ibegin = domain_hdl->zoom_ibegin.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_ibegin_loc(domain_Ptr domain_hdl, int zoom_ibegin_loc)
+  {
+    domain_hdl->zoom_ibegin_loc.setValue(zoom_ibegin_loc);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_ibegin_loc);
+  }
+  
+  void cxios_get_domain_zoom_ibegin_loc(domain_Ptr domain_hdl, int* zoom_ibegin_loc)
+  {
+    *zoom_ibegin_loc = domain_hdl->zoom_ibegin_loc.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_jbegin(domain_Ptr domain_hdl, int zoom_jbegin)
+  {
+    domain_hdl->zoom_jbegin.setValue(zoom_jbegin);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_jbegin);
+  }
+  
+  void cxios_get_domain_zoom_jbegin(domain_Ptr domain_hdl, int* zoom_jbegin)
+  {
+    *zoom_jbegin = domain_hdl->zoom_jbegin.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_jbegin_loc(domain_Ptr domain_hdl, int zoom_jbegin_loc)
+  {
+    domain_hdl->zoom_jbegin_loc.setValue(zoom_jbegin_loc);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_jbegin_loc);
+  }
+  
+  void cxios_get_domain_zoom_jbegin_loc(domain_Ptr domain_hdl, int* zoom_jbegin_loc)
+  {
+    *zoom_jbegin_loc = domain_hdl->zoom_jbegin_loc.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_ni(domain_Ptr domain_hdl, int zoom_ni)
+  {
+    domain_hdl->zoom_ni.setValue(zoom_ni);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_ni);
+  }
+  
+  void cxios_get_domain_zoom_ni(domain_Ptr domain_hdl, int* zoom_ni)
+  {
+    *zoom_ni = domain_hdl->zoom_ni.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_ni_loc(domain_Ptr domain_hdl, int zoom_ni_loc)
+  {
+    domain_hdl->zoom_ni_loc.setValue(zoom_ni_loc);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_ni_loc);
+  }
+  
+  void cxios_get_domain_zoom_ni_loc(domain_Ptr domain_hdl, int* zoom_ni_loc)
+  {
+    *zoom_ni_loc = domain_hdl->zoom_ni_loc.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_nj(domain_Ptr domain_hdl, int zoom_nj)
+  {
+    domain_hdl->zoom_nj.setValue(zoom_nj);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_nj);
+  }
+  
+  void cxios_get_domain_zoom_nj(domain_Ptr domain_hdl, int* zoom_nj)
+  {
+    *zoom_nj = domain_hdl->zoom_nj.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_nj_loc(domain_Ptr domain_hdl, int zoom_nj_loc)
+  {
+    domain_hdl->zoom_nj_loc.setValue(zoom_nj_loc);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_nj_loc);
+  }
+  
+  void cxios_get_domain_zoom_nj_loc(domain_Ptr domain_hdl, int* zoom_nj_loc)
+  {
+    *zoom_nj_loc = domain_hdl->zoom_nj_loc.getValue();
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/fortran_attr_interface/icdomaingroup_attr.cpp
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/icdomaingroup_attr.cpp	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/icdomaingroup_attr.cpp	(revision 314)
@@ -0,0 +1,432 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CDomainGroup*  domaingroup_Ptr;
+  
+  void cxios_set_domaingroup_data_dim(domaingroup_Ptr domaingroup_hdl, int data_dim)
+  {
+    domaingroup_hdl->data_dim.setValue(data_dim);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_dim);
+  }
+  
+  void cxios_get_domaingroup_data_dim(domaingroup_Ptr domaingroup_hdl, int* data_dim)
+  {
+    *data_dim = domaingroup_hdl->data_dim.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_data_i_index(domaingroup_Ptr domaingroup_hdl, int* data_i_index, int extent1)
+  {
+    ARRAY(int,1) array_tmp(new CArray<int,1>(boost::extents[extent1]));
+    std::copy(data_i_index, &(data_i_index[array_tmp->num_elements()]), array_tmp->data());
+    domaingroup_hdl->data_i_index.setValue(array_tmp);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_i_index);
+  }
+  
+  void cxios_get_domaingroup_data_i_index(domaingroup_Ptr domaingroup_hdl, int* data_i_index, int extent1)
+  {
+    if (!array_copy(domaingroup_hdl->data_i_index.getValue(), data_i_index, extent1))
+     ERROR("void cxios_set_domaingroup_data_i_index(domaingroup_Ptr domaingroup_hdl, int* data_i_index, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domaingroup_data_ibegin(domaingroup_Ptr domaingroup_hdl, int data_ibegin)
+  {
+    domaingroup_hdl->data_ibegin.setValue(data_ibegin);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_ibegin);
+  }
+  
+  void cxios_get_domaingroup_data_ibegin(domaingroup_Ptr domaingroup_hdl, int* data_ibegin)
+  {
+    *data_ibegin = domaingroup_hdl->data_ibegin.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_data_j_index(domaingroup_Ptr domaingroup_hdl, int* data_j_index, int extent1)
+  {
+    ARRAY(int,1) array_tmp(new CArray<int,1>(boost::extents[extent1]));
+    std::copy(data_j_index, &(data_j_index[array_tmp->num_elements()]), array_tmp->data());
+    domaingroup_hdl->data_j_index.setValue(array_tmp);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_j_index);
+  }
+  
+  void cxios_get_domaingroup_data_j_index(domaingroup_Ptr domaingroup_hdl, int* data_j_index, int extent1)
+  {
+    if (!array_copy(domaingroup_hdl->data_j_index.getValue(), data_j_index, extent1))
+     ERROR("void cxios_set_domaingroup_data_j_index(domaingroup_Ptr domaingroup_hdl, int* data_j_index, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domaingroup_data_jbegin(domaingroup_Ptr domaingroup_hdl, int data_jbegin)
+  {
+    domaingroup_hdl->data_jbegin.setValue(data_jbegin);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_jbegin);
+  }
+  
+  void cxios_get_domaingroup_data_jbegin(domaingroup_Ptr domaingroup_hdl, int* data_jbegin)
+  {
+    *data_jbegin = domaingroup_hdl->data_jbegin.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_data_n_index(domaingroup_Ptr domaingroup_hdl, int data_n_index)
+  {
+    domaingroup_hdl->data_n_index.setValue(data_n_index);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_n_index);
+  }
+  
+  void cxios_get_domaingroup_data_n_index(domaingroup_Ptr domaingroup_hdl, int* data_n_index)
+  {
+    *data_n_index = domaingroup_hdl->data_n_index.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_data_ni(domaingroup_Ptr domaingroup_hdl, int data_ni)
+  {
+    domaingroup_hdl->data_ni.setValue(data_ni);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_ni);
+  }
+  
+  void cxios_get_domaingroup_data_ni(domaingroup_Ptr domaingroup_hdl, int* data_ni)
+  {
+    *data_ni = domaingroup_hdl->data_ni.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_data_nj(domaingroup_Ptr domaingroup_hdl, int data_nj)
+  {
+    domaingroup_hdl->data_nj.setValue(data_nj);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_nj);
+  }
+  
+  void cxios_get_domaingroup_data_nj(domaingroup_Ptr domaingroup_hdl, int* data_nj)
+  {
+    *data_nj = domaingroup_hdl->data_nj.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_domain_group_ref(domaingroup_Ptr domaingroup_hdl, const char * domain_group_ref, int domain_group_ref_size)
+  {
+    std::string domain_group_ref_str;
+    if(!cstr2string(domain_group_ref, domain_group_ref_size, domain_group_ref_str)) return;
+    domaingroup_hdl->domain_group_ref.setValue(domain_group_ref_str);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->domain_group_ref);
+  }
+  
+  void cxios_get_domaingroup_domain_group_ref(domaingroup_Ptr domaingroup_hdl, char * domain_group_ref, int domain_group_ref_size)
+  {
+    if(!string_copy(domaingroup_hdl->domain_group_ref.getValue(),domain_group_ref , domain_group_ref_size))
+      ERROR("void cxios_get_domaingroup_domain_group_ref(domaingroup_Ptr domaingroup_hdl, char * domain_group_ref, int domain_group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domaingroup_group_ref(domaingroup_Ptr domaingroup_hdl, const char * group_ref, int group_ref_size)
+  {
+    std::string group_ref_str;
+    if(!cstr2string(group_ref, group_ref_size, group_ref_str)) return;
+    domaingroup_hdl->group_ref.setValue(group_ref_str);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->group_ref);
+  }
+  
+  void cxios_get_domaingroup_group_ref(domaingroup_Ptr domaingroup_hdl, char * group_ref, int group_ref_size)
+  {
+    if(!string_copy(domaingroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+      ERROR("void cxios_get_domaingroup_group_ref(domaingroup_Ptr domaingroup_hdl, char * group_ref, int group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domaingroup_ibegin(domaingroup_Ptr domaingroup_hdl, int ibegin)
+  {
+    domaingroup_hdl->ibegin.setValue(ibegin);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ibegin);
+  }
+  
+  void cxios_get_domaingroup_ibegin(domaingroup_Ptr domaingroup_hdl, int* ibegin)
+  {
+    *ibegin = domaingroup_hdl->ibegin.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_iend(domaingroup_Ptr domaingroup_hdl, int iend)
+  {
+    domaingroup_hdl->iend.setValue(iend);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->iend);
+  }
+  
+  void cxios_get_domaingroup_iend(domaingroup_Ptr domaingroup_hdl, int* iend)
+  {
+    *iend = domaingroup_hdl->iend.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_jbegin(domaingroup_Ptr domaingroup_hdl, int jbegin)
+  {
+    domaingroup_hdl->jbegin.setValue(jbegin);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->jbegin);
+  }
+  
+  void cxios_get_domaingroup_jbegin(domaingroup_Ptr domaingroup_hdl, int* jbegin)
+  {
+    *jbegin = domaingroup_hdl->jbegin.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_jend(domaingroup_Ptr domaingroup_hdl, int jend)
+  {
+    domaingroup_hdl->jend.setValue(jend);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->jend);
+  }
+  
+  void cxios_get_domaingroup_jend(domaingroup_Ptr domaingroup_hdl, int* jend)
+  {
+    *jend = domaingroup_hdl->jend.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_latvalue(domaingroup_Ptr domaingroup_hdl, double* latvalue, int extent1)
+  {
+    ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1]));
+    std::copy(latvalue, &(latvalue[array_tmp->num_elements()]), array_tmp->data());
+    domaingroup_hdl->latvalue.setValue(array_tmp);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->latvalue);
+  }
+  
+  void cxios_get_domaingroup_latvalue(domaingroup_Ptr domaingroup_hdl, double* latvalue, int extent1)
+  {
+    if (!array_copy(domaingroup_hdl->latvalue.getValue(), latvalue, extent1))
+     ERROR("void cxios_set_domaingroup_latvalue(domaingroup_Ptr domaingroup_hdl, double* latvalue, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domaingroup_long_name(domaingroup_Ptr domaingroup_hdl, const char * long_name, int long_name_size)
+  {
+    std::string long_name_str;
+    if(!cstr2string(long_name, long_name_size, long_name_str)) return;
+    domaingroup_hdl->long_name.setValue(long_name_str);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->long_name);
+  }
+  
+  void cxios_get_domaingroup_long_name(domaingroup_Ptr domaingroup_hdl, char * long_name, int long_name_size)
+  {
+    if(!string_copy(domaingroup_hdl->long_name.getValue(),long_name , long_name_size))
+      ERROR("void cxios_get_domaingroup_long_name(domaingroup_Ptr domaingroup_hdl, char * long_name, int long_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domaingroup_lonvalue(domaingroup_Ptr domaingroup_hdl, double* lonvalue, int extent1)
+  {
+    ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1]));
+    std::copy(lonvalue, &(lonvalue[array_tmp->num_elements()]), array_tmp->data());
+    domaingroup_hdl->lonvalue.setValue(array_tmp);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->lonvalue);
+  }
+  
+  void cxios_get_domaingroup_lonvalue(domaingroup_Ptr domaingroup_hdl, double* lonvalue, int extent1)
+  {
+    if (!array_copy(domaingroup_hdl->lonvalue.getValue(), lonvalue, extent1))
+     ERROR("void cxios_set_domaingroup_lonvalue(domaingroup_Ptr domaingroup_hdl, double* lonvalue, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domaingroup_mask(domaingroup_Ptr domaingroup_hdl, bool* mask, int extent1, int extent2)
+  {
+    ARRAY(bool,2) array_tmp(new CArray<bool,2>(boost::extents[extent1][extent2]));
+    std::copy(mask, &(mask[array_tmp->num_elements()]), array_tmp->data());
+    domaingroup_hdl->mask.setValue(array_tmp);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->mask);
+  }
+  
+  void cxios_get_domaingroup_mask(domaingroup_Ptr domaingroup_hdl, bool* mask, int extent1, int extent2)
+  {
+    if (!array_copy(domaingroup_hdl->mask.getValue(), mask, extent1, extent2))
+     ERROR("void cxios_set_domaingroup_mask(domaingroup_Ptr domaingroup_hdl, bool* mask, int extent1, int extent2)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domaingroup_name(domaingroup_Ptr domaingroup_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    domaingroup_hdl->name.setValue(name_str);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->name);
+  }
+  
+  void cxios_get_domaingroup_name(domaingroup_Ptr domaingroup_hdl, char * name, int name_size)
+  {
+    if(!string_copy(domaingroup_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_domaingroup_name(domaingroup_Ptr domaingroup_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domaingroup_ni(domaingroup_Ptr domaingroup_hdl, int ni)
+  {
+    domaingroup_hdl->ni.setValue(ni);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ni);
+  }
+  
+  void cxios_get_domaingroup_ni(domaingroup_Ptr domaingroup_hdl, int* ni)
+  {
+    *ni = domaingroup_hdl->ni.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_ni_glo(domaingroup_Ptr domaingroup_hdl, int ni_glo)
+  {
+    domaingroup_hdl->ni_glo.setValue(ni_glo);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ni_glo);
+  }
+  
+  void cxios_get_domaingroup_ni_glo(domaingroup_Ptr domaingroup_hdl, int* ni_glo)
+  {
+    *ni_glo = domaingroup_hdl->ni_glo.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_nj(domaingroup_Ptr domaingroup_hdl, int nj)
+  {
+    domaingroup_hdl->nj.setValue(nj);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->nj);
+  }
+  
+  void cxios_get_domaingroup_nj(domaingroup_Ptr domaingroup_hdl, int* nj)
+  {
+    *nj = domaingroup_hdl->nj.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_nj_glo(domaingroup_Ptr domaingroup_hdl, int nj_glo)
+  {
+    domaingroup_hdl->nj_glo.setValue(nj_glo);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->nj_glo);
+  }
+  
+  void cxios_get_domaingroup_nj_glo(domaingroup_Ptr domaingroup_hdl, int* nj_glo)
+  {
+    *nj_glo = domaingroup_hdl->nj_glo.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_standard_name(domaingroup_Ptr domaingroup_hdl, const char * standard_name, int standard_name_size)
+  {
+    std::string standard_name_str;
+    if(!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
+    domaingroup_hdl->standard_name.setValue(standard_name_str);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->standard_name);
+  }
+  
+  void cxios_get_domaingroup_standard_name(domaingroup_Ptr domaingroup_hdl, char * standard_name, int standard_name_size)
+  {
+    if(!string_copy(domaingroup_hdl->standard_name.getValue(),standard_name , standard_name_size))
+      ERROR("void cxios_get_domaingroup_standard_name(domaingroup_Ptr domaingroup_hdl, char * standard_name, int standard_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_ibegin(domaingroup_Ptr domaingroup_hdl, int zoom_ibegin)
+  {
+    domaingroup_hdl->zoom_ibegin.setValue(zoom_ibegin);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ibegin);
+  }
+  
+  void cxios_get_domaingroup_zoom_ibegin(domaingroup_Ptr domaingroup_hdl, int* zoom_ibegin)
+  {
+    *zoom_ibegin = domaingroup_hdl->zoom_ibegin.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_ibegin_loc(domaingroup_Ptr domaingroup_hdl, int zoom_ibegin_loc)
+  {
+    domaingroup_hdl->zoom_ibegin_loc.setValue(zoom_ibegin_loc);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ibegin_loc);
+  }
+  
+  void cxios_get_domaingroup_zoom_ibegin_loc(domaingroup_Ptr domaingroup_hdl, int* zoom_ibegin_loc)
+  {
+    *zoom_ibegin_loc = domaingroup_hdl->zoom_ibegin_loc.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_jbegin(domaingroup_Ptr domaingroup_hdl, int zoom_jbegin)
+  {
+    domaingroup_hdl->zoom_jbegin.setValue(zoom_jbegin);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_jbegin);
+  }
+  
+  void cxios_get_domaingroup_zoom_jbegin(domaingroup_Ptr domaingroup_hdl, int* zoom_jbegin)
+  {
+    *zoom_jbegin = domaingroup_hdl->zoom_jbegin.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_jbegin_loc(domaingroup_Ptr domaingroup_hdl, int zoom_jbegin_loc)
+  {
+    domaingroup_hdl->zoom_jbegin_loc.setValue(zoom_jbegin_loc);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_jbegin_loc);
+  }
+  
+  void cxios_get_domaingroup_zoom_jbegin_loc(domaingroup_Ptr domaingroup_hdl, int* zoom_jbegin_loc)
+  {
+    *zoom_jbegin_loc = domaingroup_hdl->zoom_jbegin_loc.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_ni(domaingroup_Ptr domaingroup_hdl, int zoom_ni)
+  {
+    domaingroup_hdl->zoom_ni.setValue(zoom_ni);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ni);
+  }
+  
+  void cxios_get_domaingroup_zoom_ni(domaingroup_Ptr domaingroup_hdl, int* zoom_ni)
+  {
+    *zoom_ni = domaingroup_hdl->zoom_ni.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_ni_loc(domaingroup_Ptr domaingroup_hdl, int zoom_ni_loc)
+  {
+    domaingroup_hdl->zoom_ni_loc.setValue(zoom_ni_loc);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ni_loc);
+  }
+  
+  void cxios_get_domaingroup_zoom_ni_loc(domaingroup_Ptr domaingroup_hdl, int* zoom_ni_loc)
+  {
+    *zoom_ni_loc = domaingroup_hdl->zoom_ni_loc.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_nj(domaingroup_Ptr domaingroup_hdl, int zoom_nj)
+  {
+    domaingroup_hdl->zoom_nj.setValue(zoom_nj);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_nj);
+  }
+  
+  void cxios_get_domaingroup_zoom_nj(domaingroup_Ptr domaingroup_hdl, int* zoom_nj)
+  {
+    *zoom_nj = domaingroup_hdl->zoom_nj.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_nj_loc(domaingroup_Ptr domaingroup_hdl, int zoom_nj_loc)
+  {
+    domaingroup_hdl->zoom_nj_loc.setValue(zoom_nj_loc);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_nj_loc);
+  }
+  
+  void cxios_get_domaingroup_zoom_nj_loc(domaingroup_Ptr domaingroup_hdl, int* zoom_nj_loc)
+  {
+    *zoom_nj_loc = domaingroup_hdl->zoom_nj_loc.getValue();
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/fortran_attr_interface/icfield_attr.cpp
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/icfield_attr.cpp	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/icfield_attr.cpp	(revision 314)
@@ -0,0 +1,231 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CField*  field_Ptr;
+  
+  void cxios_set_field_axis_ref(field_Ptr field_hdl, const char * axis_ref, int axis_ref_size)
+  {
+    std::string axis_ref_str;
+    if(!cstr2string(axis_ref, axis_ref_size, axis_ref_str)) return;
+    field_hdl->axis_ref.setValue(axis_ref_str);
+    field_hdl->sendAttributToServer(field_hdl->axis_ref);
+  }
+  
+  void cxios_get_field_axis_ref(field_Ptr field_hdl, char * axis_ref, int axis_ref_size)
+  {
+    if(!string_copy(field_hdl->axis_ref.getValue(),axis_ref , axis_ref_size))
+      ERROR("void cxios_get_field_axis_ref(field_Ptr field_hdl, char * axis_ref, int axis_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_default_value(field_Ptr field_hdl, double default_value)
+  {
+    field_hdl->default_value.setValue(default_value);
+    field_hdl->sendAttributToServer(field_hdl->default_value);
+  }
+  
+  void cxios_get_field_default_value(field_Ptr field_hdl, double* default_value)
+  {
+    *default_value = field_hdl->default_value.getValue();
+  }
+  
+  
+  void cxios_set_field_domain_ref(field_Ptr field_hdl, const char * domain_ref, int domain_ref_size)
+  {
+    std::string domain_ref_str;
+    if(!cstr2string(domain_ref, domain_ref_size, domain_ref_str)) return;
+    field_hdl->domain_ref.setValue(domain_ref_str);
+    field_hdl->sendAttributToServer(field_hdl->domain_ref);
+  }
+  
+  void cxios_get_field_domain_ref(field_Ptr field_hdl, char * domain_ref, int domain_ref_size)
+  {
+    if(!string_copy(field_hdl->domain_ref.getValue(),domain_ref , domain_ref_size))
+      ERROR("void cxios_get_field_domain_ref(field_Ptr field_hdl, char * domain_ref, int domain_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_enabled(field_Ptr field_hdl, bool enabled)
+  {
+    field_hdl->enabled.setValue(enabled);
+    field_hdl->sendAttributToServer(field_hdl->enabled);
+  }
+  
+  void cxios_get_field_enabled(field_Ptr field_hdl, bool* enabled)
+  {
+    *enabled = field_hdl->enabled.getValue();
+  }
+  
+  
+  void cxios_set_field_field_ref(field_Ptr field_hdl, const char * field_ref, int field_ref_size)
+  {
+    std::string field_ref_str;
+    if(!cstr2string(field_ref, field_ref_size, field_ref_str)) return;
+    field_hdl->field_ref.setValue(field_ref_str);
+    field_hdl->sendAttributToServer(field_hdl->field_ref);
+  }
+  
+  void cxios_get_field_field_ref(field_Ptr field_hdl, char * field_ref, int field_ref_size)
+  {
+    if(!string_copy(field_hdl->field_ref.getValue(),field_ref , field_ref_size))
+      ERROR("void cxios_get_field_field_ref(field_Ptr field_hdl, char * field_ref, int field_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_freq_offset(field_Ptr field_hdl, const char * freq_offset, int freq_offset_size)
+  {
+    std::string freq_offset_str;
+    if(!cstr2string(freq_offset, freq_offset_size, freq_offset_str)) return;
+    field_hdl->freq_offset.setValue(freq_offset_str);
+    field_hdl->sendAttributToServer(field_hdl->freq_offset);
+  }
+  
+  void cxios_get_field_freq_offset(field_Ptr field_hdl, char * freq_offset, int freq_offset_size)
+  {
+    if(!string_copy(field_hdl->freq_offset.getValue(),freq_offset , freq_offset_size))
+      ERROR("void cxios_get_field_freq_offset(field_Ptr field_hdl, char * freq_offset, int freq_offset_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_freq_op(field_Ptr field_hdl, const char * freq_op, int freq_op_size)
+  {
+    std::string freq_op_str;
+    if(!cstr2string(freq_op, freq_op_size, freq_op_str)) return;
+    field_hdl->freq_op.setValue(freq_op_str);
+    field_hdl->sendAttributToServer(field_hdl->freq_op);
+  }
+  
+  void cxios_get_field_freq_op(field_Ptr field_hdl, char * freq_op, int freq_op_size)
+  {
+    if(!string_copy(field_hdl->freq_op.getValue(),freq_op , freq_op_size))
+      ERROR("void cxios_get_field_freq_op(field_Ptr field_hdl, char * freq_op, int freq_op_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_grid_ref(field_Ptr field_hdl, const char * grid_ref, int grid_ref_size)
+  {
+    std::string grid_ref_str;
+    if(!cstr2string(grid_ref, grid_ref_size, grid_ref_str)) return;
+    field_hdl->grid_ref.setValue(grid_ref_str);
+    field_hdl->sendAttributToServer(field_hdl->grid_ref);
+  }
+  
+  void cxios_get_field_grid_ref(field_Ptr field_hdl, char * grid_ref, int grid_ref_size)
+  {
+    if(!string_copy(field_hdl->grid_ref.getValue(),grid_ref , grid_ref_size))
+      ERROR("void cxios_get_field_grid_ref(field_Ptr field_hdl, char * grid_ref, int grid_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_level(field_Ptr field_hdl, int level)
+  {
+    field_hdl->level.setValue(level);
+    field_hdl->sendAttributToServer(field_hdl->level);
+  }
+  
+  void cxios_get_field_level(field_Ptr field_hdl, int* level)
+  {
+    *level = field_hdl->level.getValue();
+  }
+  
+  
+  void cxios_set_field_long_name(field_Ptr field_hdl, const char * long_name, int long_name_size)
+  {
+    std::string long_name_str;
+    if(!cstr2string(long_name, long_name_size, long_name_str)) return;
+    field_hdl->long_name.setValue(long_name_str);
+    field_hdl->sendAttributToServer(field_hdl->long_name);
+  }
+  
+  void cxios_get_field_long_name(field_Ptr field_hdl, char * long_name, int long_name_size)
+  {
+    if(!string_copy(field_hdl->long_name.getValue(),long_name , long_name_size))
+      ERROR("void cxios_get_field_long_name(field_Ptr field_hdl, char * long_name, int long_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_name(field_Ptr field_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    field_hdl->name.setValue(name_str);
+    field_hdl->sendAttributToServer(field_hdl->name);
+  }
+  
+  void cxios_get_field_name(field_Ptr field_hdl, char * name, int name_size)
+  {
+    if(!string_copy(field_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_field_name(field_Ptr field_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_operation(field_Ptr field_hdl, const char * operation, int operation_size)
+  {
+    std::string operation_str;
+    if(!cstr2string(operation, operation_size, operation_str)) return;
+    field_hdl->operation.setValue(operation_str);
+    field_hdl->sendAttributToServer(field_hdl->operation);
+  }
+  
+  void cxios_get_field_operation(field_Ptr field_hdl, char * operation, int operation_size)
+  {
+    if(!string_copy(field_hdl->operation.getValue(),operation , operation_size))
+      ERROR("void cxios_get_field_operation(field_Ptr field_hdl, char * operation, int operation_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_prec(field_Ptr field_hdl, int prec)
+  {
+    field_hdl->prec.setValue(prec);
+    field_hdl->sendAttributToServer(field_hdl->prec);
+  }
+  
+  void cxios_get_field_prec(field_Ptr field_hdl, int* prec)
+  {
+    *prec = field_hdl->prec.getValue();
+  }
+  
+  
+  void cxios_set_field_standard_name(field_Ptr field_hdl, const char * standard_name, int standard_name_size)
+  {
+    std::string standard_name_str;
+    if(!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
+    field_hdl->standard_name.setValue(standard_name_str);
+    field_hdl->sendAttributToServer(field_hdl->standard_name);
+  }
+  
+  void cxios_get_field_standard_name(field_Ptr field_hdl, char * standard_name, int standard_name_size)
+  {
+    if(!string_copy(field_hdl->standard_name.getValue(),standard_name , standard_name_size))
+      ERROR("void cxios_get_field_standard_name(field_Ptr field_hdl, char * standard_name, int standard_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_unit(field_Ptr field_hdl, const char * unit, int unit_size)
+  {
+    std::string unit_str;
+    if(!cstr2string(unit, unit_size, unit_str)) return;
+    field_hdl->unit.setValue(unit_str);
+    field_hdl->sendAttributToServer(field_hdl->unit);
+  }
+  
+  void cxios_get_field_unit(field_Ptr field_hdl, char * unit, int unit_size)
+  {
+    if(!string_copy(field_hdl->unit.getValue(),unit , unit_size))
+      ERROR("void cxios_get_field_unit(field_Ptr field_hdl, char * unit, int unit_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/fortran_attr_interface/icfieldgroup_attr.cpp
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/icfieldgroup_attr.cpp	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/icfieldgroup_attr.cpp	(revision 314)
@@ -0,0 +1,246 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CFieldGroup*  fieldgroup_Ptr;
+  
+  void cxios_set_fieldgroup_axis_ref(fieldgroup_Ptr fieldgroup_hdl, const char * axis_ref, int axis_ref_size)
+  {
+    std::string axis_ref_str;
+    if(!cstr2string(axis_ref, axis_ref_size, axis_ref_str)) return;
+    fieldgroup_hdl->axis_ref.setValue(axis_ref_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->axis_ref);
+  }
+  
+  void cxios_get_fieldgroup_axis_ref(fieldgroup_Ptr fieldgroup_hdl, char * axis_ref, int axis_ref_size)
+  {
+    if(!string_copy(fieldgroup_hdl->axis_ref.getValue(),axis_ref , axis_ref_size))
+      ERROR("void cxios_get_fieldgroup_axis_ref(fieldgroup_Ptr fieldgroup_hdl, char * axis_ref, int axis_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_default_value(fieldgroup_Ptr fieldgroup_hdl, double default_value)
+  {
+    fieldgroup_hdl->default_value.setValue(default_value);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->default_value);
+  }
+  
+  void cxios_get_fieldgroup_default_value(fieldgroup_Ptr fieldgroup_hdl, double* default_value)
+  {
+    *default_value = fieldgroup_hdl->default_value.getValue();
+  }
+  
+  
+  void cxios_set_fieldgroup_domain_ref(fieldgroup_Ptr fieldgroup_hdl, const char * domain_ref, int domain_ref_size)
+  {
+    std::string domain_ref_str;
+    if(!cstr2string(domain_ref, domain_ref_size, domain_ref_str)) return;
+    fieldgroup_hdl->domain_ref.setValue(domain_ref_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->domain_ref);
+  }
+  
+  void cxios_get_fieldgroup_domain_ref(fieldgroup_Ptr fieldgroup_hdl, char * domain_ref, int domain_ref_size)
+  {
+    if(!string_copy(fieldgroup_hdl->domain_ref.getValue(),domain_ref , domain_ref_size))
+      ERROR("void cxios_get_fieldgroup_domain_ref(fieldgroup_Ptr fieldgroup_hdl, char * domain_ref, int domain_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_enabled(fieldgroup_Ptr fieldgroup_hdl, bool enabled)
+  {
+    fieldgroup_hdl->enabled.setValue(enabled);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->enabled);
+  }
+  
+  void cxios_get_fieldgroup_enabled(fieldgroup_Ptr fieldgroup_hdl, bool* enabled)
+  {
+    *enabled = fieldgroup_hdl->enabled.getValue();
+  }
+  
+  
+  void cxios_set_fieldgroup_field_ref(fieldgroup_Ptr fieldgroup_hdl, const char * field_ref, int field_ref_size)
+  {
+    std::string field_ref_str;
+    if(!cstr2string(field_ref, field_ref_size, field_ref_str)) return;
+    fieldgroup_hdl->field_ref.setValue(field_ref_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->field_ref);
+  }
+  
+  void cxios_get_fieldgroup_field_ref(fieldgroup_Ptr fieldgroup_hdl, char * field_ref, int field_ref_size)
+  {
+    if(!string_copy(fieldgroup_hdl->field_ref.getValue(),field_ref , field_ref_size))
+      ERROR("void cxios_get_fieldgroup_field_ref(fieldgroup_Ptr fieldgroup_hdl, char * field_ref, int field_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_freq_offset(fieldgroup_Ptr fieldgroup_hdl, const char * freq_offset, int freq_offset_size)
+  {
+    std::string freq_offset_str;
+    if(!cstr2string(freq_offset, freq_offset_size, freq_offset_str)) return;
+    fieldgroup_hdl->freq_offset.setValue(freq_offset_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->freq_offset);
+  }
+  
+  void cxios_get_fieldgroup_freq_offset(fieldgroup_Ptr fieldgroup_hdl, char * freq_offset, int freq_offset_size)
+  {
+    if(!string_copy(fieldgroup_hdl->freq_offset.getValue(),freq_offset , freq_offset_size))
+      ERROR("void cxios_get_fieldgroup_freq_offset(fieldgroup_Ptr fieldgroup_hdl, char * freq_offset, int freq_offset_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_freq_op(fieldgroup_Ptr fieldgroup_hdl, const char * freq_op, int freq_op_size)
+  {
+    std::string freq_op_str;
+    if(!cstr2string(freq_op, freq_op_size, freq_op_str)) return;
+    fieldgroup_hdl->freq_op.setValue(freq_op_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->freq_op);
+  }
+  
+  void cxios_get_fieldgroup_freq_op(fieldgroup_Ptr fieldgroup_hdl, char * freq_op, int freq_op_size)
+  {
+    if(!string_copy(fieldgroup_hdl->freq_op.getValue(),freq_op , freq_op_size))
+      ERROR("void cxios_get_fieldgroup_freq_op(fieldgroup_Ptr fieldgroup_hdl, char * freq_op, int freq_op_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_grid_ref(fieldgroup_Ptr fieldgroup_hdl, const char * grid_ref, int grid_ref_size)
+  {
+    std::string grid_ref_str;
+    if(!cstr2string(grid_ref, grid_ref_size, grid_ref_str)) return;
+    fieldgroup_hdl->grid_ref.setValue(grid_ref_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->grid_ref);
+  }
+  
+  void cxios_get_fieldgroup_grid_ref(fieldgroup_Ptr fieldgroup_hdl, char * grid_ref, int grid_ref_size)
+  {
+    if(!string_copy(fieldgroup_hdl->grid_ref.getValue(),grid_ref , grid_ref_size))
+      ERROR("void cxios_get_fieldgroup_grid_ref(fieldgroup_Ptr fieldgroup_hdl, char * grid_ref, int grid_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_group_ref(fieldgroup_Ptr fieldgroup_hdl, const char * group_ref, int group_ref_size)
+  {
+    std::string group_ref_str;
+    if(!cstr2string(group_ref, group_ref_size, group_ref_str)) return;
+    fieldgroup_hdl->group_ref.setValue(group_ref_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->group_ref);
+  }
+  
+  void cxios_get_fieldgroup_group_ref(fieldgroup_Ptr fieldgroup_hdl, char * group_ref, int group_ref_size)
+  {
+    if(!string_copy(fieldgroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+      ERROR("void cxios_get_fieldgroup_group_ref(fieldgroup_Ptr fieldgroup_hdl, char * group_ref, int group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_level(fieldgroup_Ptr fieldgroup_hdl, int level)
+  {
+    fieldgroup_hdl->level.setValue(level);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->level);
+  }
+  
+  void cxios_get_fieldgroup_level(fieldgroup_Ptr fieldgroup_hdl, int* level)
+  {
+    *level = fieldgroup_hdl->level.getValue();
+  }
+  
+  
+  void cxios_set_fieldgroup_long_name(fieldgroup_Ptr fieldgroup_hdl, const char * long_name, int long_name_size)
+  {
+    std::string long_name_str;
+    if(!cstr2string(long_name, long_name_size, long_name_str)) return;
+    fieldgroup_hdl->long_name.setValue(long_name_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->long_name);
+  }
+  
+  void cxios_get_fieldgroup_long_name(fieldgroup_Ptr fieldgroup_hdl, char * long_name, int long_name_size)
+  {
+    if(!string_copy(fieldgroup_hdl->long_name.getValue(),long_name , long_name_size))
+      ERROR("void cxios_get_fieldgroup_long_name(fieldgroup_Ptr fieldgroup_hdl, char * long_name, int long_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_name(fieldgroup_Ptr fieldgroup_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    fieldgroup_hdl->name.setValue(name_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->name);
+  }
+  
+  void cxios_get_fieldgroup_name(fieldgroup_Ptr fieldgroup_hdl, char * name, int name_size)
+  {
+    if(!string_copy(fieldgroup_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_fieldgroup_name(fieldgroup_Ptr fieldgroup_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_operation(fieldgroup_Ptr fieldgroup_hdl, const char * operation, int operation_size)
+  {
+    std::string operation_str;
+    if(!cstr2string(operation, operation_size, operation_str)) return;
+    fieldgroup_hdl->operation.setValue(operation_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->operation);
+  }
+  
+  void cxios_get_fieldgroup_operation(fieldgroup_Ptr fieldgroup_hdl, char * operation, int operation_size)
+  {
+    if(!string_copy(fieldgroup_hdl->operation.getValue(),operation , operation_size))
+      ERROR("void cxios_get_fieldgroup_operation(fieldgroup_Ptr fieldgroup_hdl, char * operation, int operation_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_prec(fieldgroup_Ptr fieldgroup_hdl, int prec)
+  {
+    fieldgroup_hdl->prec.setValue(prec);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->prec);
+  }
+  
+  void cxios_get_fieldgroup_prec(fieldgroup_Ptr fieldgroup_hdl, int* prec)
+  {
+    *prec = fieldgroup_hdl->prec.getValue();
+  }
+  
+  
+  void cxios_set_fieldgroup_standard_name(fieldgroup_Ptr fieldgroup_hdl, const char * standard_name, int standard_name_size)
+  {
+    std::string standard_name_str;
+    if(!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
+    fieldgroup_hdl->standard_name.setValue(standard_name_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->standard_name);
+  }
+  
+  void cxios_get_fieldgroup_standard_name(fieldgroup_Ptr fieldgroup_hdl, char * standard_name, int standard_name_size)
+  {
+    if(!string_copy(fieldgroup_hdl->standard_name.getValue(),standard_name , standard_name_size))
+      ERROR("void cxios_get_fieldgroup_standard_name(fieldgroup_Ptr fieldgroup_hdl, char * standard_name, int standard_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_unit(fieldgroup_Ptr fieldgroup_hdl, const char * unit, int unit_size)
+  {
+    std::string unit_str;
+    if(!cstr2string(unit, unit_size, unit_str)) return;
+    fieldgroup_hdl->unit.setValue(unit_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->unit);
+  }
+  
+  void cxios_get_fieldgroup_unit(fieldgroup_Ptr fieldgroup_hdl, char * unit, int unit_size)
+  {
+    if(!string_copy(fieldgroup_hdl->unit.getValue(),unit , unit_size))
+      ERROR("void cxios_get_fieldgroup_unit(fieldgroup_Ptr fieldgroup_hdl, char * unit, int unit_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/fortran_attr_interface/icfile_attr.cpp
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/icfile_attr.cpp	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/icfile_attr.cpp	(revision 314)
@@ -0,0 +1,117 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CFile*  file_Ptr;
+  
+  void cxios_set_file_description(file_Ptr file_hdl, const char * description, int description_size)
+  {
+    std::string description_str;
+    if(!cstr2string(description, description_size, description_str)) return;
+    file_hdl->description.setValue(description_str);
+    file_hdl->sendAttributToServer(file_hdl->description);
+  }
+  
+  void cxios_get_file_description(file_Ptr file_hdl, char * description, int description_size)
+  {
+    if(!string_copy(file_hdl->description.getValue(),description , description_size))
+      ERROR("void cxios_get_file_description(file_Ptr file_hdl, char * description, int description_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_file_enabled(file_Ptr file_hdl, bool enabled)
+  {
+    file_hdl->enabled.setValue(enabled);
+    file_hdl->sendAttributToServer(file_hdl->enabled);
+  }
+  
+  void cxios_get_file_enabled(file_Ptr file_hdl, bool* enabled)
+  {
+    *enabled = file_hdl->enabled.getValue();
+  }
+  
+  
+  void cxios_set_file_name(file_Ptr file_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    file_hdl->name.setValue(name_str);
+    file_hdl->sendAttributToServer(file_hdl->name);
+  }
+  
+  void cxios_get_file_name(file_Ptr file_hdl, char * name, int name_size)
+  {
+    if(!string_copy(file_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_file_name(file_Ptr file_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_file_name_suffix(file_Ptr file_hdl, const char * name_suffix, int name_suffix_size)
+  {
+    std::string name_suffix_str;
+    if(!cstr2string(name_suffix, name_suffix_size, name_suffix_str)) return;
+    file_hdl->name_suffix.setValue(name_suffix_str);
+    file_hdl->sendAttributToServer(file_hdl->name_suffix);
+  }
+  
+  void cxios_get_file_name_suffix(file_Ptr file_hdl, char * name_suffix, int name_suffix_size)
+  {
+    if(!string_copy(file_hdl->name_suffix.getValue(),name_suffix , name_suffix_size))
+      ERROR("void cxios_get_file_name_suffix(file_Ptr file_hdl, char * name_suffix, int name_suffix_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_file_output_freq(file_Ptr file_hdl, const char * output_freq, int output_freq_size)
+  {
+    std::string output_freq_str;
+    if(!cstr2string(output_freq, output_freq_size, output_freq_str)) return;
+    file_hdl->output_freq.setValue(output_freq_str);
+    file_hdl->sendAttributToServer(file_hdl->output_freq);
+  }
+  
+  void cxios_get_file_output_freq(file_Ptr file_hdl, char * output_freq, int output_freq_size)
+  {
+    if(!string_copy(file_hdl->output_freq.getValue(),output_freq , output_freq_size))
+      ERROR("void cxios_get_file_output_freq(file_Ptr file_hdl, char * output_freq, int output_freq_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_file_output_level(file_Ptr file_hdl, int output_level)
+  {
+    file_hdl->output_level.setValue(output_level);
+    file_hdl->sendAttributToServer(file_hdl->output_level);
+  }
+  
+  void cxios_get_file_output_level(file_Ptr file_hdl, int* output_level)
+  {
+    *output_level = file_hdl->output_level.getValue();
+  }
+  
+  
+  void cxios_set_file_type(file_Ptr file_hdl, const char * type, int type_size)
+  {
+    std::string type_str;
+    if(!cstr2string(type, type_size, type_str)) return;
+    file_hdl->type.setValue(type_str);
+    file_hdl->sendAttributToServer(file_hdl->type);
+  }
+  
+  void cxios_get_file_type(file_Ptr file_hdl, char * type, int type_size)
+  {
+    if(!string_copy(file_hdl->type.getValue(),type , type_size))
+      ERROR("void cxios_get_file_type(file_Ptr file_hdl, char * type, int type_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/fortran_attr_interface/icfilegroup_attr.cpp
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/icfilegroup_attr.cpp	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/icfilegroup_attr.cpp	(revision 314)
@@ -0,0 +1,132 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CFileGroup*  filegroup_Ptr;
+  
+  void cxios_set_filegroup_description(filegroup_Ptr filegroup_hdl, const char * description, int description_size)
+  {
+    std::string description_str;
+    if(!cstr2string(description, description_size, description_str)) return;
+    filegroup_hdl->description.setValue(description_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->description);
+  }
+  
+  void cxios_get_filegroup_description(filegroup_Ptr filegroup_hdl, char * description, int description_size)
+  {
+    if(!string_copy(filegroup_hdl->description.getValue(),description , description_size))
+      ERROR("void cxios_get_filegroup_description(filegroup_Ptr filegroup_hdl, char * description, int description_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_filegroup_enabled(filegroup_Ptr filegroup_hdl, bool enabled)
+  {
+    filegroup_hdl->enabled.setValue(enabled);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->enabled);
+  }
+  
+  void cxios_get_filegroup_enabled(filegroup_Ptr filegroup_hdl, bool* enabled)
+  {
+    *enabled = filegroup_hdl->enabled.getValue();
+  }
+  
+  
+  void cxios_set_filegroup_group_ref(filegroup_Ptr filegroup_hdl, const char * group_ref, int group_ref_size)
+  {
+    std::string group_ref_str;
+    if(!cstr2string(group_ref, group_ref_size, group_ref_str)) return;
+    filegroup_hdl->group_ref.setValue(group_ref_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->group_ref);
+  }
+  
+  void cxios_get_filegroup_group_ref(filegroup_Ptr filegroup_hdl, char * group_ref, int group_ref_size)
+  {
+    if(!string_copy(filegroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+      ERROR("void cxios_get_filegroup_group_ref(filegroup_Ptr filegroup_hdl, char * group_ref, int group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_filegroup_name(filegroup_Ptr filegroup_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    filegroup_hdl->name.setValue(name_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->name);
+  }
+  
+  void cxios_get_filegroup_name(filegroup_Ptr filegroup_hdl, char * name, int name_size)
+  {
+    if(!string_copy(filegroup_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_filegroup_name(filegroup_Ptr filegroup_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_filegroup_name_suffix(filegroup_Ptr filegroup_hdl, const char * name_suffix, int name_suffix_size)
+  {
+    std::string name_suffix_str;
+    if(!cstr2string(name_suffix, name_suffix_size, name_suffix_str)) return;
+    filegroup_hdl->name_suffix.setValue(name_suffix_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->name_suffix);
+  }
+  
+  void cxios_get_filegroup_name_suffix(filegroup_Ptr filegroup_hdl, char * name_suffix, int name_suffix_size)
+  {
+    if(!string_copy(filegroup_hdl->name_suffix.getValue(),name_suffix , name_suffix_size))
+      ERROR("void cxios_get_filegroup_name_suffix(filegroup_Ptr filegroup_hdl, char * name_suffix, int name_suffix_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_filegroup_output_freq(filegroup_Ptr filegroup_hdl, const char * output_freq, int output_freq_size)
+  {
+    std::string output_freq_str;
+    if(!cstr2string(output_freq, output_freq_size, output_freq_str)) return;
+    filegroup_hdl->output_freq.setValue(output_freq_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->output_freq);
+  }
+  
+  void cxios_get_filegroup_output_freq(filegroup_Ptr filegroup_hdl, char * output_freq, int output_freq_size)
+  {
+    if(!string_copy(filegroup_hdl->output_freq.getValue(),output_freq , output_freq_size))
+      ERROR("void cxios_get_filegroup_output_freq(filegroup_Ptr filegroup_hdl, char * output_freq, int output_freq_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_filegroup_output_level(filegroup_Ptr filegroup_hdl, int output_level)
+  {
+    filegroup_hdl->output_level.setValue(output_level);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->output_level);
+  }
+  
+  void cxios_get_filegroup_output_level(filegroup_Ptr filegroup_hdl, int* output_level)
+  {
+    *output_level = filegroup_hdl->output_level.getValue();
+  }
+  
+  
+  void cxios_set_filegroup_type(filegroup_Ptr filegroup_hdl, const char * type, int type_size)
+  {
+    std::string type_str;
+    if(!cstr2string(type, type_size, type_str)) return;
+    filegroup_hdl->type.setValue(type_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->type);
+  }
+  
+  void cxios_get_filegroup_type(filegroup_Ptr filegroup_hdl, char * type, int type_size)
+  {
+    if(!string_copy(filegroup_hdl->type.getValue(),type , type_size))
+      ERROR("void cxios_get_filegroup_type(filegroup_Ptr filegroup_hdl, char * type, int type_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/fortran_attr_interface/icgrid_attr.cpp
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/icgrid_attr.cpp	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/icgrid_attr.cpp	(revision 314)
@@ -0,0 +1,78 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CGrid*  grid_Ptr;
+  
+  void cxios_set_grid_axis_ref(grid_Ptr grid_hdl, const char * axis_ref, int axis_ref_size)
+  {
+    std::string axis_ref_str;
+    if(!cstr2string(axis_ref, axis_ref_size, axis_ref_str)) return;
+    grid_hdl->axis_ref.setValue(axis_ref_str);
+    grid_hdl->sendAttributToServer(grid_hdl->axis_ref);
+  }
+  
+  void cxios_get_grid_axis_ref(grid_Ptr grid_hdl, char * axis_ref, int axis_ref_size)
+  {
+    if(!string_copy(grid_hdl->axis_ref.getValue(),axis_ref , axis_ref_size))
+      ERROR("void cxios_get_grid_axis_ref(grid_Ptr grid_hdl, char * axis_ref, int axis_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_grid_description(grid_Ptr grid_hdl, const char * description, int description_size)
+  {
+    std::string description_str;
+    if(!cstr2string(description, description_size, description_str)) return;
+    grid_hdl->description.setValue(description_str);
+    grid_hdl->sendAttributToServer(grid_hdl->description);
+  }
+  
+  void cxios_get_grid_description(grid_Ptr grid_hdl, char * description, int description_size)
+  {
+    if(!string_copy(grid_hdl->description.getValue(),description , description_size))
+      ERROR("void cxios_get_grid_description(grid_Ptr grid_hdl, char * description, int description_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_grid_domain_ref(grid_Ptr grid_hdl, const char * domain_ref, int domain_ref_size)
+  {
+    std::string domain_ref_str;
+    if(!cstr2string(domain_ref, domain_ref_size, domain_ref_str)) return;
+    grid_hdl->domain_ref.setValue(domain_ref_str);
+    grid_hdl->sendAttributToServer(grid_hdl->domain_ref);
+  }
+  
+  void cxios_get_grid_domain_ref(grid_Ptr grid_hdl, char * domain_ref, int domain_ref_size)
+  {
+    if(!string_copy(grid_hdl->domain_ref.getValue(),domain_ref , domain_ref_size))
+      ERROR("void cxios_get_grid_domain_ref(grid_Ptr grid_hdl, char * domain_ref, int domain_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_grid_name(grid_Ptr grid_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    grid_hdl->name.setValue(name_str);
+    grid_hdl->sendAttributToServer(grid_hdl->name);
+  }
+  
+  void cxios_get_grid_name(grid_Ptr grid_hdl, char * name, int name_size)
+  {
+    if(!string_copy(grid_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_grid_name(grid_Ptr grid_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/fortran_attr_interface/icgridgroup_attr.cpp
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/icgridgroup_attr.cpp	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/icgridgroup_attr.cpp	(revision 314)
@@ -0,0 +1,93 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CGridGroup*  gridgroup_Ptr;
+  
+  void cxios_set_gridgroup_axis_ref(gridgroup_Ptr gridgroup_hdl, const char * axis_ref, int axis_ref_size)
+  {
+    std::string axis_ref_str;
+    if(!cstr2string(axis_ref, axis_ref_size, axis_ref_str)) return;
+    gridgroup_hdl->axis_ref.setValue(axis_ref_str);
+    gridgroup_hdl->sendAttributToServer(gridgroup_hdl->axis_ref);
+  }
+  
+  void cxios_get_gridgroup_axis_ref(gridgroup_Ptr gridgroup_hdl, char * axis_ref, int axis_ref_size)
+  {
+    if(!string_copy(gridgroup_hdl->axis_ref.getValue(),axis_ref , axis_ref_size))
+      ERROR("void cxios_get_gridgroup_axis_ref(gridgroup_Ptr gridgroup_hdl, char * axis_ref, int axis_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_gridgroup_description(gridgroup_Ptr gridgroup_hdl, const char * description, int description_size)
+  {
+    std::string description_str;
+    if(!cstr2string(description, description_size, description_str)) return;
+    gridgroup_hdl->description.setValue(description_str);
+    gridgroup_hdl->sendAttributToServer(gridgroup_hdl->description);
+  }
+  
+  void cxios_get_gridgroup_description(gridgroup_Ptr gridgroup_hdl, char * description, int description_size)
+  {
+    if(!string_copy(gridgroup_hdl->description.getValue(),description , description_size))
+      ERROR("void cxios_get_gridgroup_description(gridgroup_Ptr gridgroup_hdl, char * description, int description_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_gridgroup_domain_ref(gridgroup_Ptr gridgroup_hdl, const char * domain_ref, int domain_ref_size)
+  {
+    std::string domain_ref_str;
+    if(!cstr2string(domain_ref, domain_ref_size, domain_ref_str)) return;
+    gridgroup_hdl->domain_ref.setValue(domain_ref_str);
+    gridgroup_hdl->sendAttributToServer(gridgroup_hdl->domain_ref);
+  }
+  
+  void cxios_get_gridgroup_domain_ref(gridgroup_Ptr gridgroup_hdl, char * domain_ref, int domain_ref_size)
+  {
+    if(!string_copy(gridgroup_hdl->domain_ref.getValue(),domain_ref , domain_ref_size))
+      ERROR("void cxios_get_gridgroup_domain_ref(gridgroup_Ptr gridgroup_hdl, char * domain_ref, int domain_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_gridgroup_group_ref(gridgroup_Ptr gridgroup_hdl, const char * group_ref, int group_ref_size)
+  {
+    std::string group_ref_str;
+    if(!cstr2string(group_ref, group_ref_size, group_ref_str)) return;
+    gridgroup_hdl->group_ref.setValue(group_ref_str);
+    gridgroup_hdl->sendAttributToServer(gridgroup_hdl->group_ref);
+  }
+  
+  void cxios_get_gridgroup_group_ref(gridgroup_Ptr gridgroup_hdl, char * group_ref, int group_ref_size)
+  {
+    if(!string_copy(gridgroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+      ERROR("void cxios_get_gridgroup_group_ref(gridgroup_Ptr gridgroup_hdl, char * group_ref, int group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_gridgroup_name(gridgroup_Ptr gridgroup_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    gridgroup_hdl->name.setValue(name_str);
+    gridgroup_hdl->sendAttributToServer(gridgroup_hdl->name);
+  }
+  
+  void cxios_get_gridgroup_name(gridgroup_Ptr gridgroup_hdl, char * name, int name_size)
+  {
+    if(!string_copy(gridgroup_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_gridgroup_name(gridgroup_Ptr gridgroup_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/fortran_attr_interface/icontext_attr.F90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/icontext_attr.F90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/icontext_attr.F90	(revision 314)
@@ -0,0 +1,137 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE icontext_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE icontext
+  USE context_interface_attr
+  
+CONTAINS
+  
+  SUBROUTINE xios(set_context_attr)  &
+    ( context_id, calendar_type, output_dir, start_date, timestep )
+    
+    IMPLICIT NONE
+      TYPE(txios(context))  :: context_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::context_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: calendar_type
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: output_dir
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: start_date
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: timestep
+      
+      CALL xios(get_context_handle)(context_id,context_hdl)
+      CALL xios(set_context_attr_hdl_)   &
+      ( context_hdl, calendar_type, output_dir, start_date, timestep )
+    
+  END SUBROUTINE xios(set_context_attr)
+  
+  SUBROUTINE xios(set_context_attr_hdl)  &
+    ( context_hdl, calendar_type, output_dir, start_date, timestep )
+    
+    IMPLICIT NONE
+      TYPE(txios(context)) , INTENT(IN) :: context_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: calendar_type
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: output_dir
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: start_date
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: timestep
+      
+      CALL xios(set_context_attr_hdl_)  &
+      ( context_hdl, calendar_type, output_dir, start_date, timestep )
+    
+  END SUBROUTINE xios(set_context_attr_hdl)
+  
+  SUBROUTINE xios(set_context_attr_hdl_)   &
+    ( context_hdl, calendar_type_, output_dir_, start_date_, timestep_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(context)) , INTENT(IN) :: context_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: calendar_type_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: output_dir_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: start_date_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: timestep_
+      
+      IF (PRESENT(calendar_type_)) THEN
+        CALL cxios_set_context_calendar_type(context_hdl%daddr, calendar_type_, len(calendar_type_))
+      ENDIF
+      
+      IF (PRESENT(output_dir_)) THEN
+        CALL cxios_set_context_output_dir(context_hdl%daddr, output_dir_, len(output_dir_))
+      ENDIF
+      
+      IF (PRESENT(start_date_)) THEN
+        CALL cxios_set_context_start_date(context_hdl%daddr, start_date_, len(start_date_))
+      ENDIF
+      
+      IF (PRESENT(timestep_)) THEN
+        CALL cxios_set_context_timestep(context_hdl%daddr, timestep_, len(timestep_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(set_context_attr_hdl_)
+  
+  SUBROUTINE xios(get_context_attr)  &
+    ( context_id, calendar_type, output_dir, start_date, timestep )
+    
+    IMPLICIT NONE
+      TYPE(txios(context))  :: context_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::context_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: calendar_type
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: output_dir
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: start_date
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: timestep
+      
+      CALL xios(get_context_handle)(context_id,context_hdl)
+      CALL xios(get_context_attr_hdl_)   &
+      ( context_hdl, calendar_type, output_dir, start_date, timestep )
+    
+  END SUBROUTINE xios(get_context_attr)
+  
+  SUBROUTINE xios(get_context_attr_hdl)  &
+    ( context_hdl, calendar_type, output_dir, start_date, timestep )
+    
+    IMPLICIT NONE
+      TYPE(txios(context)) , INTENT(IN) :: context_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: calendar_type
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: output_dir
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: start_date
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: timestep
+      
+      CALL xios(get_context_attr_hdl_)  &
+      ( context_hdl, calendar_type, output_dir, start_date, timestep )
+    
+  END SUBROUTINE xios(get_context_attr_hdl)
+  
+  SUBROUTINE xios(get_context_attr_hdl_)   &
+    ( context_hdl, calendar_type_, output_dir_, start_date_, timestep_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(context)) , INTENT(IN) :: context_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: calendar_type_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: output_dir_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: start_date_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: timestep_
+      
+      IF (PRESENT(calendar_type_)) THEN
+        CALL cxios_get_context_calendar_type(context_hdl%daddr, calendar_type_, len(calendar_type_))
+      ENDIF
+      
+      IF (PRESENT(output_dir_)) THEN
+        CALL cxios_get_context_output_dir(context_hdl%daddr, output_dir_, len(output_dir_))
+      ENDIF
+      
+      IF (PRESENT(start_date_)) THEN
+        CALL cxios_get_context_start_date(context_hdl%daddr, start_date_, len(start_date_))
+      ENDIF
+      
+      IF (PRESENT(timestep_)) THEN
+        CALL cxios_get_context_timestep(context_hdl%daddr, timestep_, len(timestep_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(get_context_attr_hdl_)
+  
+END MODULE icontext_attr
Index: /XIOS/trunk/src/fortran_attr_interface/idomain_attr.F90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/idomain_attr.F90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/idomain_attr.F90	(revision 314)
@@ -0,0 +1,555 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE idomain_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE idomain
+  USE domain_interface_attr
+  
+CONTAINS
+  
+  SUBROUTINE xios(set_domain_attr)  &
+    ( domain_id, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni  &
+    , data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask  &
+    , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc  &
+    , zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+    IMPLICIT NONE
+      TYPE(txios(domain))  :: domain_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::domain_id
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_dim
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_i_index(:)
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_j_index(:)
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_n_index
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_group_ref
+      INTEGER  , OPTIONAL, INTENT(IN) :: ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: iend
+      INTEGER  , OPTIONAL, INTENT(IN) :: jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: jend
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: lonvalue(:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      INTEGER  , OPTIONAL, INTENT(IN) :: ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: ni_glo
+      INTEGER  , OPTIONAL, INTENT(IN) :: nj
+      INTEGER  , OPTIONAL, INTENT(IN) :: nj_glo
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni_loc
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_loc
+      
+      CALL xios(get_domain_handle)(domain_id,domain_hdl)
+      CALL xios(set_domain_attr_hdl_)   &
+      ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni  &
+      , data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask  &
+      , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc  &
+      , zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+  END SUBROUTINE xios(set_domain_attr)
+  
+  SUBROUTINE xios(set_domain_attr_hdl)  &
+    ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni  &
+    , data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask  &
+    , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc  &
+    , zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+    IMPLICIT NONE
+      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_dim
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_i_index(:)
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_j_index(:)
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_n_index
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_group_ref
+      INTEGER  , OPTIONAL, INTENT(IN) :: ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: iend
+      INTEGER  , OPTIONAL, INTENT(IN) :: jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: jend
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: lonvalue(:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      INTEGER  , OPTIONAL, INTENT(IN) :: ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: ni_glo
+      INTEGER  , OPTIONAL, INTENT(IN) :: nj
+      INTEGER  , OPTIONAL, INTENT(IN) :: nj_glo
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni_loc
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_loc
+      
+      CALL xios(set_domain_attr_hdl_)  &
+      ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni  &
+      , data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask  &
+      , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc  &
+      , zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+  END SUBROUTINE xios(set_domain_attr_hdl)
+  
+  SUBROUTINE xios(set_domain_attr_hdl_)   &
+    ( domain_hdl, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_n_index_  &
+    , data_ni_, data_nj_, domain_group_ref_, ibegin_, iend_, jbegin_, jend_, latvalue_, long_name_  &
+    , lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_, standard_name_, zoom_ibegin_, zoom_ibegin_loc_  &
+    , zoom_jbegin_, zoom_jbegin_loc_, zoom_ni_, zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_dim_
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_i_index_(:)
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_ibegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_j_index_(:)
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_jbegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_n_index_
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_ni_
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_nj_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_group_ref_
+      INTEGER  , OPTIONAL, INTENT(IN) :: ibegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: iend_
+      INTEGER  , OPTIONAL, INTENT(IN) :: jbegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: jend_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: lonvalue_(:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask__tmp(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
+      INTEGER  , OPTIONAL, INTENT(IN) :: ni_
+      INTEGER  , OPTIONAL, INTENT(IN) :: ni_glo_
+      INTEGER  , OPTIONAL, INTENT(IN) :: nj_
+      INTEGER  , OPTIONAL, INTENT(IN) :: nj_glo_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni_loc_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_loc_
+      
+      IF (PRESENT(data_dim_)) THEN
+        CALL cxios_set_domain_data_dim(domain_hdl%daddr, data_dim_)
+      ENDIF
+      
+      IF (PRESENT(data_i_index_)) THEN
+        CALL cxios_set_domain_data_i_index(domain_hdl%daddr, data_i_index_,size(data_i_index_,1))
+      ENDIF
+      
+      IF (PRESENT(data_ibegin_)) THEN
+        CALL cxios_set_domain_data_ibegin(domain_hdl%daddr, data_ibegin_)
+      ENDIF
+      
+      IF (PRESENT(data_j_index_)) THEN
+        CALL cxios_set_domain_data_j_index(domain_hdl%daddr, data_j_index_,size(data_j_index_,1))
+      ENDIF
+      
+      IF (PRESENT(data_jbegin_)) THEN
+        CALL cxios_set_domain_data_jbegin(domain_hdl%daddr, data_jbegin_)
+      ENDIF
+      
+      IF (PRESENT(data_n_index_)) THEN
+        CALL cxios_set_domain_data_n_index(domain_hdl%daddr, data_n_index_)
+      ENDIF
+      
+      IF (PRESENT(data_ni_)) THEN
+        CALL cxios_set_domain_data_ni(domain_hdl%daddr, data_ni_)
+      ENDIF
+      
+      IF (PRESENT(data_nj_)) THEN
+        CALL cxios_set_domain_data_nj(domain_hdl%daddr, data_nj_)
+      ENDIF
+      
+      IF (PRESENT(domain_group_ref_)) THEN
+        CALL cxios_set_domain_domain_group_ref(domain_hdl%daddr, domain_group_ref_, len(domain_group_ref_))
+      ENDIF
+      
+      IF (PRESENT(ibegin_)) THEN
+        CALL cxios_set_domain_ibegin(domain_hdl%daddr, ibegin_)
+      ENDIF
+      
+      IF (PRESENT(iend_)) THEN
+        CALL cxios_set_domain_iend(domain_hdl%daddr, iend_)
+      ENDIF
+      
+      IF (PRESENT(jbegin_)) THEN
+        CALL cxios_set_domain_jbegin(domain_hdl%daddr, jbegin_)
+      ENDIF
+      
+      IF (PRESENT(jend_)) THEN
+        CALL cxios_set_domain_jend(domain_hdl%daddr, jend_)
+      ENDIF
+      
+      IF (PRESENT(latvalue_)) THEN
+        CALL cxios_set_domain_latvalue(domain_hdl%daddr, latvalue_,size(latvalue_,1))
+      ENDIF
+      
+      IF (PRESENT(long_name_)) THEN
+        CALL cxios_set_domain_long_name(domain_hdl%daddr, long_name_, len(long_name_))
+      ENDIF
+      
+      IF (PRESENT(lonvalue_)) THEN
+        CALL cxios_set_domain_lonvalue(domain_hdl%daddr, lonvalue_,size(lonvalue_,1))
+      ENDIF
+      
+      IF (PRESENT(mask_)) THEN
+        ALLOCATE(mask__tmp(size(mask_,1),size(mask_,2)))
+        mask__tmp=mask_
+        CALL cxios_set_domain_mask(domain_hdl%daddr, mask__tmp,size(mask_,1),size(mask_,2))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_set_domain_name(domain_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(ni_)) THEN
+        CALL cxios_set_domain_ni(domain_hdl%daddr, ni_)
+      ENDIF
+      
+      IF (PRESENT(ni_glo_)) THEN
+        CALL cxios_set_domain_ni_glo(domain_hdl%daddr, ni_glo_)
+      ENDIF
+      
+      IF (PRESENT(nj_)) THEN
+        CALL cxios_set_domain_nj(domain_hdl%daddr, nj_)
+      ENDIF
+      
+      IF (PRESENT(nj_glo_)) THEN
+        CALL cxios_set_domain_nj_glo(domain_hdl%daddr, nj_glo_)
+      ENDIF
+      
+      IF (PRESENT(standard_name_)) THEN
+        CALL cxios_set_domain_standard_name(domain_hdl%daddr, standard_name_, len(standard_name_))
+      ENDIF
+      
+      IF (PRESENT(zoom_ibegin_)) THEN
+        CALL cxios_set_domain_zoom_ibegin(domain_hdl%daddr, zoom_ibegin_)
+      ENDIF
+      
+      IF (PRESENT(zoom_ibegin_loc_)) THEN
+        CALL cxios_set_domain_zoom_ibegin_loc(domain_hdl%daddr, zoom_ibegin_loc_)
+      ENDIF
+      
+      IF (PRESENT(zoom_jbegin_)) THEN
+        CALL cxios_set_domain_zoom_jbegin(domain_hdl%daddr, zoom_jbegin_)
+      ENDIF
+      
+      IF (PRESENT(zoom_jbegin_loc_)) THEN
+        CALL cxios_set_domain_zoom_jbegin_loc(domain_hdl%daddr, zoom_jbegin_loc_)
+      ENDIF
+      
+      IF (PRESENT(zoom_ni_)) THEN
+        CALL cxios_set_domain_zoom_ni(domain_hdl%daddr, zoom_ni_)
+      ENDIF
+      
+      IF (PRESENT(zoom_ni_loc_)) THEN
+        CALL cxios_set_domain_zoom_ni_loc(domain_hdl%daddr, zoom_ni_loc_)
+      ENDIF
+      
+      IF (PRESENT(zoom_nj_)) THEN
+        CALL cxios_set_domain_zoom_nj(domain_hdl%daddr, zoom_nj_)
+      ENDIF
+      
+      IF (PRESENT(zoom_nj_loc_)) THEN
+        CALL cxios_set_domain_zoom_nj_loc(domain_hdl%daddr, zoom_nj_loc_)
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(set_domain_attr_hdl_)
+  
+  SUBROUTINE xios(get_domain_attr)  &
+    ( domain_id, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni  &
+    , data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask  &
+    , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc  &
+    , zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+    IMPLICIT NONE
+      TYPE(txios(domain))  :: domain_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::domain_id
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_dim
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_i_index(:)
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_j_index(:)
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_n_index
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_group_ref
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: iend
+      INTEGER  , OPTIONAL, INTENT(OUT) :: jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: jend
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: lonvalue(:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ni_glo
+      INTEGER  , OPTIONAL, INTENT(OUT) :: nj
+      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_glo
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin_loc
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin_loc
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni_loc
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_loc
+      
+      CALL xios(get_domain_handle)(domain_id,domain_hdl)
+      CALL xios(get_domain_attr_hdl_)   &
+      ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni  &
+      , data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask  &
+      , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc  &
+      , zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+  END SUBROUTINE xios(get_domain_attr)
+  
+  SUBROUTINE xios(get_domain_attr_hdl)  &
+    ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni  &
+    , data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask  &
+    , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc  &
+    , zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+    IMPLICIT NONE
+      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_dim
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_i_index(:)
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_j_index(:)
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_n_index
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_group_ref
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: iend
+      INTEGER  , OPTIONAL, INTENT(OUT) :: jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: jend
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: lonvalue(:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ni_glo
+      INTEGER  , OPTIONAL, INTENT(OUT) :: nj
+      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_glo
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin_loc
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin_loc
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni_loc
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_loc
+      
+      CALL xios(get_domain_attr_hdl_)  &
+      ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni  &
+      , data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask  &
+      , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc  &
+      , zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+  END SUBROUTINE xios(get_domain_attr_hdl)
+  
+  SUBROUTINE xios(get_domain_attr_hdl_)   &
+    ( domain_hdl, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_n_index_  &
+    , data_ni_, data_nj_, domain_group_ref_, ibegin_, iend_, jbegin_, jend_, latvalue_, long_name_  &
+    , lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_, standard_name_, zoom_ibegin_, zoom_ibegin_loc_  &
+    , zoom_jbegin_, zoom_jbegin_loc_, zoom_ni_, zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_dim_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_i_index_(:)
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_ibegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_j_index_(:)
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_jbegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_n_index_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_ni_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_nj_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_group_ref_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ibegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: iend_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: jbegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: jend_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: lonvalue_(:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask__tmp(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ni_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ni_glo_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_glo_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin_loc_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin_loc_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni_loc_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_loc_
+      
+      IF (PRESENT(data_dim_)) THEN
+        CALL cxios_get_domain_data_dim(domain_hdl%daddr, data_dim_)
+      ENDIF
+      
+      IF (PRESENT(data_i_index_)) THEN
+        CALL cxios_get_domain_data_i_index(domain_hdl%daddr, data_i_index_,size(data_i_index_,1))
+      ENDIF
+      
+      IF (PRESENT(data_ibegin_)) THEN
+        CALL cxios_get_domain_data_ibegin(domain_hdl%daddr, data_ibegin_)
+      ENDIF
+      
+      IF (PRESENT(data_j_index_)) THEN
+        CALL cxios_get_domain_data_j_index(domain_hdl%daddr, data_j_index_,size(data_j_index_,1))
+      ENDIF
+      
+      IF (PRESENT(data_jbegin_)) THEN
+        CALL cxios_get_domain_data_jbegin(domain_hdl%daddr, data_jbegin_)
+      ENDIF
+      
+      IF (PRESENT(data_n_index_)) THEN
+        CALL cxios_get_domain_data_n_index(domain_hdl%daddr, data_n_index_)
+      ENDIF
+      
+      IF (PRESENT(data_ni_)) THEN
+        CALL cxios_get_domain_data_ni(domain_hdl%daddr, data_ni_)
+      ENDIF
+      
+      IF (PRESENT(data_nj_)) THEN
+        CALL cxios_get_domain_data_nj(domain_hdl%daddr, data_nj_)
+      ENDIF
+      
+      IF (PRESENT(domain_group_ref_)) THEN
+        CALL cxios_get_domain_domain_group_ref(domain_hdl%daddr, domain_group_ref_, len(domain_group_ref_))
+      ENDIF
+      
+      IF (PRESENT(ibegin_)) THEN
+        CALL cxios_get_domain_ibegin(domain_hdl%daddr, ibegin_)
+      ENDIF
+      
+      IF (PRESENT(iend_)) THEN
+        CALL cxios_get_domain_iend(domain_hdl%daddr, iend_)
+      ENDIF
+      
+      IF (PRESENT(jbegin_)) THEN
+        CALL cxios_get_domain_jbegin(domain_hdl%daddr, jbegin_)
+      ENDIF
+      
+      IF (PRESENT(jend_)) THEN
+        CALL cxios_get_domain_jend(domain_hdl%daddr, jend_)
+      ENDIF
+      
+      IF (PRESENT(latvalue_)) THEN
+        CALL cxios_get_domain_latvalue(domain_hdl%daddr, latvalue_,size(latvalue_,1))
+      ENDIF
+      
+      IF (PRESENT(long_name_)) THEN
+        CALL cxios_get_domain_long_name(domain_hdl%daddr, long_name_, len(long_name_))
+      ENDIF
+      
+      IF (PRESENT(lonvalue_)) THEN
+        CALL cxios_get_domain_lonvalue(domain_hdl%daddr, lonvalue_,size(lonvalue_,1))
+      ENDIF
+      
+      IF (PRESENT(mask_)) THEN
+        ALLOCATE(mask__tmp(size(mask_,1),size(mask_,2)))
+        CALL cxios_get_domain_mask(domain_hdl%daddr, mask__tmp,size(mask_,1),size(mask_,2))
+        mask_=mask__tmp
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_get_domain_name(domain_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(ni_)) THEN
+        CALL cxios_get_domain_ni(domain_hdl%daddr, ni_)
+      ENDIF
+      
+      IF (PRESENT(ni_glo_)) THEN
+        CALL cxios_get_domain_ni_glo(domain_hdl%daddr, ni_glo_)
+      ENDIF
+      
+      IF (PRESENT(nj_)) THEN
+        CALL cxios_get_domain_nj(domain_hdl%daddr, nj_)
+      ENDIF
+      
+      IF (PRESENT(nj_glo_)) THEN
+        CALL cxios_get_domain_nj_glo(domain_hdl%daddr, nj_glo_)
+      ENDIF
+      
+      IF (PRESENT(standard_name_)) THEN
+        CALL cxios_get_domain_standard_name(domain_hdl%daddr, standard_name_, len(standard_name_))
+      ENDIF
+      
+      IF (PRESENT(zoom_ibegin_)) THEN
+        CALL cxios_get_domain_zoom_ibegin(domain_hdl%daddr, zoom_ibegin_)
+      ENDIF
+      
+      IF (PRESENT(zoom_ibegin_loc_)) THEN
+        CALL cxios_get_domain_zoom_ibegin_loc(domain_hdl%daddr, zoom_ibegin_loc_)
+      ENDIF
+      
+      IF (PRESENT(zoom_jbegin_)) THEN
+        CALL cxios_get_domain_zoom_jbegin(domain_hdl%daddr, zoom_jbegin_)
+      ENDIF
+      
+      IF (PRESENT(zoom_jbegin_loc_)) THEN
+        CALL cxios_get_domain_zoom_jbegin_loc(domain_hdl%daddr, zoom_jbegin_loc_)
+      ENDIF
+      
+      IF (PRESENT(zoom_ni_)) THEN
+        CALL cxios_get_domain_zoom_ni(domain_hdl%daddr, zoom_ni_)
+      ENDIF
+      
+      IF (PRESENT(zoom_ni_loc_)) THEN
+        CALL cxios_get_domain_zoom_ni_loc(domain_hdl%daddr, zoom_ni_loc_)
+      ENDIF
+      
+      IF (PRESENT(zoom_nj_)) THEN
+        CALL cxios_get_domain_zoom_nj(domain_hdl%daddr, zoom_nj_)
+      ENDIF
+      
+      IF (PRESENT(zoom_nj_loc_)) THEN
+        CALL cxios_get_domain_zoom_nj_loc(domain_hdl%daddr, zoom_nj_loc_)
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(get_domain_attr_hdl_)
+  
+END MODULE idomain_attr
Index: /XIOS/trunk/src/fortran_attr_interface/idomaingroup_attr.F90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/idomaingroup_attr.F90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/idomaingroup_attr.F90	(revision 314)
@@ -0,0 +1,571 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE idomaingroup_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE idomain
+  USE domaingroup_interface_attr
+  
+CONTAINS
+  
+  SUBROUTINE xios(set_domaingroup_attr)  &
+    ( domaingroup_id, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index  &
+    , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name  &
+    , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc  &
+    , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+    IMPLICIT NONE
+      TYPE(txios(domaingroup))  :: domaingroup_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_dim
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_i_index(:)
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_j_index(:)
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_n_index
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      INTEGER  , OPTIONAL, INTENT(IN) :: ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: iend
+      INTEGER  , OPTIONAL, INTENT(IN) :: jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: jend
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: lonvalue(:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      INTEGER  , OPTIONAL, INTENT(IN) :: ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: ni_glo
+      INTEGER  , OPTIONAL, INTENT(IN) :: nj
+      INTEGER  , OPTIONAL, INTENT(IN) :: nj_glo
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni_loc
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_loc
+      
+      CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl)
+      CALL xios(set_domaingroup_attr_hdl_)   &
+      ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index  &
+      , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name  &
+      , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc  &
+      , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+  END SUBROUTINE xios(set_domaingroup_attr)
+  
+  SUBROUTINE xios(set_domaingroup_attr_hdl)  &
+    ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index  &
+    , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name  &
+    , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc  &
+    , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+    IMPLICIT NONE
+      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_dim
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_i_index(:)
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_j_index(:)
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_n_index
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      INTEGER  , OPTIONAL, INTENT(IN) :: ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: iend
+      INTEGER  , OPTIONAL, INTENT(IN) :: jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: jend
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: lonvalue(:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      INTEGER  , OPTIONAL, INTENT(IN) :: ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: ni_glo
+      INTEGER  , OPTIONAL, INTENT(IN) :: nj
+      INTEGER  , OPTIONAL, INTENT(IN) :: nj_glo
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni_loc
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_loc
+      
+      CALL xios(set_domaingroup_attr_hdl_)  &
+      ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index  &
+      , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name  &
+      , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc  &
+      , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+  END SUBROUTINE xios(set_domaingroup_attr_hdl)
+  
+  SUBROUTINE xios(set_domaingroup_attr_hdl_)   &
+    ( domaingroup_hdl, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_n_index_  &
+    , data_ni_, data_nj_, domain_group_ref_, group_ref_, ibegin_, iend_, jbegin_, jend_, latvalue_  &
+    , long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_, standard_name_, zoom_ibegin_  &
+    , zoom_ibegin_loc_, zoom_jbegin_, zoom_jbegin_loc_, zoom_ni_, zoom_ni_loc_, zoom_nj_, zoom_nj_loc_  &
+     )
+    
+    IMPLICIT NONE
+      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_dim_
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_i_index_(:)
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_ibegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_j_index_(:)
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_jbegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_n_index_
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_ni_
+      INTEGER  , OPTIONAL, INTENT(IN) :: data_nj_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_group_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_
+      INTEGER  , OPTIONAL, INTENT(IN) :: ibegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: iend_
+      INTEGER  , OPTIONAL, INTENT(IN) :: jbegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: jend_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: lonvalue_(:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask__tmp(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
+      INTEGER  , OPTIONAL, INTENT(IN) :: ni_
+      INTEGER  , OPTIONAL, INTENT(IN) :: ni_glo_
+      INTEGER  , OPTIONAL, INTENT(IN) :: nj_
+      INTEGER  , OPTIONAL, INTENT(IN) :: nj_glo_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni_loc_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_loc_
+      
+      IF (PRESENT(data_dim_)) THEN
+        CALL cxios_set_domaingroup_data_dim(domaingroup_hdl%daddr, data_dim_)
+      ENDIF
+      
+      IF (PRESENT(data_i_index_)) THEN
+        CALL cxios_set_domaingroup_data_i_index(domaingroup_hdl%daddr, data_i_index_,size(data_i_index_,1))
+      ENDIF
+      
+      IF (PRESENT(data_ibegin_)) THEN
+        CALL cxios_set_domaingroup_data_ibegin(domaingroup_hdl%daddr, data_ibegin_)
+      ENDIF
+      
+      IF (PRESENT(data_j_index_)) THEN
+        CALL cxios_set_domaingroup_data_j_index(domaingroup_hdl%daddr, data_j_index_,size(data_j_index_,1))
+      ENDIF
+      
+      IF (PRESENT(data_jbegin_)) THEN
+        CALL cxios_set_domaingroup_data_jbegin(domaingroup_hdl%daddr, data_jbegin_)
+      ENDIF
+      
+      IF (PRESENT(data_n_index_)) THEN
+        CALL cxios_set_domaingroup_data_n_index(domaingroup_hdl%daddr, data_n_index_)
+      ENDIF
+      
+      IF (PRESENT(data_ni_)) THEN
+        CALL cxios_set_domaingroup_data_ni(domaingroup_hdl%daddr, data_ni_)
+      ENDIF
+      
+      IF (PRESENT(data_nj_)) THEN
+        CALL cxios_set_domaingroup_data_nj(domaingroup_hdl%daddr, data_nj_)
+      ENDIF
+      
+      IF (PRESENT(domain_group_ref_)) THEN
+        CALL cxios_set_domaingroup_domain_group_ref(domaingroup_hdl%daddr, domain_group_ref_, len(domain_group_ref_))
+      ENDIF
+      
+      IF (PRESENT(group_ref_)) THEN
+        CALL cxios_set_domaingroup_group_ref(domaingroup_hdl%daddr, group_ref_, len(group_ref_))
+      ENDIF
+      
+      IF (PRESENT(ibegin_)) THEN
+        CALL cxios_set_domaingroup_ibegin(domaingroup_hdl%daddr, ibegin_)
+      ENDIF
+      
+      IF (PRESENT(iend_)) THEN
+        CALL cxios_set_domaingroup_iend(domaingroup_hdl%daddr, iend_)
+      ENDIF
+      
+      IF (PRESENT(jbegin_)) THEN
+        CALL cxios_set_domaingroup_jbegin(domaingroup_hdl%daddr, jbegin_)
+      ENDIF
+      
+      IF (PRESENT(jend_)) THEN
+        CALL cxios_set_domaingroup_jend(domaingroup_hdl%daddr, jend_)
+      ENDIF
+      
+      IF (PRESENT(latvalue_)) THEN
+        CALL cxios_set_domaingroup_latvalue(domaingroup_hdl%daddr, latvalue_,size(latvalue_,1))
+      ENDIF
+      
+      IF (PRESENT(long_name_)) THEN
+        CALL cxios_set_domaingroup_long_name(domaingroup_hdl%daddr, long_name_, len(long_name_))
+      ENDIF
+      
+      IF (PRESENT(lonvalue_)) THEN
+        CALL cxios_set_domaingroup_lonvalue(domaingroup_hdl%daddr, lonvalue_,size(lonvalue_,1))
+      ENDIF
+      
+      IF (PRESENT(mask_)) THEN
+        ALLOCATE(mask__tmp(size(mask_,1),size(mask_,2)))
+        mask__tmp=mask_
+        CALL cxios_set_domaingroup_mask(domaingroup_hdl%daddr, mask__tmp,size(mask_,1),size(mask_,2))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_set_domaingroup_name(domaingroup_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(ni_)) THEN
+        CALL cxios_set_domaingroup_ni(domaingroup_hdl%daddr, ni_)
+      ENDIF
+      
+      IF (PRESENT(ni_glo_)) THEN
+        CALL cxios_set_domaingroup_ni_glo(domaingroup_hdl%daddr, ni_glo_)
+      ENDIF
+      
+      IF (PRESENT(nj_)) THEN
+        CALL cxios_set_domaingroup_nj(domaingroup_hdl%daddr, nj_)
+      ENDIF
+      
+      IF (PRESENT(nj_glo_)) THEN
+        CALL cxios_set_domaingroup_nj_glo(domaingroup_hdl%daddr, nj_glo_)
+      ENDIF
+      
+      IF (PRESENT(standard_name_)) THEN
+        CALL cxios_set_domaingroup_standard_name(domaingroup_hdl%daddr, standard_name_, len(standard_name_))
+      ENDIF
+      
+      IF (PRESENT(zoom_ibegin_)) THEN
+        CALL cxios_set_domaingroup_zoom_ibegin(domaingroup_hdl%daddr, zoom_ibegin_)
+      ENDIF
+      
+      IF (PRESENT(zoom_ibegin_loc_)) THEN
+        CALL cxios_set_domaingroup_zoom_ibegin_loc(domaingroup_hdl%daddr, zoom_ibegin_loc_)
+      ENDIF
+      
+      IF (PRESENT(zoom_jbegin_)) THEN
+        CALL cxios_set_domaingroup_zoom_jbegin(domaingroup_hdl%daddr, zoom_jbegin_)
+      ENDIF
+      
+      IF (PRESENT(zoom_jbegin_loc_)) THEN
+        CALL cxios_set_domaingroup_zoom_jbegin_loc(domaingroup_hdl%daddr, zoom_jbegin_loc_)
+      ENDIF
+      
+      IF (PRESENT(zoom_ni_)) THEN
+        CALL cxios_set_domaingroup_zoom_ni(domaingroup_hdl%daddr, zoom_ni_)
+      ENDIF
+      
+      IF (PRESENT(zoom_ni_loc_)) THEN
+        CALL cxios_set_domaingroup_zoom_ni_loc(domaingroup_hdl%daddr, zoom_ni_loc_)
+      ENDIF
+      
+      IF (PRESENT(zoom_nj_)) THEN
+        CALL cxios_set_domaingroup_zoom_nj(domaingroup_hdl%daddr, zoom_nj_)
+      ENDIF
+      
+      IF (PRESENT(zoom_nj_loc_)) THEN
+        CALL cxios_set_domaingroup_zoom_nj_loc(domaingroup_hdl%daddr, zoom_nj_loc_)
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(set_domaingroup_attr_hdl_)
+  
+  SUBROUTINE xios(get_domaingroup_attr)  &
+    ( domaingroup_id, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index  &
+    , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name  &
+    , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc  &
+    , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+    IMPLICIT NONE
+      TYPE(txios(domaingroup))  :: domaingroup_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_dim
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_i_index(:)
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_j_index(:)
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_n_index
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: iend
+      INTEGER  , OPTIONAL, INTENT(OUT) :: jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: jend
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: lonvalue(:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ni_glo
+      INTEGER  , OPTIONAL, INTENT(OUT) :: nj
+      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_glo
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin_loc
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin_loc
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni_loc
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_loc
+      
+      CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl)
+      CALL xios(get_domaingroup_attr_hdl_)   &
+      ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index  &
+      , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name  &
+      , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc  &
+      , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+  END SUBROUTINE xios(get_domaingroup_attr)
+  
+  SUBROUTINE xios(get_domaingroup_attr_hdl)  &
+    ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index  &
+    , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name  &
+    , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc  &
+    , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+    IMPLICIT NONE
+      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_dim
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_i_index(:)
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_j_index(:)
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_n_index
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: iend
+      INTEGER  , OPTIONAL, INTENT(OUT) :: jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: jend
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: lonvalue(:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ni_glo
+      INTEGER  , OPTIONAL, INTENT(OUT) :: nj
+      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_glo
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin_loc
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin_loc
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni_loc
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_loc
+      
+      CALL xios(get_domaingroup_attr_hdl_)  &
+      ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index  &
+      , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name  &
+      , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc  &
+      , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )
+    
+  END SUBROUTINE xios(get_domaingroup_attr_hdl)
+  
+  SUBROUTINE xios(get_domaingroup_attr_hdl_)   &
+    ( domaingroup_hdl, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_n_index_  &
+    , data_ni_, data_nj_, domain_group_ref_, group_ref_, ibegin_, iend_, jbegin_, jend_, latvalue_  &
+    , long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_, standard_name_, zoom_ibegin_  &
+    , zoom_ibegin_loc_, zoom_jbegin_, zoom_jbegin_loc_, zoom_ni_, zoom_ni_loc_, zoom_nj_, zoom_nj_loc_  &
+     )
+    
+    IMPLICIT NONE
+      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_dim_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_i_index_(:)
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_ibegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_j_index_(:)
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_jbegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_n_index_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_ni_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: data_nj_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_group_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ibegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: iend_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: jbegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: jend_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: lonvalue_(:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask__tmp(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ni_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: ni_glo_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_glo_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin_loc_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin_loc_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni_loc_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_loc_
+      
+      IF (PRESENT(data_dim_)) THEN
+        CALL cxios_get_domaingroup_data_dim(domaingroup_hdl%daddr, data_dim_)
+      ENDIF
+      
+      IF (PRESENT(data_i_index_)) THEN
+        CALL cxios_get_domaingroup_data_i_index(domaingroup_hdl%daddr, data_i_index_,size(data_i_index_,1))
+      ENDIF
+      
+      IF (PRESENT(data_ibegin_)) THEN
+        CALL cxios_get_domaingroup_data_ibegin(domaingroup_hdl%daddr, data_ibegin_)
+      ENDIF
+      
+      IF (PRESENT(data_j_index_)) THEN
+        CALL cxios_get_domaingroup_data_j_index(domaingroup_hdl%daddr, data_j_index_,size(data_j_index_,1))
+      ENDIF
+      
+      IF (PRESENT(data_jbegin_)) THEN
+        CALL cxios_get_domaingroup_data_jbegin(domaingroup_hdl%daddr, data_jbegin_)
+      ENDIF
+      
+      IF (PRESENT(data_n_index_)) THEN
+        CALL cxios_get_domaingroup_data_n_index(domaingroup_hdl%daddr, data_n_index_)
+      ENDIF
+      
+      IF (PRESENT(data_ni_)) THEN
+        CALL cxios_get_domaingroup_data_ni(domaingroup_hdl%daddr, data_ni_)
+      ENDIF
+      
+      IF (PRESENT(data_nj_)) THEN
+        CALL cxios_get_domaingroup_data_nj(domaingroup_hdl%daddr, data_nj_)
+      ENDIF
+      
+      IF (PRESENT(domain_group_ref_)) THEN
+        CALL cxios_get_domaingroup_domain_group_ref(domaingroup_hdl%daddr, domain_group_ref_, len(domain_group_ref_))
+      ENDIF
+      
+      IF (PRESENT(group_ref_)) THEN
+        CALL cxios_get_domaingroup_group_ref(domaingroup_hdl%daddr, group_ref_, len(group_ref_))
+      ENDIF
+      
+      IF (PRESENT(ibegin_)) THEN
+        CALL cxios_get_domaingroup_ibegin(domaingroup_hdl%daddr, ibegin_)
+      ENDIF
+      
+      IF (PRESENT(iend_)) THEN
+        CALL cxios_get_domaingroup_iend(domaingroup_hdl%daddr, iend_)
+      ENDIF
+      
+      IF (PRESENT(jbegin_)) THEN
+        CALL cxios_get_domaingroup_jbegin(domaingroup_hdl%daddr, jbegin_)
+      ENDIF
+      
+      IF (PRESENT(jend_)) THEN
+        CALL cxios_get_domaingroup_jend(domaingroup_hdl%daddr, jend_)
+      ENDIF
+      
+      IF (PRESENT(latvalue_)) THEN
+        CALL cxios_get_domaingroup_latvalue(domaingroup_hdl%daddr, latvalue_,size(latvalue_,1))
+      ENDIF
+      
+      IF (PRESENT(long_name_)) THEN
+        CALL cxios_get_domaingroup_long_name(domaingroup_hdl%daddr, long_name_, len(long_name_))
+      ENDIF
+      
+      IF (PRESENT(lonvalue_)) THEN
+        CALL cxios_get_domaingroup_lonvalue(domaingroup_hdl%daddr, lonvalue_,size(lonvalue_,1))
+      ENDIF
+      
+      IF (PRESENT(mask_)) THEN
+        ALLOCATE(mask__tmp(size(mask_,1),size(mask_,2)))
+        CALL cxios_get_domaingroup_mask(domaingroup_hdl%daddr, mask__tmp,size(mask_,1),size(mask_,2))
+        mask_=mask__tmp
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_get_domaingroup_name(domaingroup_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(ni_)) THEN
+        CALL cxios_get_domaingroup_ni(domaingroup_hdl%daddr, ni_)
+      ENDIF
+      
+      IF (PRESENT(ni_glo_)) THEN
+        CALL cxios_get_domaingroup_ni_glo(domaingroup_hdl%daddr, ni_glo_)
+      ENDIF
+      
+      IF (PRESENT(nj_)) THEN
+        CALL cxios_get_domaingroup_nj(domaingroup_hdl%daddr, nj_)
+      ENDIF
+      
+      IF (PRESENT(nj_glo_)) THEN
+        CALL cxios_get_domaingroup_nj_glo(domaingroup_hdl%daddr, nj_glo_)
+      ENDIF
+      
+      IF (PRESENT(standard_name_)) THEN
+        CALL cxios_get_domaingroup_standard_name(domaingroup_hdl%daddr, standard_name_, len(standard_name_))
+      ENDIF
+      
+      IF (PRESENT(zoom_ibegin_)) THEN
+        CALL cxios_get_domaingroup_zoom_ibegin(domaingroup_hdl%daddr, zoom_ibegin_)
+      ENDIF
+      
+      IF (PRESENT(zoom_ibegin_loc_)) THEN
+        CALL cxios_get_domaingroup_zoom_ibegin_loc(domaingroup_hdl%daddr, zoom_ibegin_loc_)
+      ENDIF
+      
+      IF (PRESENT(zoom_jbegin_)) THEN
+        CALL cxios_get_domaingroup_zoom_jbegin(domaingroup_hdl%daddr, zoom_jbegin_)
+      ENDIF
+      
+      IF (PRESENT(zoom_jbegin_loc_)) THEN
+        CALL cxios_get_domaingroup_zoom_jbegin_loc(domaingroup_hdl%daddr, zoom_jbegin_loc_)
+      ENDIF
+      
+      IF (PRESENT(zoom_ni_)) THEN
+        CALL cxios_get_domaingroup_zoom_ni(domaingroup_hdl%daddr, zoom_ni_)
+      ENDIF
+      
+      IF (PRESENT(zoom_ni_loc_)) THEN
+        CALL cxios_get_domaingroup_zoom_ni_loc(domaingroup_hdl%daddr, zoom_ni_loc_)
+      ENDIF
+      
+      IF (PRESENT(zoom_nj_)) THEN
+        CALL cxios_get_domaingroup_zoom_nj(domaingroup_hdl%daddr, zoom_nj_)
+      ENDIF
+      
+      IF (PRESENT(zoom_nj_loc_)) THEN
+        CALL cxios_get_domaingroup_zoom_nj_loc(domaingroup_hdl%daddr, zoom_nj_loc_)
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(get_domaingroup_attr_hdl_)
+  
+END MODULE idomaingroup_attr
Index: /XIOS/trunk/src/fortran_attr_interface/ifield_attr.F90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/ifield_attr.F90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/ifield_attr.F90	(revision 314)
@@ -0,0 +1,309 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE ifield_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE ifield
+  USE field_interface_attr
+  
+CONTAINS
+  
+  SUBROUTINE xios(set_field_attr)  &
+    ( field_id, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_ref  &
+    , level, long_name, name, operation, prec, standard_name, unit )
+    
+    IMPLICIT NONE
+      TYPE(txios(field))  :: field_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::field_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: default_value
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref
+      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: freq_offset
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: freq_op
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: grid_ref
+      INTEGER  , OPTIONAL, INTENT(IN) :: level
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
+      INTEGER  , OPTIONAL, INTENT(IN) :: prec
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit
+      
+      CALL xios(get_field_handle)(field_id,field_hdl)
+      CALL xios(set_field_attr_hdl_)   &
+      ( field_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_ref  &
+      , level, long_name, name, operation, prec, standard_name, unit )
+    
+  END SUBROUTINE xios(set_field_attr)
+  
+  SUBROUTINE xios(set_field_attr_hdl)  &
+    ( field_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_ref  &
+    , level, long_name, name, operation, prec, standard_name, unit )
+    
+    IMPLICIT NONE
+      TYPE(txios(field)) , INTENT(IN) :: field_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: default_value
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref
+      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: freq_offset
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: freq_op
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: grid_ref
+      INTEGER  , OPTIONAL, INTENT(IN) :: level
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
+      INTEGER  , OPTIONAL, INTENT(IN) :: prec
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit
+      
+      CALL xios(set_field_attr_hdl_)  &
+      ( field_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_ref  &
+      , level, long_name, name, operation, prec, standard_name, unit )
+    
+  END SUBROUTINE xios(set_field_attr_hdl)
+  
+  SUBROUTINE xios(set_field_attr_hdl_)   &
+    ( field_hdl, axis_ref_, default_value_, domain_ref_, enabled_, field_ref_, freq_offset_, freq_op_  &
+    , grid_ref_, level_, long_name_, name_, operation_, prec_, standard_name_, unit_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(field)) , INTENT(IN) :: field_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: default_value_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref_
+      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled_
+      LOGICAL (KIND=C_BOOL) :: enabled__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: freq_offset_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: freq_op_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: grid_ref_
+      INTEGER  , OPTIONAL, INTENT(IN) :: level_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation_
+      INTEGER  , OPTIONAL, INTENT(IN) :: prec_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit_
+      
+      IF (PRESENT(axis_ref_)) THEN
+        CALL cxios_set_field_axis_ref(field_hdl%daddr, axis_ref_, len(axis_ref_))
+      ENDIF
+      
+      IF (PRESENT(default_value_)) THEN
+        CALL cxios_set_field_default_value(field_hdl%daddr, default_value_)
+      ENDIF
+      
+      IF (PRESENT(domain_ref_)) THEN
+        CALL cxios_set_field_domain_ref(field_hdl%daddr, domain_ref_, len(domain_ref_))
+      ENDIF
+      
+      IF (PRESENT(enabled_)) THEN
+        enabled__tmp=enabled_
+        CALL cxios_set_field_enabled(field_hdl%daddr, enabled__tmp)
+      ENDIF
+      
+      IF (PRESENT(field_ref_)) THEN
+        CALL cxios_set_field_field_ref(field_hdl%daddr, field_ref_, len(field_ref_))
+      ENDIF
+      
+      IF (PRESENT(freq_offset_)) THEN
+        CALL cxios_set_field_freq_offset(field_hdl%daddr, freq_offset_, len(freq_offset_))
+      ENDIF
+      
+      IF (PRESENT(freq_op_)) THEN
+        CALL cxios_set_field_freq_op(field_hdl%daddr, freq_op_, len(freq_op_))
+      ENDIF
+      
+      IF (PRESENT(grid_ref_)) THEN
+        CALL cxios_set_field_grid_ref(field_hdl%daddr, grid_ref_, len(grid_ref_))
+      ENDIF
+      
+      IF (PRESENT(level_)) THEN
+        CALL cxios_set_field_level(field_hdl%daddr, level_)
+      ENDIF
+      
+      IF (PRESENT(long_name_)) THEN
+        CALL cxios_set_field_long_name(field_hdl%daddr, long_name_, len(long_name_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_set_field_name(field_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(operation_)) THEN
+        CALL cxios_set_field_operation(field_hdl%daddr, operation_, len(operation_))
+      ENDIF
+      
+      IF (PRESENT(prec_)) THEN
+        CALL cxios_set_field_prec(field_hdl%daddr, prec_)
+      ENDIF
+      
+      IF (PRESENT(standard_name_)) THEN
+        CALL cxios_set_field_standard_name(field_hdl%daddr, standard_name_, len(standard_name_))
+      ENDIF
+      
+      IF (PRESENT(unit_)) THEN
+        CALL cxios_set_field_unit(field_hdl%daddr, unit_, len(unit_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(set_field_attr_hdl_)
+  
+  SUBROUTINE xios(get_field_attr)  &
+    ( field_id, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_ref  &
+    , level, long_name, name, operation, prec, standard_name, unit )
+    
+    IMPLICIT NONE
+      TYPE(txios(field))  :: field_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::field_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: default_value
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: field_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: freq_offset
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: freq_op
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: grid_ref
+      INTEGER  , OPTIONAL, INTENT(OUT) :: level
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
+      INTEGER  , OPTIONAL, INTENT(OUT) :: prec
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit
+      
+      CALL xios(get_field_handle)(field_id,field_hdl)
+      CALL xios(get_field_attr_hdl_)   &
+      ( field_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_ref  &
+      , level, long_name, name, operation, prec, standard_name, unit )
+    
+  END SUBROUTINE xios(get_field_attr)
+  
+  SUBROUTINE xios(get_field_attr_hdl)  &
+    ( field_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_ref  &
+    , level, long_name, name, operation, prec, standard_name, unit )
+    
+    IMPLICIT NONE
+      TYPE(txios(field)) , INTENT(IN) :: field_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: default_value
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: field_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: freq_offset
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: freq_op
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: grid_ref
+      INTEGER  , OPTIONAL, INTENT(OUT) :: level
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
+      INTEGER  , OPTIONAL, INTENT(OUT) :: prec
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit
+      
+      CALL xios(get_field_attr_hdl_)  &
+      ( field_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_ref  &
+      , level, long_name, name, operation, prec, standard_name, unit )
+    
+  END SUBROUTINE xios(get_field_attr_hdl)
+  
+  SUBROUTINE xios(get_field_attr_hdl_)   &
+    ( field_hdl, axis_ref_, default_value_, domain_ref_, enabled_, field_ref_, freq_offset_, freq_op_  &
+    , grid_ref_, level_, long_name_, name_, operation_, prec_, standard_name_, unit_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(field)) , INTENT(IN) :: field_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: default_value_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref_
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled_
+      LOGICAL (KIND=C_BOOL) :: enabled__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: field_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: freq_offset_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: freq_op_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: grid_ref_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: level_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: prec_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit_
+      
+      IF (PRESENT(axis_ref_)) THEN
+        CALL cxios_get_field_axis_ref(field_hdl%daddr, axis_ref_, len(axis_ref_))
+      ENDIF
+      
+      IF (PRESENT(default_value_)) THEN
+        CALL cxios_get_field_default_value(field_hdl%daddr, default_value_)
+      ENDIF
+      
+      IF (PRESENT(domain_ref_)) THEN
+        CALL cxios_get_field_domain_ref(field_hdl%daddr, domain_ref_, len(domain_ref_))
+      ENDIF
+      
+      IF (PRESENT(enabled_)) THEN
+        CALL cxios_get_field_enabled(field_hdl%daddr, enabled__tmp)
+        enabled_=enabled__tmp
+      ENDIF
+      
+      IF (PRESENT(field_ref_)) THEN
+        CALL cxios_get_field_field_ref(field_hdl%daddr, field_ref_, len(field_ref_))
+      ENDIF
+      
+      IF (PRESENT(freq_offset_)) THEN
+        CALL cxios_get_field_freq_offset(field_hdl%daddr, freq_offset_, len(freq_offset_))
+      ENDIF
+      
+      IF (PRESENT(freq_op_)) THEN
+        CALL cxios_get_field_freq_op(field_hdl%daddr, freq_op_, len(freq_op_))
+      ENDIF
+      
+      IF (PRESENT(grid_ref_)) THEN
+        CALL cxios_get_field_grid_ref(field_hdl%daddr, grid_ref_, len(grid_ref_))
+      ENDIF
+      
+      IF (PRESENT(level_)) THEN
+        CALL cxios_get_field_level(field_hdl%daddr, level_)
+      ENDIF
+      
+      IF (PRESENT(long_name_)) THEN
+        CALL cxios_get_field_long_name(field_hdl%daddr, long_name_, len(long_name_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_get_field_name(field_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(operation_)) THEN
+        CALL cxios_get_field_operation(field_hdl%daddr, operation_, len(operation_))
+      ENDIF
+      
+      IF (PRESENT(prec_)) THEN
+        CALL cxios_get_field_prec(field_hdl%daddr, prec_)
+      ENDIF
+      
+      IF (PRESENT(standard_name_)) THEN
+        CALL cxios_get_field_standard_name(field_hdl%daddr, standard_name_, len(standard_name_))
+      ENDIF
+      
+      IF (PRESENT(unit_)) THEN
+        CALL cxios_get_field_unit(field_hdl%daddr, unit_, len(unit_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(get_field_attr_hdl_)
+  
+END MODULE ifield_attr
Index: /XIOS/trunk/src/fortran_attr_interface/ifieldgroup_attr.F90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/ifieldgroup_attr.F90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/ifieldgroup_attr.F90	(revision 314)
@@ -0,0 +1,325 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE ifieldgroup_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE ifield
+  USE fieldgroup_interface_attr
+  
+CONTAINS
+  
+  SUBROUTINE xios(set_fieldgroup_attr)  &
+    ( fieldgroup_id, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  &
+    , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit )
+    
+    IMPLICIT NONE
+      TYPE(txios(fieldgroup))  :: fieldgroup_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::fieldgroup_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: default_value
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref
+      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: freq_offset
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: freq_op
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: grid_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      INTEGER  , OPTIONAL, INTENT(IN) :: level
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
+      INTEGER  , OPTIONAL, INTENT(IN) :: prec
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit
+      
+      CALL xios(get_fieldgroup_handle)(fieldgroup_id,fieldgroup_hdl)
+      CALL xios(set_fieldgroup_attr_hdl_)   &
+      ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  &
+      , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit )
+    
+  END SUBROUTINE xios(set_fieldgroup_attr)
+  
+  SUBROUTINE xios(set_fieldgroup_attr_hdl)  &
+    ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  &
+    , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit )
+    
+    IMPLICIT NONE
+      TYPE(txios(fieldgroup)) , INTENT(IN) :: fieldgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: default_value
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref
+      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: freq_offset
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: freq_op
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: grid_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      INTEGER  , OPTIONAL, INTENT(IN) :: level
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
+      INTEGER  , OPTIONAL, INTENT(IN) :: prec
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit
+      
+      CALL xios(set_fieldgroup_attr_hdl_)  &
+      ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  &
+      , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit )
+    
+  END SUBROUTINE xios(set_fieldgroup_attr_hdl)
+  
+  SUBROUTINE xios(set_fieldgroup_attr_hdl_)   &
+    ( fieldgroup_hdl, axis_ref_, default_value_, domain_ref_, enabled_, field_ref_, freq_offset_  &
+    , freq_op_, grid_ref_, group_ref_, level_, long_name_, name_, operation_, prec_, standard_name_  &
+    , unit_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(fieldgroup)) , INTENT(IN) :: fieldgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: default_value_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref_
+      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled_
+      LOGICAL (KIND=C_BOOL) :: enabled__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: freq_offset_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: freq_op_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: grid_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_
+      INTEGER  , OPTIONAL, INTENT(IN) :: level_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation_
+      INTEGER  , OPTIONAL, INTENT(IN) :: prec_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit_
+      
+      IF (PRESENT(axis_ref_)) THEN
+        CALL cxios_set_fieldgroup_axis_ref(fieldgroup_hdl%daddr, axis_ref_, len(axis_ref_))
+      ENDIF
+      
+      IF (PRESENT(default_value_)) THEN
+        CALL cxios_set_fieldgroup_default_value(fieldgroup_hdl%daddr, default_value_)
+      ENDIF
+      
+      IF (PRESENT(domain_ref_)) THEN
+        CALL cxios_set_fieldgroup_domain_ref(fieldgroup_hdl%daddr, domain_ref_, len(domain_ref_))
+      ENDIF
+      
+      IF (PRESENT(enabled_)) THEN
+        enabled__tmp=enabled_
+        CALL cxios_set_fieldgroup_enabled(fieldgroup_hdl%daddr, enabled__tmp)
+      ENDIF
+      
+      IF (PRESENT(field_ref_)) THEN
+        CALL cxios_set_fieldgroup_field_ref(fieldgroup_hdl%daddr, field_ref_, len(field_ref_))
+      ENDIF
+      
+      IF (PRESENT(freq_offset_)) THEN
+        CALL cxios_set_fieldgroup_freq_offset(fieldgroup_hdl%daddr, freq_offset_, len(freq_offset_))
+      ENDIF
+      
+      IF (PRESENT(freq_op_)) THEN
+        CALL cxios_set_fieldgroup_freq_op(fieldgroup_hdl%daddr, freq_op_, len(freq_op_))
+      ENDIF
+      
+      IF (PRESENT(grid_ref_)) THEN
+        CALL cxios_set_fieldgroup_grid_ref(fieldgroup_hdl%daddr, grid_ref_, len(grid_ref_))
+      ENDIF
+      
+      IF (PRESENT(group_ref_)) THEN
+        CALL cxios_set_fieldgroup_group_ref(fieldgroup_hdl%daddr, group_ref_, len(group_ref_))
+      ENDIF
+      
+      IF (PRESENT(level_)) THEN
+        CALL cxios_set_fieldgroup_level(fieldgroup_hdl%daddr, level_)
+      ENDIF
+      
+      IF (PRESENT(long_name_)) THEN
+        CALL cxios_set_fieldgroup_long_name(fieldgroup_hdl%daddr, long_name_, len(long_name_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_set_fieldgroup_name(fieldgroup_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(operation_)) THEN
+        CALL cxios_set_fieldgroup_operation(fieldgroup_hdl%daddr, operation_, len(operation_))
+      ENDIF
+      
+      IF (PRESENT(prec_)) THEN
+        CALL cxios_set_fieldgroup_prec(fieldgroup_hdl%daddr, prec_)
+      ENDIF
+      
+      IF (PRESENT(standard_name_)) THEN
+        CALL cxios_set_fieldgroup_standard_name(fieldgroup_hdl%daddr, standard_name_, len(standard_name_))
+      ENDIF
+      
+      IF (PRESENT(unit_)) THEN
+        CALL cxios_set_fieldgroup_unit(fieldgroup_hdl%daddr, unit_, len(unit_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(set_fieldgroup_attr_hdl_)
+  
+  SUBROUTINE xios(get_fieldgroup_attr)  &
+    ( fieldgroup_id, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  &
+    , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit )
+    
+    IMPLICIT NONE
+      TYPE(txios(fieldgroup))  :: fieldgroup_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::fieldgroup_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: default_value
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: field_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: freq_offset
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: freq_op
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: grid_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      INTEGER  , OPTIONAL, INTENT(OUT) :: level
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
+      INTEGER  , OPTIONAL, INTENT(OUT) :: prec
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit
+      
+      CALL xios(get_fieldgroup_handle)(fieldgroup_id,fieldgroup_hdl)
+      CALL xios(get_fieldgroup_attr_hdl_)   &
+      ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  &
+      , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit )
+    
+  END SUBROUTINE xios(get_fieldgroup_attr)
+  
+  SUBROUTINE xios(get_fieldgroup_attr_hdl)  &
+    ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  &
+    , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit )
+    
+    IMPLICIT NONE
+      TYPE(txios(fieldgroup)) , INTENT(IN) :: fieldgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: default_value
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: field_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: freq_offset
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: freq_op
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: grid_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      INTEGER  , OPTIONAL, INTENT(OUT) :: level
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
+      INTEGER  , OPTIONAL, INTENT(OUT) :: prec
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit
+      
+      CALL xios(get_fieldgroup_attr_hdl_)  &
+      ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  &
+      , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit )
+    
+  END SUBROUTINE xios(get_fieldgroup_attr_hdl)
+  
+  SUBROUTINE xios(get_fieldgroup_attr_hdl_)   &
+    ( fieldgroup_hdl, axis_ref_, default_value_, domain_ref_, enabled_, field_ref_, freq_offset_  &
+    , freq_op_, grid_ref_, group_ref_, level_, long_name_, name_, operation_, prec_, standard_name_  &
+    , unit_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(fieldgroup)) , INTENT(IN) :: fieldgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: default_value_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref_
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled_
+      LOGICAL (KIND=C_BOOL) :: enabled__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: field_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: freq_offset_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: freq_op_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: grid_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: level_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: prec_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit_
+      
+      IF (PRESENT(axis_ref_)) THEN
+        CALL cxios_get_fieldgroup_axis_ref(fieldgroup_hdl%daddr, axis_ref_, len(axis_ref_))
+      ENDIF
+      
+      IF (PRESENT(default_value_)) THEN
+        CALL cxios_get_fieldgroup_default_value(fieldgroup_hdl%daddr, default_value_)
+      ENDIF
+      
+      IF (PRESENT(domain_ref_)) THEN
+        CALL cxios_get_fieldgroup_domain_ref(fieldgroup_hdl%daddr, domain_ref_, len(domain_ref_))
+      ENDIF
+      
+      IF (PRESENT(enabled_)) THEN
+        CALL cxios_get_fieldgroup_enabled(fieldgroup_hdl%daddr, enabled__tmp)
+        enabled_=enabled__tmp
+      ENDIF
+      
+      IF (PRESENT(field_ref_)) THEN
+        CALL cxios_get_fieldgroup_field_ref(fieldgroup_hdl%daddr, field_ref_, len(field_ref_))
+      ENDIF
+      
+      IF (PRESENT(freq_offset_)) THEN
+        CALL cxios_get_fieldgroup_freq_offset(fieldgroup_hdl%daddr, freq_offset_, len(freq_offset_))
+      ENDIF
+      
+      IF (PRESENT(freq_op_)) THEN
+        CALL cxios_get_fieldgroup_freq_op(fieldgroup_hdl%daddr, freq_op_, len(freq_op_))
+      ENDIF
+      
+      IF (PRESENT(grid_ref_)) THEN
+        CALL cxios_get_fieldgroup_grid_ref(fieldgroup_hdl%daddr, grid_ref_, len(grid_ref_))
+      ENDIF
+      
+      IF (PRESENT(group_ref_)) THEN
+        CALL cxios_get_fieldgroup_group_ref(fieldgroup_hdl%daddr, group_ref_, len(group_ref_))
+      ENDIF
+      
+      IF (PRESENT(level_)) THEN
+        CALL cxios_get_fieldgroup_level(fieldgroup_hdl%daddr, level_)
+      ENDIF
+      
+      IF (PRESENT(long_name_)) THEN
+        CALL cxios_get_fieldgroup_long_name(fieldgroup_hdl%daddr, long_name_, len(long_name_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_get_fieldgroup_name(fieldgroup_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(operation_)) THEN
+        CALL cxios_get_fieldgroup_operation(fieldgroup_hdl%daddr, operation_, len(operation_))
+      ENDIF
+      
+      IF (PRESENT(prec_)) THEN
+        CALL cxios_get_fieldgroup_prec(fieldgroup_hdl%daddr, prec_)
+      ENDIF
+      
+      IF (PRESENT(standard_name_)) THEN
+        CALL cxios_get_fieldgroup_standard_name(fieldgroup_hdl%daddr, standard_name_, len(standard_name_))
+      ENDIF
+      
+      IF (PRESENT(unit_)) THEN
+        CALL cxios_get_fieldgroup_unit(fieldgroup_hdl%daddr, unit_, len(unit_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(get_fieldgroup_attr_hdl_)
+  
+END MODULE ifieldgroup_attr
Index: /XIOS/trunk/src/fortran_attr_interface/ifile_attr.F90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/ifile_attr.F90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/ifile_attr.F90	(revision 314)
@@ -0,0 +1,189 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE ifile_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE ifile
+  USE file_interface_attr
+  
+CONTAINS
+  
+  SUBROUTINE xios(set_file_attr)  &
+    ( file_id, description, enabled, name, name_suffix, output_freq, output_level, type )
+    
+    IMPLICIT NONE
+      TYPE(txios(file))  :: file_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::file_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
+      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_suffix
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: output_freq
+      INTEGER  , OPTIONAL, INTENT(IN) :: output_level
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type
+      
+      CALL xios(get_file_handle)(file_id,file_hdl)
+      CALL xios(set_file_attr_hdl_)   &
+      ( file_hdl, description, enabled, name, name_suffix, output_freq, output_level, type )
+    
+  END SUBROUTINE xios(set_file_attr)
+  
+  SUBROUTINE xios(set_file_attr_hdl)  &
+    ( file_hdl, description, enabled, name, name_suffix, output_freq, output_level, type )
+    
+    IMPLICIT NONE
+      TYPE(txios(file)) , INTENT(IN) :: file_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
+      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_suffix
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: output_freq
+      INTEGER  , OPTIONAL, INTENT(IN) :: output_level
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type
+      
+      CALL xios(set_file_attr_hdl_)  &
+      ( file_hdl, description, enabled, name, name_suffix, output_freq, output_level, type )
+    
+  END SUBROUTINE xios(set_file_attr_hdl)
+  
+  SUBROUTINE xios(set_file_attr_hdl_)   &
+    ( file_hdl, description_, enabled_, name_, name_suffix_, output_freq_, output_level_, type_  &
+     )
+    
+    IMPLICIT NONE
+      TYPE(txios(file)) , INTENT(IN) :: file_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_
+      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled_
+      LOGICAL (KIND=C_BOOL) :: enabled__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_suffix_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: output_freq_
+      INTEGER  , OPTIONAL, INTENT(IN) :: output_level_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_
+      
+      IF (PRESENT(description_)) THEN
+        CALL cxios_set_file_description(file_hdl%daddr, description_, len(description_))
+      ENDIF
+      
+      IF (PRESENT(enabled_)) THEN
+        enabled__tmp=enabled_
+        CALL cxios_set_file_enabled(file_hdl%daddr, enabled__tmp)
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_set_file_name(file_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(name_suffix_)) THEN
+        CALL cxios_set_file_name_suffix(file_hdl%daddr, name_suffix_, len(name_suffix_))
+      ENDIF
+      
+      IF (PRESENT(output_freq_)) THEN
+        CALL cxios_set_file_output_freq(file_hdl%daddr, output_freq_, len(output_freq_))
+      ENDIF
+      
+      IF (PRESENT(output_level_)) THEN
+        CALL cxios_set_file_output_level(file_hdl%daddr, output_level_)
+      ENDIF
+      
+      IF (PRESENT(type_)) THEN
+        CALL cxios_set_file_type(file_hdl%daddr, type_, len(type_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(set_file_attr_hdl_)
+  
+  SUBROUTINE xios(get_file_attr)  &
+    ( file_id, description, enabled, name, name_suffix, output_freq, output_level, type )
+    
+    IMPLICIT NONE
+      TYPE(txios(file))  :: file_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::file_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_suffix
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: output_freq
+      INTEGER  , OPTIONAL, INTENT(OUT) :: output_level
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type
+      
+      CALL xios(get_file_handle)(file_id,file_hdl)
+      CALL xios(get_file_attr_hdl_)   &
+      ( file_hdl, description, enabled, name, name_suffix, output_freq, output_level, type )
+    
+  END SUBROUTINE xios(get_file_attr)
+  
+  SUBROUTINE xios(get_file_attr_hdl)  &
+    ( file_hdl, description, enabled, name, name_suffix, output_freq, output_level, type )
+    
+    IMPLICIT NONE
+      TYPE(txios(file)) , INTENT(IN) :: file_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_suffix
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: output_freq
+      INTEGER  , OPTIONAL, INTENT(OUT) :: output_level
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type
+      
+      CALL xios(get_file_attr_hdl_)  &
+      ( file_hdl, description, enabled, name, name_suffix, output_freq, output_level, type )
+    
+  END SUBROUTINE xios(get_file_attr_hdl)
+  
+  SUBROUTINE xios(get_file_attr_hdl_)   &
+    ( file_hdl, description_, enabled_, name_, name_suffix_, output_freq_, output_level_, type_  &
+     )
+    
+    IMPLICIT NONE
+      TYPE(txios(file)) , INTENT(IN) :: file_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled_
+      LOGICAL (KIND=C_BOOL) :: enabled__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_suffix_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: output_freq_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: output_level_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_
+      
+      IF (PRESENT(description_)) THEN
+        CALL cxios_get_file_description(file_hdl%daddr, description_, len(description_))
+      ENDIF
+      
+      IF (PRESENT(enabled_)) THEN
+        CALL cxios_get_file_enabled(file_hdl%daddr, enabled__tmp)
+        enabled_=enabled__tmp
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_get_file_name(file_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(name_suffix_)) THEN
+        CALL cxios_get_file_name_suffix(file_hdl%daddr, name_suffix_, len(name_suffix_))
+      ENDIF
+      
+      IF (PRESENT(output_freq_)) THEN
+        CALL cxios_get_file_output_freq(file_hdl%daddr, output_freq_, len(output_freq_))
+      ENDIF
+      
+      IF (PRESENT(output_level_)) THEN
+        CALL cxios_get_file_output_level(file_hdl%daddr, output_level_)
+      ENDIF
+      
+      IF (PRESENT(type_)) THEN
+        CALL cxios_get_file_type(file_hdl%daddr, type_, len(type_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(get_file_attr_hdl_)
+  
+END MODULE ifile_attr
Index: /XIOS/trunk/src/fortran_attr_interface/ifilegroup_attr.F90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/ifilegroup_attr.F90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/ifilegroup_attr.F90	(revision 314)
@@ -0,0 +1,211 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE ifilegroup_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE ifile
+  USE filegroup_interface_attr
+  
+CONTAINS
+  
+  SUBROUTINE xios(set_filegroup_attr)  &
+    ( filegroup_id, description, enabled, group_ref, name, name_suffix, output_freq, output_level  &
+    , type )
+    
+    IMPLICIT NONE
+      TYPE(txios(filegroup))  :: filegroup_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::filegroup_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
+      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_suffix
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: output_freq
+      INTEGER  , OPTIONAL, INTENT(IN) :: output_level
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type
+      
+      CALL xios(get_filegroup_handle)(filegroup_id,filegroup_hdl)
+      CALL xios(set_filegroup_attr_hdl_)   &
+      ( filegroup_hdl, description, enabled, group_ref, name, name_suffix, output_freq, output_level  &
+      , type )
+    
+  END SUBROUTINE xios(set_filegroup_attr)
+  
+  SUBROUTINE xios(set_filegroup_attr_hdl)  &
+    ( filegroup_hdl, description, enabled, group_ref, name, name_suffix, output_freq, output_level  &
+    , type )
+    
+    IMPLICIT NONE
+      TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
+      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_suffix
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: output_freq
+      INTEGER  , OPTIONAL, INTENT(IN) :: output_level
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type
+      
+      CALL xios(set_filegroup_attr_hdl_)  &
+      ( filegroup_hdl, description, enabled, group_ref, name, name_suffix, output_freq, output_level  &
+      , type )
+    
+  END SUBROUTINE xios(set_filegroup_attr_hdl)
+  
+  SUBROUTINE xios(set_filegroup_attr_hdl_)   &
+    ( filegroup_hdl, description_, enabled_, group_ref_, name_, name_suffix_, output_freq_, output_level_  &
+    , type_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_
+      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled_
+      LOGICAL (KIND=C_BOOL) :: enabled__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_suffix_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: output_freq_
+      INTEGER  , OPTIONAL, INTENT(IN) :: output_level_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_
+      
+      IF (PRESENT(description_)) THEN
+        CALL cxios_set_filegroup_description(filegroup_hdl%daddr, description_, len(description_))
+      ENDIF
+      
+      IF (PRESENT(enabled_)) THEN
+        enabled__tmp=enabled_
+        CALL cxios_set_filegroup_enabled(filegroup_hdl%daddr, enabled__tmp)
+      ENDIF
+      
+      IF (PRESENT(group_ref_)) THEN
+        CALL cxios_set_filegroup_group_ref(filegroup_hdl%daddr, group_ref_, len(group_ref_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_set_filegroup_name(filegroup_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(name_suffix_)) THEN
+        CALL cxios_set_filegroup_name_suffix(filegroup_hdl%daddr, name_suffix_, len(name_suffix_))
+      ENDIF
+      
+      IF (PRESENT(output_freq_)) THEN
+        CALL cxios_set_filegroup_output_freq(filegroup_hdl%daddr, output_freq_, len(output_freq_))
+      ENDIF
+      
+      IF (PRESENT(output_level_)) THEN
+        CALL cxios_set_filegroup_output_level(filegroup_hdl%daddr, output_level_)
+      ENDIF
+      
+      IF (PRESENT(type_)) THEN
+        CALL cxios_set_filegroup_type(filegroup_hdl%daddr, type_, len(type_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(set_filegroup_attr_hdl_)
+  
+  SUBROUTINE xios(get_filegroup_attr)  &
+    ( filegroup_id, description, enabled, group_ref, name, name_suffix, output_freq, output_level  &
+    , type )
+    
+    IMPLICIT NONE
+      TYPE(txios(filegroup))  :: filegroup_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::filegroup_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_suffix
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: output_freq
+      INTEGER  , OPTIONAL, INTENT(OUT) :: output_level
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type
+      
+      CALL xios(get_filegroup_handle)(filegroup_id,filegroup_hdl)
+      CALL xios(get_filegroup_attr_hdl_)   &
+      ( filegroup_hdl, description, enabled, group_ref, name, name_suffix, output_freq, output_level  &
+      , type )
+    
+  END SUBROUTINE xios(get_filegroup_attr)
+  
+  SUBROUTINE xios(get_filegroup_attr_hdl)  &
+    ( filegroup_hdl, description, enabled, group_ref, name, name_suffix, output_freq, output_level  &
+    , type )
+    
+    IMPLICIT NONE
+      TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled
+      LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_suffix
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: output_freq
+      INTEGER  , OPTIONAL, INTENT(OUT) :: output_level
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type
+      
+      CALL xios(get_filegroup_attr_hdl_)  &
+      ( filegroup_hdl, description, enabled, group_ref, name, name_suffix, output_freq, output_level  &
+      , type )
+    
+  END SUBROUTINE xios(get_filegroup_attr_hdl)
+  
+  SUBROUTINE xios(get_filegroup_attr_hdl_)   &
+    ( filegroup_hdl, description_, enabled_, group_ref_, name_, name_suffix_, output_freq_, output_level_  &
+    , type_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled_
+      LOGICAL (KIND=C_BOOL) :: enabled__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_suffix_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: output_freq_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: output_level_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_
+      
+      IF (PRESENT(description_)) THEN
+        CALL cxios_get_filegroup_description(filegroup_hdl%daddr, description_, len(description_))
+      ENDIF
+      
+      IF (PRESENT(enabled_)) THEN
+        CALL cxios_get_filegroup_enabled(filegroup_hdl%daddr, enabled__tmp)
+        enabled_=enabled__tmp
+      ENDIF
+      
+      IF (PRESENT(group_ref_)) THEN
+        CALL cxios_get_filegroup_group_ref(filegroup_hdl%daddr, group_ref_, len(group_ref_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_get_filegroup_name(filegroup_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      IF (PRESENT(name_suffix_)) THEN
+        CALL cxios_get_filegroup_name_suffix(filegroup_hdl%daddr, name_suffix_, len(name_suffix_))
+      ENDIF
+      
+      IF (PRESENT(output_freq_)) THEN
+        CALL cxios_get_filegroup_output_freq(filegroup_hdl%daddr, output_freq_, len(output_freq_))
+      ENDIF
+      
+      IF (PRESENT(output_level_)) THEN
+        CALL cxios_get_filegroup_output_level(filegroup_hdl%daddr, output_level_)
+      ENDIF
+      
+      IF (PRESENT(type_)) THEN
+        CALL cxios_get_filegroup_type(filegroup_hdl%daddr, type_, len(type_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(get_filegroup_attr_hdl_)
+  
+END MODULE ifilegroup_attr
Index: /XIOS/trunk/src/fortran_attr_interface/igrid_attr.F90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/igrid_attr.F90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/igrid_attr.F90	(revision 314)
@@ -0,0 +1,137 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE igrid_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE igrid
+  USE grid_interface_attr
+  
+CONTAINS
+  
+  SUBROUTINE xios(set_grid_attr)  &
+    ( grid_id, axis_ref, description, domain_ref, name )
+    
+    IMPLICIT NONE
+      TYPE(txios(grid))  :: grid_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::grid_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      
+      CALL xios(get_grid_handle)(grid_id,grid_hdl)
+      CALL xios(set_grid_attr_hdl_)   &
+      ( grid_hdl, axis_ref, description, domain_ref, name )
+    
+  END SUBROUTINE xios(set_grid_attr)
+  
+  SUBROUTINE xios(set_grid_attr_hdl)  &
+    ( grid_hdl, axis_ref, description, domain_ref, name )
+    
+    IMPLICIT NONE
+      TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      
+      CALL xios(set_grid_attr_hdl_)  &
+      ( grid_hdl, axis_ref, description, domain_ref, name )
+    
+  END SUBROUTINE xios(set_grid_attr_hdl)
+  
+  SUBROUTINE xios(set_grid_attr_hdl_)   &
+    ( grid_hdl, axis_ref_, description_, domain_ref_, name_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
+      
+      IF (PRESENT(axis_ref_)) THEN
+        CALL cxios_set_grid_axis_ref(grid_hdl%daddr, axis_ref_, len(axis_ref_))
+      ENDIF
+      
+      IF (PRESENT(description_)) THEN
+        CALL cxios_set_grid_description(grid_hdl%daddr, description_, len(description_))
+      ENDIF
+      
+      IF (PRESENT(domain_ref_)) THEN
+        CALL cxios_set_grid_domain_ref(grid_hdl%daddr, domain_ref_, len(domain_ref_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_set_grid_name(grid_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(set_grid_attr_hdl_)
+  
+  SUBROUTINE xios(get_grid_attr)  &
+    ( grid_id, axis_ref, description, domain_ref, name )
+    
+    IMPLICIT NONE
+      TYPE(txios(grid))  :: grid_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::grid_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      
+      CALL xios(get_grid_handle)(grid_id,grid_hdl)
+      CALL xios(get_grid_attr_hdl_)   &
+      ( grid_hdl, axis_ref, description, domain_ref, name )
+    
+  END SUBROUTINE xios(get_grid_attr)
+  
+  SUBROUTINE xios(get_grid_attr_hdl)  &
+    ( grid_hdl, axis_ref, description, domain_ref, name )
+    
+    IMPLICIT NONE
+      TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      
+      CALL xios(get_grid_attr_hdl_)  &
+      ( grid_hdl, axis_ref, description, domain_ref, name )
+    
+  END SUBROUTINE xios(get_grid_attr_hdl)
+  
+  SUBROUTINE xios(get_grid_attr_hdl_)   &
+    ( grid_hdl, axis_ref_, description_, domain_ref_, name_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
+      
+      IF (PRESENT(axis_ref_)) THEN
+        CALL cxios_get_grid_axis_ref(grid_hdl%daddr, axis_ref_, len(axis_ref_))
+      ENDIF
+      
+      IF (PRESENT(description_)) THEN
+        CALL cxios_get_grid_description(grid_hdl%daddr, description_, len(description_))
+      ENDIF
+      
+      IF (PRESENT(domain_ref_)) THEN
+        CALL cxios_get_grid_domain_ref(grid_hdl%daddr, domain_ref_, len(domain_ref_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_get_grid_name(grid_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(get_grid_attr_hdl_)
+  
+END MODULE igrid_attr
Index: /XIOS/trunk/src/fortran_attr_interface/igridgroup_attr.F90
===================================================================
--- /XIOS/trunk/src/fortran_attr_interface/igridgroup_attr.F90	(revision 314)
+++ /XIOS/trunk/src/fortran_attr_interface/igridgroup_attr.F90	(revision 314)
@@ -0,0 +1,151 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE igridgroup_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE igrid
+  USE gridgroup_interface_attr
+  
+CONTAINS
+  
+  SUBROUTINE xios(set_gridgroup_attr)  &
+    ( gridgroup_id, axis_ref, description, domain_ref, group_ref, name )
+    
+    IMPLICIT NONE
+      TYPE(txios(gridgroup))  :: gridgroup_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::gridgroup_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      
+      CALL xios(get_gridgroup_handle)(gridgroup_id,gridgroup_hdl)
+      CALL xios(set_gridgroup_attr_hdl_)   &
+      ( gridgroup_hdl, axis_ref, description, domain_ref, group_ref, name )
+    
+  END SUBROUTINE xios(set_gridgroup_attr)
+  
+  SUBROUTINE xios(set_gridgroup_attr_hdl)  &
+    ( gridgroup_hdl, axis_ref, description, domain_ref, group_ref, name )
+    
+    IMPLICIT NONE
+      TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      
+      CALL xios(set_gridgroup_attr_hdl_)  &
+      ( gridgroup_hdl, axis_ref, description, domain_ref, group_ref, name )
+    
+  END SUBROUTINE xios(set_gridgroup_attr_hdl)
+  
+  SUBROUTINE xios(set_gridgroup_attr_hdl_)   &
+    ( gridgroup_hdl, axis_ref_, description_, domain_ref_, group_ref_, name_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
+      
+      IF (PRESENT(axis_ref_)) THEN
+        CALL cxios_set_gridgroup_axis_ref(gridgroup_hdl%daddr, axis_ref_, len(axis_ref_))
+      ENDIF
+      
+      IF (PRESENT(description_)) THEN
+        CALL cxios_set_gridgroup_description(gridgroup_hdl%daddr, description_, len(description_))
+      ENDIF
+      
+      IF (PRESENT(domain_ref_)) THEN
+        CALL cxios_set_gridgroup_domain_ref(gridgroup_hdl%daddr, domain_ref_, len(domain_ref_))
+      ENDIF
+      
+      IF (PRESENT(group_ref_)) THEN
+        CALL cxios_set_gridgroup_group_ref(gridgroup_hdl%daddr, group_ref_, len(group_ref_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_set_gridgroup_name(gridgroup_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(set_gridgroup_attr_hdl_)
+  
+  SUBROUTINE xios(get_gridgroup_attr)  &
+    ( gridgroup_id, axis_ref, description, domain_ref, group_ref, name )
+    
+    IMPLICIT NONE
+      TYPE(txios(gridgroup))  :: gridgroup_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::gridgroup_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      
+      CALL xios(get_gridgroup_handle)(gridgroup_id,gridgroup_hdl)
+      CALL xios(get_gridgroup_attr_hdl_)   &
+      ( gridgroup_hdl, axis_ref, description, domain_ref, group_ref, name )
+    
+  END SUBROUTINE xios(get_gridgroup_attr)
+  
+  SUBROUTINE xios(get_gridgroup_attr_hdl)  &
+    ( gridgroup_hdl, axis_ref, description, domain_ref, group_ref, name )
+    
+    IMPLICIT NONE
+      TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      
+      CALL xios(get_gridgroup_attr_hdl_)  &
+      ( gridgroup_hdl, axis_ref, description, domain_ref, group_ref, name )
+    
+  END SUBROUTINE xios(get_gridgroup_attr_hdl)
+  
+  SUBROUTINE xios(get_gridgroup_attr_hdl_)   &
+    ( gridgroup_hdl, axis_ref_, description_, domain_ref_, group_ref_, name_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
+      
+      IF (PRESENT(axis_ref_)) THEN
+        CALL cxios_get_gridgroup_axis_ref(gridgroup_hdl%daddr, axis_ref_, len(axis_ref_))
+      ENDIF
+      
+      IF (PRESENT(description_)) THEN
+        CALL cxios_get_gridgroup_description(gridgroup_hdl%daddr, description_, len(description_))
+      ENDIF
+      
+      IF (PRESENT(domain_ref_)) THEN
+        CALL cxios_get_gridgroup_domain_ref(gridgroup_hdl%daddr, domain_ref_, len(domain_ref_))
+      ENDIF
+      
+      IF (PRESENT(group_ref_)) THEN
+        CALL cxios_get_gridgroup_group_ref(gridgroup_hdl%daddr, group_ref_, len(group_ref_))
+      ENDIF
+      
+      IF (PRESENT(name_)) THEN
+        CALL cxios_get_gridgroup_name(gridgroup_hdl%daddr, name_, len(name_))
+      ENDIF
+      
+      
+    
+  END SUBROUTINE xios(get_gridgroup_attr_hdl_)
+  
+END MODULE igridgroup_attr
Index: OS/trunk/src/linear_buffer.cpp
===================================================================
--- /XIOS/trunk/src/linear_buffer.cpp	(revision 313)
+++ 	(revision )
@@ -1,300 +1,0 @@
-#include "linear_buffer.hpp"
-
-#include "linear_buffer_impl.hpp"
-
-namespace xmlioserver
-{
-   namespace comm
-   {
-      /// ////////////////////// DÃ©finitions ////////////////////// ///
-      CLinearBuffer::CLinearBuffer(char * data, StdSize size)
-         : SuperClass(data, size), bdata(), p_write(size)
-      { this->computeBufferData(); }
-
-      CLinearBuffer::CLinearBuffer(StdSize size)
-         : SuperClass(size), bdata(), p_write(0)
-      { /* Ne rien faire de plus */ }
-      
-      CLinearBuffer::CLinearBuffer(const CLinearBuffer & lbuffer)
-         : SuperClass(lbuffer), bdata(lbuffer.bdata), p_write(lbuffer.p_write)
-      { /* Ne rien faire de plus */ }
-      
-      CLinearBuffer::CLinearBuffer(const CLinearBuffer * const lbuffer)
-         : SuperClass(lbuffer), bdata(lbuffer->bdata), p_write(lbuffer->p_write)      
-      { /* Ne rien faire de plus */ }
-      
-      CLinearBuffer::~CLinearBuffer(void)
-      { /* Ne rien faire de plus */ }
-
-      ///--------------------------------------------------------------
-
-      long int * CLinearBuffer::NULL_ARG = NULL;
-
-      //---------------------------------------------------------------
-
-      void CLinearBuffer::clear(void)
-      { 
-         this->bdata.clear();
-         //SuperClass::fillData('\0', SuperClass::getSize(), 0);
-         this->p_write = 0;
-      }
-      
-      //---------------------------------------------------------------
-      
-      StdSize CLinearBuffer::getUsedSize(void) const
-      { 
-         return (this->p_write); 
-      }
-      
-      //---------------------------------------------------------------
-      
-      StdSize CLinearBuffer::getUnusedSize(void) const
-      {
-          return (SuperClass::getSize() - this->getUsedSize()); 
-      }
-
-      //---------------------------------------------------------------
-
-#define CLinearBufferGetter(type, Type) \
-   type CLinearBuffer::get##Type(StdSize position) const     \
-   {                                                         \
-      if (position >= bdata.size())                          \
-         ERROR("CLinearBuffer::get"#Type"(position)",        \
-               << " invalid position !");                    \
-      return (SuperClass::get##Type(this->bdata[position])); \
-   }
-
-      CLinearBufferGetter(char     , Char)
-      CLinearBufferGetter(bool     , Bool)
-      CLinearBufferGetter(float    , Float)
-      CLinearBufferGetter(double   , Double)
-      CLinearBufferGetter(long int , Int)
-
-#undef CLinearBufferGetter
-
-      //---------------------------------------------------------------
-
-#define CLinearBufferArrayGetter(type, Type) \
-   ARRAY(type, 1) CLinearBuffer::get##Type##Array(StdSize position) const \
-   {                                                                      \
-      if (position >= bdata.size())                                       \
-         ERROR("CLinearBuffer::get"#Type"Array(position)",                \
-               << " invalid position !");                                 \
-      return (SuperClass::get##Type##Array(this->bdata[position]));       \
-   }
-
-      CLinearBufferArrayGetter(char     , Char)
-      CLinearBufferArrayGetter(bool     , Bool)
-      CLinearBufferArrayGetter(float    , Float)
-      CLinearBufferArrayGetter(double   , Double)
-      CLinearBufferArrayGetter(long int , Int)
-
-#undef CLinearBufferArrayGetter
-
-      StdString CLinearBuffer::getString(StdSize position) const
-      { return (SuperClass::getString(this->bdata[position])); }
-
-      //---------------------------------------------------------------
-
-#define CLinearBufferSetter(type, Type)                        \
-      void  CLinearBuffer::append##Type(type value)            \
-      {                                                        \
-         this->bdata.push_back(this->p_write);                 \
-         SuperClass::set##Type(value, this->p_write);          \
-         this->p_write += SuperClass::getRequestedSize(value); \
-      }
-
-      CLinearBufferSetter(char     , Char)
-      CLinearBufferSetter(bool     , Bool)
-      CLinearBufferSetter(float    , Float)
-      CLinearBufferSetter(double   , Double)
-      CLinearBufferSetter(long int , Int)
-
-#undef CLinearBufferSetter
-
-      //---------------------------------------------------------------
-
-#define CLinearBufferArraySetter(type, Type) \
-      void  CLinearBuffer::append##Type##Array(ARRAY(type, 1) value) \
-      {                                                              \
-         this->bdata.push_back(this->p_write);                       \
-         SuperClass::set##Type##Array(value, this->p_write);         \
-         this->p_write += SuperClass::getRequestedSize(value);       \
-      }
-
-      CLinearBufferArraySetter(char     , Char)
-      CLinearBufferArraySetter(bool     , Bool)
-      CLinearBufferArraySetter(float    , Float)
-      CLinearBufferArraySetter(double   , Double)
-      CLinearBufferArraySetter(long int , Int)
-
-#undef CLinearBufferArrayAppend
-
-      void CLinearBuffer::appendString(const StdString & value)
-      {
-         ARRAY_CREATE(arr, char, 1, [value.size()]);
-         std::copy(value.data(), &(value.data()[value.size()]), arr->data());
-         this->appendCharArray(arr);
-      }
-
-      //---------------------------------------------------------------
-
-      StdSize CLinearBuffer::getNumberOfStoredData(void) const
-      { 
-         return (this->bdata.size()); 
-      }
-      
-      //---------------------------------------------------------------
-      
-      std::vector<StdSize> CLinearBuffer::getPositionsOfStoredData(void) const
-      {
-         std::vector<StdSize> retvalue;
-         std::vector<StdSize>::const_iterator it = this->bdata.begin(), end = this->bdata.end();
-         for (;it != end; it++)
-         {
-            StdSize pos = *it;
-            CBufferData bufdata;
-            SuperClass::getBufferData(bufdata, pos);
-            retvalue.push_back(bufdata.position);
-         }
-
-         return (retvalue);
-      }
-      
-      //---------------------------------------------------------------
-      
-      std::vector<StdSize> CLinearBuffer::getSizesOfStoredData(void) const
-      {
-         std::vector<StdSize> retvalue;
-         std::vector<StdSize>::const_iterator it = this->bdata.begin(), end = this->bdata.end();
-         for (;it != end; it++)
-         {
-            StdSize pos = *it;
-            CBufferData bufdata;
-            SuperClass::getBufferData(bufdata, pos);
-            retvalue.push_back(bufdata.size);
-         }
-         return (retvalue);
-      }
-      
-      //---------------------------------------------------------------
-      
-      std::vector<std::pair<CBuffer::CBufferDataType, bool> >
-         CLinearBuffer::getTypesOfStoredData(void) const
-      {
-         std::vector<std::pair<CBufferDataType, bool> > retvalue;
-         std::vector<StdSize>::const_iterator it = this->bdata.begin(), end = this->bdata.end();
-         for (;it != end; it++)
-         {
-            StdSize pos = *it;
-            CBufferData bufdata;
-            SuperClass::getBufferData(bufdata, pos);
-            retvalue.push_back(std::make_pair(bufdata.type, bufdata.isArray));
-         }
-
-         return (retvalue);
-      }
-
-      //---------------------------------------------------------------
-
-      void CLinearBuffer::computeBufferData(void)
-      {
-
-         CBufferData bufdata; this->clear();
-         StdSize total_size = SuperClass::getSize();
-         int i = 0;
-         while ((1000 >= i++) && (p_write != total_size))
-         {
-            bdata.push_back(this->p_write);
-            SuperClass::updateBufferData(this->p_write);
-            SuperClass::getBufferData(bufdata, this->p_write);
-            this->p_write = (bufdata.size + bufdata.position);
-         }
-      }
-
-      //---------------------------------------------------------------
-
-      void CLinearBuffer::appendRequestInfos(const long int & managerId,
-                                             const long int & methodId,
-                                             const long int & nbargs)
-      {
-         this->appendInt(managerId);
-         this->appendInt(methodId);
-         this->appendInt(nbargs);
-      }
-
-      void CLinearBuffer::getRequestInfos(StdSize position,
-                           long int & managerId, long int & methodId, long int & nbargs)
-      {
-         managerId = this->getInt(position);
-         methodId  = this->getInt(position+1);
-         nbargs    = this->getInt(position+2);
-      }
-
-
-      //---------------------------------------------------------------
-
-      void CLinearBuffer::printToTextFile (const StdString & filename)
-      {
-         StdOFStream ofs(filename.c_str());
-         this->printToTextStream(ofs);
-         ofs.close();
-      }
-
-      void CLinearBuffer::printToTextStream (StdOStream & ostr)
-      { // A amÃ©liorer ....
-         StdSize position = 0;
-         typedef std::pair<CBufferDataType, bool> pairBufBool;
-         std::vector<pairBufBool> vect = this->getTypesOfStoredData();
-         ostr << "|";
-         
-         std::vector<pairBufBool>::const_iterator it = vect.begin(), end = vect.end();
-         for (;it != end; it++)
-         {
-            pairBufBool elm = *it;
-            ostr << "|";
-            if (!elm.second)
-            {
-               switch (elm.first)
-               {
-                  case (TBOOL8):    ostr << this->getBool(position);
-                     break;
-                  case (TINT32):    ostr << this->getInt(position);
-                     break;
-                  case (TCHAR8):    ostr << this->getChar(position);
-                     break;
-                  case (TFLOAT32):  ostr << this->getFloat(position);
-                     break;
-                  case (TDOUBLE64): ostr << this->getDouble(position);
-                     break;
-                  default :
-                     return;
-               }
-            }
-            else
-            {
-               switch (elm.first)
-               {
-                  case (TBOOL8):    ostr << this->getBoolArray(position);
-                     break;
-                  case (TINT32):    ostr << this->getIntArray(position);
-                     break;
-                  case (TCHAR8):    ostr << this->getCharArray(position);
-                     break;
-                  case (TFLOAT32):  ostr << this->getFloatArray(position);
-                     break;
-                  case (TDOUBLE64): ostr << this->getDoubleArray(position);
-                     break;
-                  default :
-                     return;
-               }
-            }
-            position++;
-         }
-      }
-
-      ///--------------------------------------------------------------
-
-   } // namespace tree
-} // namespace xmlioserver
-
Index: OS/trunk/src/linear_buffer.hpp
===================================================================
--- /XIOS/trunk/src/linear_buffer.hpp	(revision 313)
+++ 	(revision )
@@ -1,133 +1,0 @@
-#ifndef __XMLIO_CLinearBuffer__
-#define __XMLIO_CLinearBuffer__
-
-/// xmlioserver headers ///
-#include "xmlioserver_spl.hpp"
-#include "buffer.hpp"
-
-#define _NULL_ARG xmlioserver::comm::CLinearBuffer::NULL_ARG
-
-namespace xmlioserver
-{
-   namespace comm
-   {
-      /// ////////////////////// DÃ©clarations ////////////////////// ///
-      class CLinearBuffer
-         : public CBuffer
-      {
-            /// DÃ©finition de type ///
-            typedef CBuffer SuperClass;
-
-         public /* static */ :
-
-            static long int * NULL_ARG;
-            friend class CMPIManager;
-
-         public :
-
-            /// Construteurs ///
-
-            explicit CLinearBuffer(StdSize size = BUFFER_CLIENT_SIZE);
-            CLinearBuffer(char * data, StdSize size);
-            CLinearBuffer(const CLinearBuffer & lbuffer);
-            CLinearBuffer(const CLinearBuffer * const lbuffer);
-
-            /// Accesseurs ///
-            StdSize getUsedSize(void) const;
-            StdSize getUnusedSize(void) const;
-
-            StdSize getNumberOfStoredData(void) const;
-            std::vector<StdSize> getPositionsOfStoredData(void) const;
-            std::vector<StdSize> getSizesOfStoredData(void) const;
-            std::vector<std::pair<CBufferDataType, bool> > getTypesOfStoredData(void) const;
-
-         //--------------------------------------------------------------
-            char     getChar  (StdSize position) const;
-            bool     getBool  (StdSize position) const;
-            float    getFloat (StdSize position) const;
-            double   getDouble(StdSize position) const;
-            long int getInt   (StdSize position) const;
-
-            StdString getString(StdSize position) const;
-
-            ARRAY(char,     1) getCharArray  (StdSize position) const;
-            ARRAY(bool,     1) getBoolArray  (StdSize position) const;
-            ARRAY(float,    1) getFloatArray (StdSize position) const;
-            ARRAY(double,   1) getDoubleArray(StdSize position) const;
-            ARRAY(long int, 1) getIntArray   (StdSize position) const;
-
-         //--------------------------------------------------------------
-
-            void getRequestInfos(StdSize position,
-                     long int & managerId, long int & methodId, long int & nbargs);
-
-         //--------------------------------------------------------------
-            /// Mutateurs ///
-            void appendChar  (char     value) ;
-            void appendBool  (bool     value) ;
-            void appendFloat (float    value) ;
-            void appendDouble(double   value) ;
-            void appendInt   (long int value) ;
-
-            void appendString(const StdString & value) ;
-
-            void appendCharArray  (ARRAY(char,     1) value) ;
-            void appendBoolArray  (ARRAY(bool,     1) value) ;
-            void appendFloatArray (ARRAY(float,    1) value) ;
-            void appendDoubleArray(ARRAY(double,   1) value) ;
-            void appendIntArray   (ARRAY(long int, 1) value) ;
-
-         //--------------------------------------------------------------
-
-            void appendRequestInfos(const long int & managerId,
-                                    const long int & methodId,
-                                    const long int & nbargs);
-
-         //--------------------------------------------------------------
-            virtual void clear(void);
-
-            /// Test ///
-            template <typename A1, typename A2, typename A3, typename A4>
-               inline StdSize getRequestedSize(A1 * arg1 = NULL_ARG,
-                                               A2 * arg2 = NULL_ARG,
-                                               A3 * arg3 = NULL_ARG,
-                                               A4 * arg4 = NULL_ARG) const;
-
-            /// Sortie fichier ascii ///
-            virtual void printToTextFile (const StdString & filename);
-            virtual void printToTextStream (StdOStream & ostr);
-
-            /// Destructeur ///
-            virtual ~CLinearBuffer(void);
-
-         protected :
-
-            /// Accesseurs protÃ©gÃ©s ///
-            template <class T>
-               inline void getLData(T & data, StdSize position) const;
-            template <class T>
-               inline void getLDataArray(ARRAY(T, 1) data, StdSize position) const;
-
-            /// Mutateurs protÃ©gÃ©s ///
-            template <class T>
-               inline void appendLData(const T & data);
-            template <class T>
-               inline void appendLDataArray(ARRAY(T, 1) data);
-
-         private :
-
-            /// Traitement ///
-            void computeBufferData(void);
-
-            /// PropriÃ©tÃ©s privÃ©es ///
-            std::vector<StdSize> bdata;
-            StdSize p_write;
-
-      }; // class CLinearBuffer
-
-      ///----------------------------------------------------------------
-
-   } // namespace comm
-} // namespace xmlioserver
-
-#endif // __XMLIO_CLinearBuffer__
Index: OS/trunk/src/linear_buffer_impl.hpp
===================================================================
--- /XIOS/trunk/src/linear_buffer_impl.hpp	(revision 313)
+++ 	(revision )
@@ -1,69 +1,0 @@
-#ifndef __XMLIO_CLinearBuffer_impl__
-#define __XMLIO_CLinearBuffer_impl__
-
-#include "buffer_impl.hpp"
-
-namespace xmlioserver
-{
-   namespace comm
-   {
-      /// ////////////////// DÃ©finitions (inline) /////////////////// ///
-
-      template <class T>
-         void CLinearBuffer::getLData(T & data, StdSize position) const
-      {
-         if (position >= bdata.size())
-            ERROR("CLinearBuffer::getData(position)",
-                  << " invalid position !");
-         SuperClass::getData(data, this->bdata[position]);
-      }
-
-      template <class T>
-          void CLinearBuffer::getLDataArray(ARRAY(T, 1) data, StdSize position) const
-      {
-         if (position >= bdata.size())
-            ERROR("CLinearBuffer::getDataArray(position)",
-                  << " invalid position !");
-         SuperClass::getDataArray(data, this->bdata[position]);
-      }
-
-      //---------------------------------------------------------------
-
-      template <class T>
-         void CLinearBuffer::appendLData(const T & data)
-      {
-         this->bdata.push_back(this->p_write);
-         SuperClass::setData(data, this->p_write);
-         this->p_write += SuperClass::getRequestedSize(data);
-      }
-
-      template <class T>
-         void CLinearBuffer::appendLDataArray(ARRAY(T, 1) data)
-      {
-         this->bdata.push_back(this->p_write);
-         SuperClass::setDataArray(data, this->p_write);
-         this->p_write += SuperClass::getRequestedSize(data);
-      }
-      //---------------------------------------------------------------
-
-      template <typename A1, typename A2, typename A3, typename A4>
-         StdSize CLinearBuffer::getRequestedSize
-          ( A1 * arg1, A2 * arg2, A3 * arg3, A4 * arg4) const
-      {
-         StdSize retvalue = 0;
-         long int nbarg   = 0;
-         retvalue += 3 * SuperClass::getRequestedSize(nbarg);
-
-         if (arg1 != NULL) retvalue += SuperClass::getRequestedSize(*arg1);
-         if (arg2 != NULL) retvalue += SuperClass::getRequestedSize(*arg2);
-         if (arg3 != NULL) retvalue += SuperClass::getRequestedSize(*arg3);
-         if (arg4 != NULL) retvalue += SuperClass::getRequestedSize(*arg4);
-         return (retvalue);
-      }
-
-      ///----------------------------------------------------------------
-
-   } // namespace comm
-} // namespace xmlioserver
-
-#endif // __XMLIO_CLinearBuffer_impl__
Index: OS/trunk/src/main_server.cpp
===================================================================
--- /XIOS/trunk/src/main_server.cpp	(revision 313)
+++ 	(revision )
@@ -1,49 +1,0 @@
-// XmlIOServer
-#include "xmlioserver.hpp"
-
-#include "attribute_template_impl.hpp"
-#include "group_template_impl.hpp"
-
-#include "client.hpp"
-#include "server.hpp"
-#include "oasis_cinterface.hpp"
-#include <string>
-#include <iostream>
-
-#include <unistd.h>
-
-
-
-// Point d'entrÃ©e du programme principal
-
-int main (int argc, char ** argv, char ** UNUSED (env))
-{
-   try
-   {
-      MPI_Comm comm_client=MPI_COMM_NULL, comm_client_server=MPI_COMM_NULL, comm_server=MPI_COMM_NULL, comm_parent=MPI_COMM_NULL;
-//      sleep(60) ;
-      CTreeManager::ParseFile("iodef.xml");
-
-      CTreeManager::SetCurrentContextId(StdString("xios"));
-      boost::shared_ptr<CVariable> var = CObjectFactory::GetObject<CVariable>("buffer_client_size"); 
-     
-//      oasis_init(std::string("ionemo")) ;
-//      oasis_get_intracomm(comm_parent,std::string("oceanx")) ;
-      CXIOSManager::Initialise(CXIOSManager::CLIENT_SERVER, &argc, &argv);
-     
-      CMPIManager::DispatchClient(true, comm_client, comm_client_server, comm_server, comm_parent);
-      CXIOSManager::RunServer("Nemo", comm_client_server, comm_server);
-      CTreeManager::SetCurrentContextId(StdString("nemo"));
-      CServer::CreateServer(comm_client_server)->run();
-      CXIOSManager::Finalize ();  
-
-   }
-   catch (CException & exc)
-   {
-      std::cerr << exc.getMessage () << std::endl;
-      CMPIManager::Finalize ();
-      return (EXIT_FAILURE);
-   }
-   return (EXIT_SUCCESS);
-}
-
Index: OS/trunk/src/manager/mpi_manager.cpp
===================================================================
--- /XIOS/trunk/src/manager/mpi_manager.cpp	(revision 313)
+++ 	(revision )
@@ -1,425 +1,0 @@
-/* ************************************************************************** *
- *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
- * ************************************************************************** */
- 
- /**
- * \file    mpi_interface.cpp
- * \brief   Gestion des communications MPI via une surcouche interne (implÃ©mentation).
- * \author  HervÃ© Ozdoba
- * \version 0.4
- * \date    28 Juin 2011
- */
- 
-// XMLIOServer headers
-#include "xmlioserver.hpp"
-#include "mpi_manager.hpp"
-#include "oasis_cinterface.hpp"
-
-
-// /////////////////////////////// DÃ©finitions ////////////////////////////// //
-
-namespace xmlioserver {
-namespace comm {
-
-   // ---------------------- Initialisation & Finalisation ---------------------
-
-   bool CMPIManager::Initialized=false ;
-   MPI_Comm CMPIManager::CommClient ;
-   MPI_Comm CMPIManager::CommServer ;
-   MPI_Comm CMPIManager::CommClientServer ;
-   int CMPIManager::NbClient ;
-   int CMPIManager::NbServer ;   
-   bool CMPIManager::_IsClient ;
-   bool CMPIManager::_IsServer ;   
-   bool CMPIManager::using_server ;
-   bool CMPIManager::using_oasis ;
-
-
-   void CMPIManager::Initialise(int * _argc, char *** _argv)
-   {
-      int flag = 0;
-      if (MPI_Initialized(&flag) != MPI_SUCCESS)
-         ERROR("CMPIManager::Initialise(arc, argv)", << " MPI Error !");
-      if (!flag)
-      {
-         if (MPI_Init(_argc, _argv) != MPI_SUCCESS)
-            ERROR("CMPIManager::Initialise(arc, argv)", << " MPI Error !");
-         Initialized=true ;
-      }
-
-   }
-   void CMPIManager::InitialiseClient(int * _argc, char *** _argv)
-   {
-      int flag = 0;
-      using_oasis=CObjectFactory::GetObject<CVariable>("xios","using_oasis")->getData<bool>() ; 
-      using_server=CObjectFactory::GetObject<CVariable>("xios","using_server")->getData<bool>(); 
-
-      Initialized=false ;
-
-      if (MPI_Initialized(&flag) != MPI_SUCCESS)
-         ERROR("CMPIManager::Initialise(arc, argv)", << " MPI Error !");
-
-      if (!flag)
-      {
-         if (using_oasis) 
-         {
-           StdString oasisClientId=CObjectFactory::GetObject<CVariable>("xios","client_id")->getData<StdString>();
-           oasis_init(oasisClientId) ;
-         }
-         else
-         {        
-           if (MPI_Init(_argc, _argv) != MPI_SUCCESS)
-            ERROR("CMPIManager::Initialise(arc, argv)", << " MPI Error !");
-         }
-         Initialized=true ;
-       }
-
-   }
-   
-   void CMPIManager::InitialiseServer(int * _argc, char *** _argv)
-   {
-      int flag = 0;
-      
-      using_oasis=CObjectFactory::GetObject<CVariable>("xios","using_oasis")->getData<bool>(); 
-      using_server=CObjectFactory::GetObject<CVariable>("xios","using_server")->getData<bool>(); 
-   
-      if (using_oasis)
-      {
-         StdString oasisServerId=CObjectFactory::GetObject<CVariable>("xios","server_id")->getData<StdString>(); 
-         oasis_init(oasisServerId) ;
-      }
-      else
-      {
-         if (MPI_Init(_argc, _argv) != MPI_SUCCESS)
-            ERROR("CMPIManager::Initialise(arc, argv)", << " MPI Error !");
-      }
-      Initialized=true ;
-   }
-    
-   void CMPIManager::Finalize(void)
-   {
-      if (Initialized)
-      {
-        if (using_oasis) oasis_finalize() ;
-        else if (MPI_Finalize() != MPI_SUCCESS)
-                ERROR("CMPIManager::Finalize(void)", << " MPI Error !");
-      }
-   }
-   
-   // ------------------------------ Communicateurs ----------------------------
-   
-   int CMPIManager::GetCommRank(MPI_Comm _comm)
-   {
-      int rank = 0;
-      if (MPI_Comm_rank(_comm, &rank) != MPI_SUCCESS)
-         ERROR("CMPIManager::GetCommRank(comm)", << " MPI Error !");
-      return (rank);
-   }
-   
-   int CMPIManager::GetCommSize(MPI_Comm _comm)
-   {
-      int size = 0;
-      if (MPI_Comm_size(_comm, &size) != MPI_SUCCESS)
-         ERROR("CMPIManager::GetCommSize(comm)", << " MPI Error !");
-      return (size);
-   }
-   
-   MPI_Comm CMPIManager::CreateComm(MPI_Group _group, MPI_Comm _pcomm)
-   {
-      MPI_Comm commu;      
-      if (MPI_Comm_create(_pcomm, _group, &commu) != MPI_SUCCESS)
-         ERROR("CMPIManager::CreateComm(group, pcomm)", << " MPI Error !");
-      return (commu);
-   }
-   
-   //MPI_Comm CMPIManager::GetCommWorld(void)
-   //{
-   //   return (MPI_COMM_WORLD); 
-   //}
-   
-   // ---------------------------------- Autre ---------------------------------
-         
-   void CMPIManager::Barrier(MPI_Comm _comm)
-   {
-      if (MPI_Barrier(_comm) != MPI_SUCCESS)
-         ERROR("CMPIManager::Barrier(comm)", << " MPI Error !");
-   }
-   
-   bool CMPIManager::DispatchClient(bool       _is_server,
-                                    MPI_Comm & _comm_client,
-                                    MPI_Comm & _comm_client_server,
-                                    MPI_Comm & _comm_server,
-                                    MPI_Comm   _comm_parent)
-   {
-      if (_is_server) { _IsServer=true ; _IsClient=false ; }
-      else { _IsServer=false ; _IsClient=true; }
-
-      if (_is_server)
-      {
-        if (using_oasis)
-        {
-          StdString oasisClientId=CObjectFactory::GetObject<CVariable>("xios","client_id")->getData<StdString>() ;
-          oasis_get_intracomm(_comm_parent,oasisClientId) ;
-        }
-        else _comm_parent=MPI_COMM_WORLD ;
-      }
-      else
-      {
-        if (!using_server)
-        {
-          NbClient=GetCommSize(_comm_parent) ;
-          NbServer=0 ;
-          _comm_server = _comm_client = _comm_parent ;
-          CommClient=_comm_client ;
-          CommServer=_comm_server ;
-          CommClientServer=_comm_client_server ;
-           return false ;
-        }
-        if (using_oasis)  
-        {
-          StdString oasisServerId=CObjectFactory::GetObject<CVariable>("xios","server_id")->getData<StdString>() ;
-          oasis_get_intracomm(_comm_parent,oasisServerId) ;
-        }
-      }    
-      
-      
-      int value = (_is_server) ? 1 : 2;
-      std::size_t nbClient = 0, nbServer = 0 ;
-      std::vector<int> nbClientByServer ;
-      
-      std::vector<int> info, rank_client, rank_server;
-      CMPIManager::AllGather(value, info, _comm_parent);
-
-      for (std::size_t s = 0;  s < info.size(); s++)
-      {
-         if (info[s] == 1) rank_server.push_back(s);
-         else rank_client.push_back(s);
-      }
-      nbClient = rank_client.size();
-      nbServer = rank_server.size();
-      
-      NbClient=nbClient ;
-      NbServer=nbServer ;
-      
-      if (nbClient == 0)
-         ERROR("CMPIManager::DispatchClient()", << " Aucun client disponible !");
-         
-
-      _comm_client = CMPIManager::CreateComm(CMPIManager::CreateSubGroup(
-                     CMPIManager::GetGroup(_comm_parent), rank_client), _comm_parent);
-
-      if (nbServer != 0)
-      {
-         std::size_t currentServer = 0;
-         
-//         nbClientByServer = nbClient/nbServer;
-         _comm_server = CMPIManager::CreateComm(CMPIManager::CreateSubGroup(
-                        CMPIManager::GetGroup(_comm_parent), rank_server), _comm_parent);
-
-         for(std::size_t mm=0;mm<nbServer;mm++) 
-         {
-           int x=nbClient/nbServer ;
-           if (mm<nbClient%nbServer) x++ ;
-           nbClientByServer.push_back(x) ;
-         }
-
-         for (std::size_t mm = 0; mm < nbClient; mm += nbClientByServer[currentServer],currentServer++ )
-         {
-            std::vector<int> group_rank;
-            group_rank.push_back(rank_server[currentServer]);
-            for (std::size_t nn = 0; nn < nbClientByServer[currentServer]; nn++)
-               group_rank.push_back(rank_client[nn+mm]);
-            MPI_Comm comm_client_server_ = CMPIManager::CreateComm(CMPIManager::CreateSubGroup(
-                                           CMPIManager::GetGroup(_comm_parent), group_rank), _comm_parent);
-
-            if (std::find(group_rank.begin(), group_rank.end(),
-                         CMPIManager::GetCommRank(_comm_parent)) != group_rank.end())
-            {
-               _comm_client_server = comm_client_server_;
-            }
-               
-            group_rank.clear();
-         }
-         CommClient=_comm_client ;
-         CommServer=_comm_server ;
-         CommClientServer=_comm_client_server ;
-         return (true);
-      }
-      else
-      {
-         _comm_server = _comm_client;
-         CommClient=_comm_client ;
-         CommServer=_comm_server ;
-         CommClientServer=_comm_client_server ;
-         return (false);
-      }
-   }
-   
-
-   // --------------------------------- Groupes --------------------------------
-         
-   MPI_Group CMPIManager::GetGroupWorld(void)
-   {
-      MPI_Group group = 0;
-      if (MPI_Comm_group(MPI_COMM_WORLD, &group) != MPI_SUCCESS)
-         ERROR("CMPIManager::GetGroupWorld()", << " MPI Error !");
-      return (group);
-   }
-
-   MPI_Group CMPIManager::GetGroup(MPI_Comm comm)
-   {
-      MPI_Group group = 0;
-      if (MPI_Comm_group(comm, &group) != MPI_SUCCESS)
-         ERROR("CMPIManager::GetGroup()", << " MPI Error !");
-      return (group);
-   }
-   
-   MPI_Group CMPIManager::CreateSubGroup(MPI_Group _pgroup, const std::vector<int> & _ranks)
-   {
-      MPI_Group group = 0;
-      if (MPI_Group_incl(_pgroup, _ranks.size(), const_cast<int*>(&(_ranks[0])), &group) != MPI_SUCCESS)
-         ERROR("CMPIManager::CreateSubGroup(pgroup, ranks)", << " MPI Error !");
-      return (group);
-   }
-   
-   MPI_Group CMPIManager::CreateSubGroup
-      (MPI_Group _pgroup, int _min_rank, int _max_rank, int _intval)
-   {
-      std::vector<int> ranks;
-      for (int i = _min_rank; i <= _max_rank; i += _intval)
-         ranks.push_back(i);
-      return (CMPIManager::CreateSubGroup(_pgroup, ranks));
-   }
-
-   // ----------------------------------- Tests --------------------------------
-         
-   bool CMPIManager::IsMaster(MPI_Comm _comm)
-   {
-      return (CMPIManager::GetCommRank(_comm) == 0); 
-   }
-   
-   bool CMPIManager::IsRank(int _rank, MPI_Comm _comm)
-   {
-      return (CMPIManager::GetCommRank(_comm) == _rank); 
-   }
-
-   // --------------------------- Communication simple -------------------------
-         
-   void CMPIManager::Send (MPI_Comm _comm, int _dest_rank, char * _data,
-                           std::size_t _size, MPI_Request & _request)
-   {
-      int nsize = _size;    
-      if (MPI_Issend(_data, nsize, MPI_CHAR, _dest_rank, 0, _comm, &_request) != MPI_SUCCESS)
-         ERROR("CMPIManager::Send (comm, dest_rank, data, size, request)", << " MPI Error !");
-   }
-   
-   void CMPIManager::Wait (MPI_Request & _request)
-   {
-      MPI_Status status;
-      if (MPI_Wait(&_request, &status) != MPI_SUCCESS)
-         ERROR("CMPIManager::Wait (request)", << " MPI Error !");
-   }
-   
-   bool CMPIManager::Test (MPI_Request & _request)
-   {
-      MPI_Status status;
-      int flag = 0;
-      if (MPI_Test(&_request, &flag, &status) != MPI_SUCCESS)
-         ERROR("CMPIManager::Test (request)", << " MPI Error !");
-      return (flag);
-   }
-
-   bool CMPIManager::HasReceivedData(MPI_Comm _comm, int _src_rank)
-   {
-      MPI_Status status;
-      int flag = 0;
-      if (MPI_Iprobe(_src_rank, MPI_ANY_TAG, _comm, &flag, &status) != MPI_SUCCESS)
-         ERROR("CMPIManager::HasReceivedData (comm, rank)", << " MPI Error !");
-      return (flag);
-   }
-   
-   std::size_t CMPIManager::GetReceivedDataSize(MPI_Comm _comm, int _src_rank)
-   {
-      MPI_Status status;
-      int flag = 0, size = 0;
-      if (MPI_Iprobe(_src_rank, MPI_ANY_TAG, _comm, &flag, &status) != MPI_SUCCESS)
-         ERROR("CMPIManager::getReceivedDataSize (comm, rank)", << " MPI Error !");
-      if (!flag) return (0);  
-      if (MPI_Get_count(&status, MPI_CHAR, &size) != MPI_SUCCESS)
-         ERROR("CMPIManager::getReceivedDataSize (comm, rank)", << " MPI Error !");
-
-      return (size);
-   }
-   
-   void CMPIManager::Receive(MPI_Comm _comm, int _src_rank, char * _data)
-   {
-      MPI_Request request = 0;
-      int size = CMPIManager::GetReceivedDataSize(_comm, _src_rank);
-      if (MPI_Irecv(_data, size, MPI_CHAR, _src_rank, MPI_ANY_TAG, _comm, &request) != MPI_SUCCESS)
-         ERROR("CMPIManager::Receive (comm, src_rank, data)", << " MPI Error !");
-      CMPIManager::Wait (request); // Temporaire
-   }
-   
-   void CMPIManager::AllGather(int _indata, std::vector<int> & _outdata, MPI_Comm _comm)
-   {
-      std::vector<int> data; data.push_back(_indata);
-      CMPIManager::AllGather(data, _outdata, _comm);
-   }
-
-   void  CMPIManager::AllGather(const std::vector<int> & _indata,
-                                      std::vector<int> & _outdata, MPI_Comm _comm)
-   {
-      int sendcount = _indata.size(),
-          recvcount = _indata.size() * CMPIManager::GetCommSize(_comm);
-      _outdata.resize(recvcount);     
-      if (MPI_Allgather ( const_cast<int*>(&(_indata[0])), sendcount, MPI_INTEGER,
-                                          &(_outdata[0]) , sendcount, MPI_INTEGER, _comm) != MPI_SUCCESS)
-         ERROR("CMPIManager::AllGather (indata, outdata, comm)", << " MPI Error !");
-   }
-         
-   // ------------------------- Communication 'complexe' -----------------------
-         
-   void CMPIManager::SendLinearBuffer(MPI_Comm _comm, int _dest_rank, CLinearBuffer & _lbuffer, MPI_Request & _request)
-   {
-      CMPIManager::Send(_comm, _dest_rank, _lbuffer, _lbuffer.getUsedSize(), _request);
-      _lbuffer.clear();
-   }
-   
-   void CMPIManager::ReceiveLinearBuffer(MPI_Comm _comm, int _src_rank, CLinearBuffer & _lbuffer)
-   {
-      CMPIManager::Receive(_comm, _src_rank, _lbuffer);
-      _lbuffer.computeBufferData();
-   }
-   
-   boost::shared_ptr<CLinearBuffer> CMPIManager::ReceiveLinearBuffer(MPI_Comm _comm, int _src_rank)
-   {
-      boost::shared_ptr<CLinearBuffer> buff_ptr
-         (new CLinearBuffer(CMPIManager::GetReceivedDataSize(_comm, _src_rank)));
-      CMPIManager::ReceiveLinearBuffer(_comm, _src_rank, *buff_ptr);
-      return (buff_ptr);
-   }
-   
-   void CMPIManager::ReceiveCircularBuffer(MPI_Comm _comm, int _src_rank, CCircularBuffer & _cbuffer)
-   {
-      std::size_t data_size  = CMPIManager::GetReceivedDataSize(_comm, _src_rank);
-      std::size_t data_begin = _cbuffer.prepareNextDataPosition(data_size);
-      CMPIManager::Receive(_comm, _src_rank, _cbuffer.getData(data_begin));
-      _cbuffer.updateNbRequests(data_begin, data_begin + data_size);
-   }
-
-   // ---------------------- MÃ©moire (non fonctionnel ....) --------------------
-         
-   void CMPIManager::AllocMemory(void * _data, std::size_t _size)
-   {
-      if (MPI_Alloc_mem(sizeof(char) * _size, MPI_INFO_NULL, _data) != MPI_SUCCESS)
-         ERROR("CMPIManager::AllocMem(data, size)", << " MPI Error !");
-   }
-   
-   void CMPIManager::FreeMemory (void * _data)
-   {
-      MPI_Free_mem(_data);
-   }
-
-} // namespace comm
-} // namespace xmlioserver
-
Index: OS/trunk/src/manager/mpi_manager.hpp
===================================================================
--- /XIOS/trunk/src/manager/mpi_manager.hpp	(revision 313)
+++ 	(revision )
@@ -1,172 +1,0 @@
-/* ************************************************************************** *
- *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
- * ************************************************************************** */
-
-#ifndef __MPI_INTERFACE_HPP__
-#define __MPI_INTERFACE_HPP__
-
-/**
- * \file    mpi_interface.hpp
- * \brief   Gestion des communications MPI via une surcouche interne (entÃªte).
- * \author  HervÃ© Ozdoba
- * \version 0.4
- * \date    28 Juin 2011
- */
-
-#ifndef __XIOS_NO_EXTERN
-
-// M(essage) P(assing) I(nterface) headers
-#include <mpi.h>
-
-// C++ standard headers
-#include <vector>
-
-#endif //__XIOS_NO_EXTERN
-
-// XMLIOServer headers
-#include "xmlioserver_spl.hpp"
-#include "buffer.hpp"
-#include "circular_buffer.hpp"
-#include "linear_buffer.hpp"
-
-// ////////////////////////////// DÃ©clarations ///////////////////////////// //
-
-namespace xmlioserver
-{
-   /// \brief Espace de nommage pour les communications via la bibliothÃšque MPI.
-   namespace comm
-   {
-      typedef MPI_Fint     MPIComm; /*!< \brief Identifiant de communicateur MPI (Fortran).   */
-      typedef MPI_Fint    MPIGroup; /*!< \brief Identifiant de groupe MPI (Fortran).          */
-      typedef MPI_Fint  MPIRequest; /*!< \brief Identifiant de requÃªte MPI (Fortran).         */
-      typedef MPI_Fint  *MPIStatus; /*!< \brief Identifiant de statut MPI (Fortran).          */
-      typedef MPI_Fint MPIDataType; /*!< \brief Identifiant de type de donnÃ©es MPI (Fortran). */
-      
-      /**
-       * \class CMPIManager
-       * \brief Surcouche interne de la bibliÃ othÃšque M(essage) P(assing) I(nterface).
-       */
-      class CMPIManager
-      {
-         public : // Initialisation & Finalisation
-         
-            static void Initialise(int * argc, char *** argv);
-            static void InitialiseClient(int * argc, char *** argv);
-            static void InitialiseServer(int * argc, char *** argv);
-            static void Finalize(void);
-
-         public : // Communicateurs
-         
-         
-           
-            static inline MPI_Comm GetCommWorld(void)            
-            { return (MPI_COMM_WORLD); }
-            
-            static int GetCommRank(MPI_Comm _comm = MPI_COMM_WORLD);
-            static int GetCommSize(MPI_Comm _comm = MPI_COMM_WORLD);       
-            
-            static MPI_Comm CreateComm(MPI_Group _group, MPI_Comm _pcomm=MPI_COMM_WORLD);
-
-            static inline MPI_Comm GetCommClient(void) 
-            { return CommClient; }   
-            static inline MPI_Comm GetCommServer(void) 
-            { return CommServer; }   
-            static inline MPI_Comm GetCommClientServer(void)             
-            { return CommClientServer; }   
-            static inline int GetNbClient(void)             
-            { return NbClient; }   
-            static inline int GetNbServer(void)             
-            { return NbServer; }   
-
-            static inline bool IsConnected(void)             
-            { return (NbServer==0)?true:false; }   
-
-            static inline bool IsClient(void)             
-            { return _IsClient; }   
-
-            static inline bool IsServer(void)             
-            { return _IsServer; }   
-
-         public : // Autre
-         
-            static void Barrier(MPI_Comm _comm = MPI_COMM_WORLD);
-            
-            static bool DispatchClient(bool       _is_server,
-                                       MPI_Comm & _comm_client,
-                                       MPI_Comm & _comm_client_server,
-                                       MPI_Comm & _comm_server,
-                                       MPI_Comm _comm_parent);
-
-         public : // Groupes
-         
-            static MPI_Group GetGroupWorld(void);
-            static MPI_Group GetGroup(MPI_Comm Comm);
-            static MPI_Group CreateSubGroup(MPI_Group _pgroup, const std::vector<int> & _ranks);
-            static MPI_Group CreateSubGroup(MPI_Group _pgroup, int _min_rank, int _max_rank, int _intval = 1);
-
-         public : // Tests 
-         
-       
-         
-            static bool IsMaster(MPI_Comm _comm = MPI_COMM_WORLD);
-            static bool IsRank(int _rank, MPI_Comm _comm = MPI_COMM_WORLD);
-
-         public : // Communication simple
-         
-            static void Send (MPI_Comm _comm, int _dest_rank, char * _data,
-                              std::size_t _size, MPI_Request & _request);
-            static void Wait (MPI_Request & _request);
-            static bool Test (MPI_Request & _request);
-
-            
-            static bool HasReceivedData(MPI_Comm _comm, int _src_rank);
-            
-            static std::size_t GetReceivedDataSize(MPI_Comm _comm, int _src_rank);
-
-            static void Receive(MPI_Comm _comm, int _src_rank, char * _data);
-            
-            static void AllGather(int _indata, std::vector<int> & _outdata,
-                                  MPI_Comm _comm = MPI_COMM_WORLD);
-
-            static void AllGather(const std::vector<int> & _indata,
-                                        std::vector<int> & _outdata,
-                                  MPI_Comm _comm = MPI_COMM_WORLD);
-
-
-         public : // Communication 'complexe'
-         
-
-            static void SendLinearBuffer(MPI_Comm _comm, int _dest_rank, CLinearBuffer & _lbuffer, MPI_Request & _request);
-            static void ReceiveLinearBuffer(MPI_Comm _comm, int _src_rank, CLinearBuffer & _lbuffer);
-            static boost::shared_ptr<CLinearBuffer> ReceiveLinearBuffer(MPI_Comm _comm, int _src_rank);
-            static void ReceiveCircularBuffer(MPI_Comm _comm, int _src_rank, CCircularBuffer & _cbuffer);
-            
-            
-
-         public : // MÃ©moire (non fonctionnel ....)
-         
-            static void AllocMemory(void * _data, std::size_t _size);
-            static void FreeMemory (void * _data);
-         
-          private :
-          
-            static bool Initialized ;
-            static MPI_Comm CommClient ;
-            static MPI_Comm CommServer ;
-            static MPI_Comm CommClientServer ;
-            static int NbClient ;
-            static int NbServer ;
-
-            static bool _IsClient ;
-            static bool _IsServer ;
-            static bool using_server ;
-            static bool using_oasis ;
-            
-      }; // class CMPIManager
-      
-
-      
-   } // namespace comm
-} // namespace xmlioserver
-
-#endif //__MPI_INTERFACE_HPP__
Index: OS/trunk/src/manager/xios_manager.cpp
===================================================================
--- /XIOS/trunk/src/manager/xios_manager.cpp	(revision 313)
+++ 	(revision )
@@ -1,398 +1,0 @@
-#include "xios_manager.hpp"
-
-#include "tree_manager.hpp"
-#include "data_treatment.hpp"
-#include "nc4_data_output.hpp"
-#include "attribute_template_impl.hpp"
-#include "group_template_impl.hpp"
-
-namespace xmlioserver
-{
-      /// ////////////////////// DÃ©finitions ////////////////////// ///
-      
-      void CXIOSManager::Initialise(XIOSType type, int * argc, char *** argv)
-      {
-         CXIOSManager::Type = type;
-         if (type != CLIENT)
-         {
-            // Initialisation de la biliothÃšque MPI si nÃ©cessaire
-            comm::CMPIManager::InitialiseServer(argc, argv);
-            ExeName = StdString((*argv)[0]);
-            for (int i = 1; i < *argc; i++)
-               ExeOptions.push_back(StdString((*argv)[i]));
-         }
-      }
-
-      void CXIOSManager::Finalize(void)
-      {
-         if (CXIOSManager::Type != CLIENT)
-
-         {
-            // Finalisation de la biliothÃšque MPI si nÃ©cessaire
-            comm::CMPIManager::Finalize();
-         }
-      }
-
-      ///-------------------------------------------------------------
-
-      StdString CXIOSManager::ExeName("unknown");
-      std::vector<StdString> CXIOSManager::ExeOptions;
-
-      CXIOSManager::XIOSType   CXIOSManager::Type    = CLIENT;
-      CXIOSManager::XIOSStatus CXIOSManager::Status  = LOC_UNUSED;
-
-      StdString     CXIOSManager::ClientName("unknown name");
-      MPI_Comm CXIOSManager::Comm_Client_Server = MPI_COMM_NULL;
-      MPI_Comm CXIOSManager::Comm_Server = MPI_COMM_NULL;
-
-      xios_map<StdString, CXIOSManager::XIOSClient> CXIOSManager::Clients;
-
-      ///--------------------------------------------------------------
-      
-      void CXIOSManager::RunServer
-         (StdString clientName, MPI_Comm comm_client_server, MPI_Comm comm_server)
-      {
-         using namespace comm;
-         CXIOSManager::Comm_Client_Server = comm_client_server;
-         CXIOSManager::Comm_Server        = comm_server;
-         CXIOSManager::Status             = LOC_SERVER;
-         
-         // Reconstruction de l'arborescence d'objet Ã  l'aide des donnÃ©es envoyÃ©es par chacun des
-         // clients associÃ©s Ã  ce serveur.
-         std::vector<boost::shared_ptr<CLinearBuffer> > clientBuffer;
-         for (int i = 1; i < CMPIManager::GetCommSize(comm_client_server); i++)
-         {
-            while (!CMPIManager::HasReceivedData(comm_client_server, i)){}
-            clientBuffer.push_back(CMPIManager::ReceiveLinearBuffer(comm_client_server, i));
-         }
-         
-         // La quasi-totalitÃ© de l'arborescence est obtenue depuis les informations
-         // fournies par le client 1 du sous-groupe.
-/*         StdString main_data_tree = clientBuffer[0]->getString(0);        
-         tree::CTreeManager::FromBinary(main_data_tree);
-         
-         // Obtention des sous-domaines clients.
-         for (StdSize j = 1; j < clientBuffer.size(); j++)
-         {
-            main_data_tree = clientBuffer[j]->getString(0);
-            tree::CTreeManager::DomainsFromBinary(main_data_tree);
-         }
-*/
-
-         // Obtention des sous-domaines clients.
-         for (StdSize j = 0; j < clientBuffer.size(); j++)
-         {
-             StdString main_data_tree = clientBuffer[j]->getString(0);
-            tree::CTreeManager::FromBinary(main_data_tree);
-         }
-
-         
-         StdOStringStream osss;
-         osss << StdString("./def_server_next.")
-              << CMPIManager::GetCommRank(CMPIManager::GetCommWorld());
-         CTreeManager::PrintTreeToFile(osss.str());
-
-         {  // Traitement de tous les contextes
-            StdString currentContextId = CObjectFactory::GetCurrentContextId();
-            std::vector<boost::shared_ptr<CContext> > def_vector =
-                                   CContext::GetContextGroup()->getChildList();
-            std::vector<boost::shared_ptr<CContext> >::iterator
-                               it = def_vector.begin(), end = def_vector.end();
-
-            //for (; it != end; it++ )
-            {
-               boost::shared_ptr<CContext> context = *it;
-               CTreeManager::SetCurrentContextId(context->getId());
-               boost::shared_ptr<data::CDataTreatment> dt(new data::CDataTreatment (context));
-               context->setDataTreatment(dt);
-               dt->createDataOutput<io::CNc4DataOutput>();
-            }
-            CTreeManager::SetCurrentContextId(currentContextId);
-         }
-        
-         StdOStringStream oss;
-         oss << StdString("./def_server_end.")
-             << CMPIManager::GetCommRank(CMPIManager::GetCommWorld());
-         CTreeManager::PrintTreeToFile(oss.str());      
- 
-      }
-      
-      //--------------------------------------------------------------
-      
-      void CXIOSManager::ShowInformation_CS(MPI_Comm comm_client_server)
-      {
-         using namespace comm;
-         typedef std::pair<StdString, XIOSClient> StdPairStrClient;
-         if (CMPIManager::IsMaster(comm_client_server))
-         {
-
-            xios_map<StdString, XIOSClient>::iterator
-               iit  = CXIOSManager::Clients.begin(),
-               eend = CXIOSManager::Clients.end();
-
-            for (;iit != eend; iit++)
-            {
-               const StdPairStrClient & elem = *iit;
-            }
-
-         }
-
-         comm::CMPIManager::Barrier(comm_client_server);
-         
-      }
-      
-      //--------------------------------------------------------------
-      
-      void CXIOSManager::RunClientServer(MPI_Comm comm_client_server)
-      {
-         using namespace comm;
-         typedef std::pair<StdString, XIOSClient> StdPairStrClient;
-         CXIOSManager::Comm_Client_Server = comm_client_server;
-         CXIOSManager::Comm_Server        = comm_client_server;
-         
-         CXIOSManager::ShowInformation_CS(comm_client_server);
-         
-         xios_map<StdString, XIOSClient>::iterator
-               iit  = CXIOSManager::Clients.begin(),
-               eend = CXIOSManager::Clients.end();
-         
-         StdSize start = 0, end   = 0;
-         
-         bool isClient = true, isIncl = false, isIncl_ = false;
-         MPI_Comm comm_client = 0, comm_client_grp = 0; comm_client_server = 0;
-
-         for (;iit != eend; iit++)
-         {
-            const StdPairStrClient & elem = *iit;
-
-            std::vector<int> clieindex, servindex ;
-            StdSize   currentRank      = CMPIManager::GetCommRank();
-            StdString clientName       = elem.first;
-            StdSize   nbClient         = elem.second.nbClient;
-            StdSize   nbClientPServer  = elem.second.nbClientPServer;
-            StdSize   nbServer         = (elem.second.nbClient)/(elem.second.nbClientPServer);
-
-            for (StdSize i = 0; i<nbServer; i++)
-            {
-               end = start + nbClientPServer;
-               MPI_Comm comm_  =  CMPIManager::CreateComm
-                  (CMPIManager::CreateSubGroup(CMPIManager::GetGroupWorld(), start, end));
-               MPI_Comm comm__ =  CMPIManager::CreateComm
-                  (CMPIManager::CreateSubGroup(CMPIManager::GetGroupWorld(), start+1, end));
-                  
-               servindex.push_back(start);
-               for (StdSize j = start+1; j <= end; j++)
-                  clieindex.push_back(j);
-                                
-               if ((currentRank >= start) && (currentRank <= end))
-               {
-                  comm_client_server = comm_;
-                  comm_client_grp    = comm__;
-                  isIncl = true;
-                  CXIOSManager::ClientName = clientName;
-                  CXIOSManager::Status = LOC_CLIENT;
-               }
-               if (currentRank == start)
-               {
-                  isClient = false; isIncl_  = true;
-                  CXIOSManager::Comm_Client_Server = comm_;
-                  CXIOSManager::Status = LOC_SERVER;
-               }               
-               if (clieindex.size() == nbClient)
-               {
-                  MPI_Comm comm___ = CMPIManager::CreateComm
-                  (CMPIManager::CreateSubGroup(CMPIManager::GetGroupWorld(), clieindex));
-                  if (isIncl) comm_client = comm___;
-                  clieindex.clear();
-                  isIncl = false;
-               }
-               
-               start = start + nbClientPServer + 1;
-            }
-            MPI_Comm comm____ = CMPIManager::CreateComm
-               (CMPIManager::CreateSubGroup(CMPIManager::GetGroupWorld(), servindex));
-            if (isIncl_) CXIOSManager::Comm_Server = comm____;               
-            servindex.clear();
-            isIncl_ = false;            
-         }
-         
-         if (isClient && (CXIOSManager::Clients.find(CXIOSManager::ClientName) !=
-                          CXIOSManager::Clients.end()))
-         {
-            CXIOSManager::Clients[CXIOSManager::ClientName].entry
-               (comm_client, comm_client_grp, comm_client_server);
-         }
-         else if(CXIOSManager::Clients.find(CXIOSManager::ClientName) !=
-                 CXIOSManager::Clients.end())
-         {
-            CXIOSManager::RunServer(CXIOSManager::ClientName, 
-                                    CXIOSManager::Comm_Client_Server,
-                                    CXIOSManager::Comm_Server);
-         }
-      }
-      
-      //---------------------------------------------------------------
-      
-      void CXIOSManager::RunClient(bool launch, MPI_Comm comm_client)
-      {
-         if (launch)
-         {
-            CXIOSManager::Status       = LOC_CLIENT_SERVER;    
-            CXIOSManager::Comm_Server  = comm_client;    
-            (CXIOSManager::Clients.begin()->second.entry)
-               (comm_client, comm_client, comm_client);
-         }
-         else
-         {
-            CXIOSManager::Status  = LOC_CLIENT;
-         }
-      }
-
-      //---------------------------------------------------------------
-
-      void CXIOSManager::AddClient(StdString clientName, StdSize nbClient, StdSize nbClientPServer,
-                                   void (*entry_point)(MPI_Comm, MPI_Comm, MPI_Comm))
-      {
-         StdSize nbprocess  = comm::CMPIManager::GetCommSize(comm::CMPIManager::GetCommWorld());
-         StdSize nbprocess_used = CXIOSManager::GetNbClient() + CXIOSManager::GetNbServer();
-
-         if (nbClient < nbClientPServer)
-            ERROR("CXIOSManager::AddClient(...)", 
-                  << "nbClient < nbClientPServer");
-                  
-         if ((nbClient % nbClientPServer) != 0)
-            ERROR("CXIOSManager::AddClient(...)",
-                  << " (nbClient % nbClientPServer) != 0 !");
-                  
-         if ((nbprocess-nbprocess_used) < (nbClient + nbClient/nbClientPServer))
-            ERROR("CXIOSManager::AddClient(...)",
-                  << " Pas assez de processus disponibles !");
-                  
-         if (CXIOSManager::Clients.find(clientName) != CXIOSManager::Clients.end())
-            ERROR("CXIOSManager::AddClient(...)",
-                  << " Un client portant le mÃªme nom existe dÃ©jÃ  !");
-
-         XIOSClient client = {nbClient, nbClientPServer, entry_point };
-         CXIOSManager::Clients[clientName] = client;
-      }
-
-      //---------------------------------------------------------------
-
-      StdSize CXIOSManager::GetNbClient(void)
-      {
-         switch (CXIOSManager::Type)
-         {
-            case (CLIENT_SERVER):
-            {
-               StdSize retvalue = 0;
-               typedef std::pair<StdString, XIOSClient> StdPairStrClient;
-               xios_map<StdString, XIOSClient>::iterator
-                  iit  = CXIOSManager::Clients.begin(),
-                  eend = CXIOSManager::Clients.end();
-
-               for (;iit != eend; iit++)
-               {
-                  const StdPairStrClient & elem = *iit;
-                  retvalue += CXIOSManager::GetNbLocClient(elem.first);
-               }
-               
-               return (retvalue);
-            }
-            case (CLIENT):
-               return (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Server));
-            case (SERVER):
-               return (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Client_Server) - 1);
-            default:
-               return (0);
-         }
-      }
-      
-      //---------------------------------------------------------------
-
-      StdSize CXIOSManager::GetNbLocClient(const StdString & clientName)
-      {
-         switch (CXIOSManager::Type)
-         {
-            case (CLIENT_SERVER):
-               return (CXIOSManager::Clients[clientName].nbClient);
-            case (CLIENT):
-            case (SERVER):
-               return (CXIOSManager::GetNbClient());
-            default:
-               return (0);
-         }
-      }
-
-      //---------------------------------------------------------------
-
-      StdSize CXIOSManager::GetNbServer(void)
-      {
-         switch (CXIOSManager::Type)
-         {
-            case (CLIENT_SERVER):
-            {
-               StdSize retvalue = 0;
-               typedef std::pair<StdString, XIOSClient> StdPairStrClient;              
-
-               xios_map<StdString, XIOSClient>::iterator
-                  iit  = CXIOSManager::Clients.begin(),
-                  eend = CXIOSManager::Clients.end();
-
-               for (;iit != eend; iit++)
-               {
-                  const StdPairStrClient & elem = *iit;
-                  retvalue += CXIOSManager::GetNbLocServer(elem.first);
-               }                  
-                  
-               return (retvalue);
-            }
-            case (CLIENT):
-               return (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Server));
-            case (SERVER):
-               return (1);
-            default:
-               return (0);
-         }
-      }
-
-      //---------------------------------------------------------------
-
-      StdSize CXIOSManager::GetNbLocServer(const StdString & clientName)
-      {
-         switch (CXIOSManager::Type)
-         {
-            case (CLIENT_SERVER):
-               return (CXIOSManager::Clients[clientName].nbClient /
-                       CXIOSManager::Clients[clientName].nbClientPServer);
-            case (CLIENT):
-            case (SERVER):
-               return (CXIOSManager::GetNbServer());
-            default:
-               return (0);
-         }
-      }
-      
-      //---------------------------------------------------------------
-      
-      CXIOSManager::XIOSType   CXIOSManager::GetType(void)
-      {
-         return (CXIOSManager::Type);
-      }
-      
-      //---------------------------------------------------------------
-      
-      CXIOSManager::XIOSStatus CXIOSManager::GetStatus(void)
-      {
-         return (CXIOSManager::Status);
-      }
-      
-      //---------------------------------------------------------------
-      
-      StdString  CXIOSManager::GetClientName(void)
-      {
-         return (CXIOSManager::ClientName);
-      }
-
-      ///--------------------------------------------------------------
-
-} // namespace xmlioserver
Index: OS/trunk/src/manager/xios_manager.hpp
===================================================================
--- /XIOS/trunk/src/manager/xios_manager.hpp	(revision 313)
+++ 	(revision )
@@ -1,80 +1,0 @@
-#ifndef __XMLIO_CXMLIOManager__
-#define __XMLIO_CXMLIOManager__
-
-/// xmlioserver headers ///
-#include "xmlioserver_spl.hpp"
-#include "exception.hpp"
-#include "mpi_manager.hpp"
-
-namespace xmlioserver
-{
-   /// ////////////////////// DÃ©clarations ////////////////////// ///
-   class CXIOSManager
-   {
-      public :
-
-         /// DÃ©finition de type ///
-         typedef enum _xios_type
-         { CLIENT_SERVER = 0 , CLIENT, SERVER } XIOSType;
-         
-         typedef enum _xios_status
-         { LOC_UNUSED = 0, LOC_CLIENT, LOC_SERVER, LOC_CLIENT_SERVER }  XIOSStatus;
-
-         typedef struct
-         {
-            StdSize nbClient;
-            StdSize nbClientPServer;
-            void (*entry)(MPI_Comm, MPI_Comm, MPI_Comm) ;
-         } XIOSClient;
-         
-      public:
-
-         /// Initialisation et finalisation de la bibliothÃšque ///
-         static void Initialise(XIOSType type = CLIENT,
-                                int    * argc = NULL  ,
-                                char *** argv = NULL  );
-         static void Finalize(void);
-
-         /// Ajout de client en mode CLIENT_SERVER et CLIENT///
-         static void AddClient(StdString clientName, StdSize nbClient, StdSize nbClientPServer,
-                               void (*entry_point)(MPI_Comm, MPI_Comm, MPI_Comm));
-
-         /// Lancement des serveurs et/ou des clients ///
-         static void RunServer(StdString clientName,MPI_Comm comm_client_server,MPI_Comm comm_server);
-         static void RunClient(bool launch = false, MPI_Comm comm_client = comm::CMPIManager::GetCommWorld());
-         static void RunClientServer(MPI_Comm comm_client_server = comm::CMPIManager::GetCommWorld());
-
-      public :
-
-         /// Accesseurs statiques ///
-         static XIOSType   GetType(void);
-         static XIOSStatus GetStatus(void);
-         static StdString  GetClientName(void);
-         
-      public :
-         
-         static StdSize GetNbClient(void);
-         static StdSize GetNbLocClient(const StdString & clientName = CXIOSManager::ClientName);
-
-         static StdSize GetNbServer(void);
-         static StdSize GetNbLocServer(const StdString & clientName = CXIOSManager::ClientName);
-         
-      public :
-      
-         /// Information ///
-         static void ShowInformation_CS(MPI_Comm comm_client_server);
-
-         /// Variables statiques privÃ©es ///
-         static StdString ExeName;
-         static std::vector<StdString> ExeOptions;
-
-         static XIOSType   Type;
-         static XIOSStatus Status;
-         static StdString  ClientName;
-         static MPI_Comm Comm_Client_Server, Comm_Server;
-         static xios_map<StdString, XIOSClient> Clients;
-
-   }; // class CXIOSManager
-} // namespace xmlioserver
-
-#endif //__XMLIO_CXMLIOManager__
Index: /XIOS/trunk/src/node/axis.cpp
===================================================================
--- /XIOS/trunk/src/node/axis.cpp	(revision 313)
+++ /XIOS/trunk/src/node/axis.cpp	(revision 314)
@@ -4,5 +4,4 @@
 #include "object_template_impl.hpp"
 #include "group_template_impl.hpp"
-#include "transfert_parameters.hpp"
 
 namespace xmlioserver {
Index: /XIOS/trunk/src/node/context.cpp
===================================================================
--- /XIOS/trunk/src/node/context.cpp	(revision 313)
+++ /XIOS/trunk/src/node/context.cpp	(revision 314)
@@ -9,5 +9,4 @@
 #include "duration.hpp"
 
-#include "data_treatment.hpp"
 #include "context_client.hpp"
 #include "context_server.hpp"
Index: /XIOS/trunk/src/node/domain.cpp
===================================================================
--- /XIOS/trunk/src/node/domain.cpp	(revision 313)
+++ /XIOS/trunk/src/node/domain.cpp	(revision 314)
@@ -4,6 +4,4 @@
 #include "object_template_impl.hpp"
 #include "group_template_impl.hpp"
-
-#include "mpi_manager.hpp"
 
 #include "tree_manager.hpp"
Index: /XIOS/trunk/src/node/field.cpp
===================================================================
--- /XIOS/trunk/src/node/field.cpp	(revision 313)
+++ /XIOS/trunk/src/node/field.cpp	(revision 314)
@@ -7,5 +7,4 @@
 #include "node_type.hpp"
 #include "calendar_util.hpp"
-#include "xios_manager.hpp"
 
 namespace xmlioserver{
Index: /XIOS/trunk/src/node/grid.cpp
===================================================================
--- /XIOS/trunk/src/node/grid.cpp	(revision 313)
+++ /XIOS/trunk/src/node/grid.cpp	(revision 314)
@@ -6,5 +6,4 @@
 #include "group_template_impl.hpp"
 #include <iostream>
-#include "mpi_manager.hpp"
 
 namespace xmlioserver {
@@ -533,5 +532,5 @@
 
 
-
+/*
    void CGrid::computeIndexServer(void)
    {
@@ -669,5 +668,5 @@
       this->out_l_index[0] = out_l_index_srv;      
    }
-   
+*/
    
    void CGrid::inputFieldServer
Index: /XIOS/trunk/src/object_template_impl.hpp
===================================================================
--- /XIOS/trunk/src/object_template_impl.hpp	(revision 313)
+++ /XIOS/trunk/src/object_template_impl.hpp	(revision 314)
@@ -4,5 +4,4 @@
 #include "object_factory.hpp"
 #include "context.hpp"
-#include "transfert_parameters.hpp"
 #include "buffer_in.hpp"
 #include "attribute.hpp"
Index: /XIOS/trunk/src/output/nc4_data_output.cpp
===================================================================
--- /XIOS/trunk/src/output/nc4_data_output.cpp	(revision 313)
+++ /XIOS/trunk/src/output/nc4_data_output.cpp	(revision 314)
@@ -8,5 +8,4 @@
 #include "file.hpp"
 #include "calendar.hpp"
-#include "xios_manager.hpp"
 #include "context.hpp"
 #include "context_server.hpp"
Index: /XIOS/trunk/src/output/onetcdf4.cpp
===================================================================
--- /XIOS/trunk/src/output/onetcdf4.cpp	(revision 313)
+++ /XIOS/trunk/src/output/onetcdf4.cpp	(revision 314)
@@ -1,5 +1,4 @@
 #include "onetcdf4.hpp"
 #include "group_template_impl.hpp"
-#include "mpi_manager.hpp"
 
 namespace xmlioserver
@@ -404,6 +403,4 @@
       void CONetCDF4::sync(void)
       {
-        
-         comm::CMPIManager::Barrier(comm::CMPIManager::GetCommServer());
          CheckError(nc_sync(this->ncidp)) ;
       } 
Index: /XIOS/trunk/src/output/onetcdf4.hpp
===================================================================
--- /XIOS/trunk/src/output/onetcdf4.hpp	(revision 313)
+++ /XIOS/trunk/src/output/onetcdf4.hpp	(revision 314)
@@ -7,5 +7,4 @@
 #include "array.hpp"
 #include "data_output.hpp"
-#include "mpi_manager.hpp"
 
 #include <mpi.h>
Index: OS/trunk/src/rebuild.hpp
===================================================================
--- /XIOS/trunk/src/rebuild.hpp	(revision 313)
+++ 	(revision )
@@ -1,30 +1,0 @@
-#ifndef __XMLIO_CRebuild__
-#define __XMLIO_CRebuild__
-
-/// xmlioserver headers ///
-#include "xmlioserver_spl.hpp"
-
-namespace xmlioserver
-{
-   namespace io
-   {
-      /// ////////////////////// DÃ©clarations ////////////////////// ///
-      class CRebuild
-      {
-         public :
-
-            /// Construteurs ///
-            CRebuild(void);                            // Never implemented.
-            explicit CRebuild(const StdString & filename);
-            CRebuild(const CRebuild  & rebuild);       // Never implemented.
-            CRebuild(const CRebuild  * const rebuild); // Never implemented.
-
-            /// Destructeur ///
-            virtual ~CRebuild(void);
-
-      }; // class CRebuild
-
-   } // namespace io
-} // namespace xmlioserver
-
-#endif // __XMLIO_CRebuild__
Index: OS/trunk/src/server.cpp
===================================================================
--- /XIOS/trunk/src/server.cpp	(revision 313)
+++ 	(revision )
@@ -1,285 +1,0 @@
-#include "xmlioserver_spl.hpp"
-#include "server.hpp"
-
-#include "tree_manager.hpp"
-#include "duration.hpp"
-#include "data_treatment.hpp"
-#include "group_template.hpp"
-#include "group_template_impl.hpp"
-
-namespace xmlioserver {
-namespace comm {
-
-   /// ////////////////////// DÃ©finitions ////////////////////// ///
-   
-   CServer::CServer(MPI_Comm comm_client_server)
-      : blist(comm_client_server)
-   { /* Ne rien faire de plus */ }  
-        
-   CServer::~CServer(void)
-   { /* Ne rien faire de plus */ } 
-   
-   ///--------------------------------------------------------------
-
-   boost::shared_ptr<CServer> CServer::Server;
-
-   ///--------------------------------------------------------------
-   
-   const CBufferList & CServer::getBufferList(void) const 
-   {
-      return (this->blist);
-   }
-
-   ///--------------------------------------------------------------
-
-   boost::shared_ptr<CServer> CServer::CreateServer(MPI_Comm comm_client_server)
-   {
-      if (CServer::Server.get() == NULL)
-         CServer::Server = boost::shared_ptr<CServer>(new CServer(comm_client_server));
-      return (CServer::GetServer());
-   }
-
-   ///--------------------------------------------------------------
-
-   boost::shared_ptr<CServer> CServer::GetServer(void)
-   {
-      return (CServer::Server);
-   }
-   
-   //---------------------------------------------------------------
-   
-   void CServer::run(void)
-   {
-      while (this->blist.recvRequests())
-      {
-         long int managerId = -1, methodId  = -1, nbargs  = -1;
-         long int managerId_= -1, methodId_ = -1, nbargs_ = -1;
-         std::vector<CLinearBuffer> lbuffer;
-         this->blist.getRequests(lbuffer);
-                 
-         for (StdSize i = 0; i < lbuffer.size(); i++)
-         {           
-            lbuffer[i].getRequestInfos(0, managerId, methodId, nbargs);
-            if (((managerId_ != managerId) || (methodId_ != methodId) || (nbargs_ != nbargs)) && (i != 0 ))
-            {
-               ERROR("CServer::run(void)", << "[" << i << "] Les requÃªtes ne sont pas synchronisÃ©es !");
-            }
-            managerId_ = managerId;
-            methodId_  = methodId;
-            nbargs_    = nbargs;
-         }
-            
-         if (managerId == 0)
-         {
-            switch(methodId)
-            {
-               case (0) :
-                  this->initialize();
-                  continue;
-               case (1) :
-                  this->finalize();
-                  return;
-               default  :
-                  ERROR("CServer::run(void)", 
-                     << "[ managerId = " << managerId << ", "
-                     << "[ methodId = "  << methodId  << ", "
-                     << "[ nbargs = "    << nbargs    << "] "
-                     << " Methode inconnue !");
-            }
-         }
-         if (managerId == 1)
-         {
-            switch(methodId)
-            {
-               case (0) :
-                  this->setContext(lbuffer);
-                  continue;
-               case (1) :
-                  this->updateCalendar(lbuffer);
-                  continue;
-               case (2) :
-                  this->setTimestep(lbuffer);
-                  continue;
-               default  :
-                  ERROR("CServer::run(void)", 
-                     << "[ managerId = " << managerId << ", "
-                     << "[ methodId = "  << methodId  << ", "
-                     << "[ nbargs = "    << nbargs    << "] "
-                     << " Methode inconnue !");
-            }
-         }
-         if (managerId == 2)
-         {
-            switch(methodId)
-            {
-               case (0) :
-                  this->writeData(lbuffer, 4);
-                  continue;
-               case (1) :
-                  this->writeData(lbuffer, 8);
-                  continue;
-               default  :
-                  ERROR("CServer::run(void)", 
-                     << "[ managerId = " << managerId << ", "
-                     << "[ methodId = "  << methodId  << ", "
-                     << "[ nbargs = "    << nbargs    << "] "
-                     << " Methode inconnue !");
-            }
-         }
-         ERROR("CServer::run(void)", 
-                << "[ managerId = " << managerId << ", "
-                << "[ methodId = "  << methodId  << ", "
-                << "[ nbargs = "    << nbargs    << "] "
-                << " Methode inconnue !");
-      }
-   }
-
-   //--------------------------------------------------------------
-   
-   void CServer::initialize(void) // manager 0, method 0
-   {
-   }
-   
-   //--------------------------------------------------------------
-   
-   void CServer::finalize(void) // manager 0, method 1
-   {
-      boost::shared_ptr<CContext> context =
-         CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId());
-      boost::shared_ptr<data::CDataTreatment> dtreat = context->getDataTreatment();
-      dtreat->finalize() ;
-
-       comm::CMPIManager::Barrier(CMPIManager::GetCommClientServer());
-   }   
-
-   //--------------------------------------------------------------
-
-   void CServer::setTimestep(const std::vector<CLinearBuffer> & buffer)// manager 1, method 2
-   {
-      boost::shared_ptr<CContext> context =
-         CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId());
-      boost::shared_ptr<data::CDataTreatment> dtreat = context->getDataTreatment();
-
-      StdString durationstr;
-      for (StdSize i = 0; i < buffer.size(); i++)
-      {
-         StdString durationstr_ = buffer[i].getString(3);
-         if (durationstr.compare(durationstr_) != 0 && (i != 0))
-         {
-            ERROR("CServer::setTimestep(const std::vector<CLinearBuffer> & buffer)",
-                  << "[ durationstr 1 = " << durationstr   << ", "
-                  << "[ durationstr 2 = " << durationstr_  << "] "
-                  << " Modification de timestep dÃ©synchronisÃ© !");
-         }
-         else durationstr = durationstr_;
-
-      }
-      dtreat->set_timestep(date::CDuration::FromString(durationstr));
-   }
-
-   //--------------------------------------------------------------
-             
-   void CServer::setContext(const std::vector<CLinearBuffer> & buffer) // manager 1, method 0
-   { 
-      StdString contextId;
-      for (StdSize i = 0; i < buffer.size(); i++)
-      {
-         StdString contextId_ = buffer[i].getString(3);
-         if (contextId.compare(contextId_) != 0 && (i != 0))
-         {
-            ERROR("CServer::setContext(const std::vector<CLinearBuffer> & buffer)", 
-                  << "[ contextId 1 = " << contextId   << ", "
-                  << "[ contextId 2 = " << contextId_  << "] "
-                  << " Changement de contexte dÃ©synchronisÃ© !");
-         }
-         else contextId = contextId_;
-         
-      }
-      CTreeManager::SetCurrentContextId(contextId);
-   }
-   
-   //--------------------------------------------------------------
-   
-   void CServer::updateCalendar(const std::vector<CLinearBuffer> & buffer) // manager 1, method 1
-   {
-      boost::shared_ptr<CContext> context =
-         CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId());
-      boost::shared_ptr<data::CDataTreatment> dtreat = context->getDataTreatment();
-
-      int timestep = -1;
-      for (StdSize i = 0; i < buffer.size(); i++)
-      {
-         int timestep_ = buffer[i].getInt(3);
-         if ((timestep_ != timestep)  && (i != 0))
-         {
-            ERROR("CServer::updateCalendar(const std::vector<CLinearBuffer> & buffer)", 
-                  << "[ timestep 1 = " << timestep   << ", "
-                  << "[ timestep 2 = " << timestep_  << "] "
-                  << " Mise Ã  jour du calendrier dÃ©synchronisÃ©e !");
-         }
-         else timestep = timestep_;
-      }
-      dtreat->update_calendar(timestep);
-   }
-   
-   //--------------------------------------------------------------
-         
-   void CServer::writeData(const std::vector<CLinearBuffer> & buffer, int prec)  // manager 2, method 0 - 1
-   {
-      boost::shared_ptr<CContext> context =
-         CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId());
-      boost::shared_ptr<data::CDataTreatment> dtreat = context->getDataTreatment();
-
-      StdString fieldId, fileId;
-      for (StdSize i = 0; i < buffer.size(); i++)
-      {
-         StdString fieldId_ = buffer[i].getString(3);
-         StdString fileId_ = buffer[i].getString(4);
-
-         if (fieldId.compare(fieldId_) != 0 && (i != 0))
-         {           
-            ERROR("CServer::writeData(const std::vector<CLinearBuffer> & buffer, int prec)", 
-                  << "[fieldId 1 = " << fieldId   << ", "
-                  << " fieldId 2 = " << fieldId_  << "] "
-                  << " Ecriture des donnÃ©es dÃ©synchronisÃ©e !");
-         }
-         else fieldId = fieldId_;
-
-         if (fileId.compare(fileId_) != 0 && (i != 0))
-         {
-            ERROR("CServer::writeData(const std::vector<CLinearBuffer> & buffer, int prec)",
-                  << "[fileId 1 = " << fileId   << ", "
-                  << " fileId 2 = " << fileId_  << "] "
-                  << " Ecriture des donnÃ©es dÃ©synchronisÃ©e !");
-         }
-         else fileId = fileId_;
-      }
-      
-      if (prec == 4)
-      {
-         std::deque<ARRAY(float, 1)> dataArray(buffer.size());
-         for (StdSize i = 0; i < buffer.size(); i++)
-            dataArray[i] = buffer[i].getFloatArray(5);
-         // Jamais atteint car les donnÃ©es sont transfÃ©rÃ©es en tant que double
-         return;
-      }      
-      else if (prec == 8)
-      {
-         std::deque<ARRAY(double, 1)> dataArray(buffer.size());
-         for (StdSize i = 0; i < buffer.size(); i++)
-            dataArray[i] = buffer[i].getDoubleArray(5);
-         dtreat->write_data(fieldId, fileId, dataArray);
-         return;
-      }      
-      else
-      {
-         ERROR("CServer::writeData(const std::vector<CLinearBuffer> & buffer, int prec)", 
-               << " PrÃ©cision des donnÃ©es invalide !");
-      }
-   }
-  
-   ///--------------------------------------------------------------
-   
-   
-} // namespace comm
-} // namespace xmlioserver
Index: OS/trunk/src/server_main.f90
===================================================================
--- /XIOS/trunk/src/server_main.f90	(revision 313)
+++ 	(revision )
@@ -1,10 +1,0 @@
-PROGRAM server_main
-  USE xios
-  IMPLICIT NONE
-  INCLUDE "mpif.h"
-  INTEGER :: ierr
-  
-!    CALL MPI_INIT(ierr)  
-    CALL xios_init_server
-!    CALL MPI_FINALIZE(ierr)  
-  END PROGRAM server_main
Index: /XIOS/trunk/src/server_ym.cpp
===================================================================
--- /XIOS/trunk/src/server_ym.cpp	(revision 313)
+++ /XIOS/trunk/src/server_ym.cpp	(revision 314)
@@ -3,5 +3,4 @@
 #include "server_ym.hpp"
 #include "type.hpp"
-#include "buffer.hpp"
 #include "context.hpp"
 #include "object_template_impl.hpp"
@@ -350,7 +349,4 @@
               <<"Context has already been registred") ;
       
-//      tree::CContext* ptr ;
-//      if (tree::CContext::has(contextId)) ptr=tree::CContext::get(contextId).get() ;
-//      else ptr=tree::CContext::create(contextId).get() ;
       shared_ptr<CContext> context=tree::CTreeManager::CreateContext(contextId) ;
       contextList[contextId]=context.get() ;
Index: OS/trunk/src/transfert_parameters.hpp
===================================================================
--- /XIOS/trunk/src/transfert_parameters.hpp	(revision 313)
+++ 	(revision )
@@ -1,18 +1,0 @@
-#ifndef __TRANSFERT_PARAMETERS_HPP__
-#define __TRANSFERT_PARAMETERS_HPP__
-
-
-
-#define CLASS_ID_CONTEXT 1
-#define CLASS_ID_FIELD 2
-#define CLASS_ID_FILE 3
-#define CLASS_ID_AXIS 3
-#define CLASS_ID_DOMAIN 4
-#define CLASS_ID_GRID 5
-
-#define TYPE_ID_FINALIZE 2
-#define TYPE_ID_SEND_ATTR 3
-
-
-
-#endif
Index: /XIOS/trunk/src/xios_server.f90
===================================================================
--- /XIOS/trunk/src/xios_server.f90	(revision 314)
+++ /XIOS/trunk/src/xios_server.f90	(revision 314)
@@ -0,0 +1,9 @@
+PROGRAM server_main
+  USE xios
+  IMPLICIT NONE
+  INCLUDE "mpif.h"
+  INTEGER :: ierr
+  
+    CALL xios_init_server
+
+  END PROGRAM server_main
Index: /XIOS/trunk/src/xmlioserver.hpp
===================================================================
--- /XIOS/trunk/src/xmlioserver.hpp	(revision 313)
+++ /XIOS/trunk/src/xmlioserver.hpp	(revision 314)
@@ -5,8 +5,5 @@
 
 /// xmlioserver headers ///
-#include "mpi_manager.hpp"
 #include "tree_manager.hpp"
-#include "xios_manager.hpp"
-#include "data_treatment.hpp"
 #include "nc4_data_output.hpp"
 
@@ -19,5 +16,4 @@
 using namespace xmlioserver::tree;
 using namespace xmlioserver::xml;
-using namespace xmlioserver::comm;
 using namespace xmlioserver::func;
 
