Index: /XIOS/trunk/bld.cfg
===================================================================
--- /XIOS/trunk/bld.cfg	(revision 312)
+++ /XIOS/trunk/bld.cfg	(revision 313)
@@ -28,5 +28,5 @@
 bld::target libxios.a
 #bld::target main_server.exe test_xios.exe 
-bld::target server_main.exe test_cs.exe 
+bld::target generate_fortran_interface.exe server_main.exe test_cs.exe 
 bld::exe_dep
 
Index: /XIOS/trunk/make_xios
===================================================================
--- /XIOS/trunk/make_xios	(revision 312)
+++ /XIOS/trunk/make_xios	(revision 313)
@@ -4,4 +4,5 @@
 compil_full="false"
 use_oasis="false"
+job="1"
 
 # Traitement de la ligne de commande
@@ -17,7 +18,8 @@
          "--debug") compil_mode="debug" ; shift ;;
          "--arch")  arch=$2     ; shift ; shift ;;
-         "--full")  compil_full="true"  ; shift ; shift ;;
+         "--full")  compil_full="true"  ; shift ;;
          "--use_oasis")  use_oasis="true"  ; shift  ;;
          "--doc")   doc="true"          ; shift ;;
+         "--job")   job=$2              ; shift ; shift ;;
          *)         code="$1"           ; shift ;;
       esac
@@ -117,7 +119,7 @@
 if [[ "$compil_full" == "true" ]]
    then
-   fcm build -f
+   fcm build -f -j $job
 else
-  fcm build
+  fcm build -j $job
 fi
 
Index: /XIOS/trunk/src/attribute.hpp
===================================================================
--- /XIOS/trunk/src/attribute.hpp	(revision 312)
+++ /XIOS/trunk/src/attribute.hpp	(revision 313)
@@ -53,5 +53,15 @@
             virtual void toBinary  (StdOStream & os) const = 0;
             virtual void fromBinary(StdIStream & is) = 0;
+            virtual void generateCInterface(ostream& oss, const string& className) = 0 ;
+            virtual void generateFortran2003Interface(ostream& oss, const string& className) = 0 ;
+            virtual void generateFortranInterfaceDeclaration_(ostream& oss,const string& className) = 0 ;
+            virtual void generateFortranInterfaceDeclaration(ostream& oss,const string& className) = 0 ;
+            virtual void generateFortranInterfaceBody_(ostream& oss,const string& className) = 0 ;
+            virtual void generateFortranInterfaceGetDeclaration_(ostream& oss,const string& className) = 0 ;
+            virtual void generateFortranInterfaceGetDeclaration(ostream& oss,const string& className) = 0 ;
+            virtual void generateFortranInterfaceGetBody_(ostream& oss,const string& className) = 0 ;
 
+
+            
          protected :
 
Index: /XIOS/trunk/src/attribute_map.cpp
===================================================================
--- /XIOS/trunk/src/attribute_map.cpp	(revision 312)
+++ /XIOS/trunk/src/attribute_map.cpp	(revision 313)
@@ -1,3 +1,4 @@
 #include "attribute_map.hpp"
+#include "indent.hpp"
 
 namespace xmlioserver
@@ -186,5 +187,350 @@
       }
       
+      void CAttributeMap::generateCInterface(ostream& oss, const string& className)
+      {
+         SuperClassMap::const_iterator it = SuperClassMap::begin(), end = SuperClassMap::end();
+         for (; it != end; it++)
+         {
+           it->second->generateCInterface(oss,className) ;
+           oss<<iendl<<iendl ;
+         }
+      }
+
+      void CAttributeMap::generateFortran2003Interface(ostream& oss, const string& className)
+      {
+         SuperClassMap::const_iterator it = SuperClassMap::begin(), end = SuperClassMap::end();
+         for (; it != end; it++)
+         {
+           it->second->generateFortran2003Interface(oss,className) ;
+           oss<<iendl<<iendl ;
+         }
+      }      
+      
       ///--------------------------------------------------------------
+
+      void CAttributeMap::generateFortranInterface_hdl_(ostream& oss, const string& className)
+      {
+         oss<<"SUBROUTINE xios(set_"<<className<<"_attr_hdl_)   &"<<iendl++ ;
+         ostringstream* oss2 ;
+         SuperClassMap::const_iterator it ;
+         SuperClassMap::const_iterator begin = SuperClassMap::begin(), end = SuperClassMap::end();
+         
+         oss2=new ostringstream ;
+         
+         *oss2<<"( "<<className<<"_hdl"  ;
+         
+         for ( it=begin ; it != end; it++) 
+         {
+           *oss2<<", "<<it->second->getName()<<"_" ;
+           if (oss2->str().size()>90) 
+           {
+             oss<<oss2->str()<<"  &"<<iendl ;
+             delete oss2 ;
+             oss2=new ostringstream ;
+           }
+         }
+         *oss2<<" )" ;
+         oss<<oss2->str()<<iendl ;
+         oss<<iendl ;
+         delete oss2 ; 
+         
+         oss<<"IMPLICIT NONE"<<iendl++ ;
+         oss<<"TYPE(txios("<<className<<")) , INTENT(IN) :: "<<className<<"_hdl"<<iendl ;
+         
+         for (it=begin; it != end; it++)
+         {
+           it->second->generateFortranInterfaceDeclaration_(oss,className) ;
+         }
+         
+         oss<<iendl ;
+         
+         for (it=begin; it != end; it++)
+         {
+           it->second->generateFortranInterfaceBody_(oss,className) ;
+           oss<<iendl ;
+         }
+         
+         oss<<iendl--<<iendl-- ;
+         oss<<"END SUBROUTINE xios(set_"<<className<<"_attr_hdl_)"<<iendl ;
+         
+      }      
+
+      void CAttributeMap::generateFortranInterfaceGet_hdl_(ostream& oss, const string& className)
+      {
+         oss<<"SUBROUTINE xios(get_"<<className<<"_attr_hdl_)   &"<<iendl++ ;
+         ostringstream* oss2 ;
+         SuperClassMap::const_iterator it ;
+         SuperClassMap::const_iterator begin = SuperClassMap::begin(), end = SuperClassMap::end();
+         
+         oss2=new ostringstream ;
+         
+         *oss2<<"( "<<className<<"_hdl"  ;
+         
+         for ( it=begin ; it != end; it++) 
+         {
+           *oss2<<", "<<it->second->getName()<<"_" ;
+           if (oss2->str().size()>90) 
+           {
+             oss<<oss2->str()<<"  &"<<iendl ;
+             delete oss2 ;
+             oss2=new ostringstream ;
+           }
+         }
+         *oss2<<" )" ;
+         oss<<oss2->str()<<iendl ;
+         oss<<iendl ;
+         delete oss2 ; 
+         
+         oss<<"IMPLICIT NONE"<<iendl++ ;
+         oss<<"TYPE(txios("<<className<<")) , INTENT(IN) :: "<<className<<"_hdl"<<iendl ;
+         
+         for (it=begin; it != end; it++)
+         {
+           it->second->generateFortranInterfaceGetDeclaration_(oss,className) ;
+         }
+         
+         oss<<iendl ;
+         
+         for (it=begin; it != end; it++)
+         {
+           it->second->generateFortranInterfaceGetBody_(oss,className) ;
+           oss<<iendl ;
+         }
+         
+         oss<<iendl--<<iendl-- ;
+         oss<<"END SUBROUTINE xios(get_"<<className<<"_attr_hdl_)"<<iendl ;
+         
+      }      
+
+      void CAttributeMap::generateFortranInterface_hdl(ostream& oss, const string& className)
+      {
+         oss<<"SUBROUTINE xios(set_"<<className<<"_attr_hdl)  &"<<iendl++ ;
+         ostringstream* oss2 ;
+         SuperClassMap::const_iterator it ;
+         SuperClassMap::const_iterator begin = SuperClassMap::begin(), end = SuperClassMap::end();
+         
+         oss2=new ostringstream ;
+         *oss2<<"( "<<className<<"_hdl"  ;
+         for ( it=begin ; it != end; it++) 
+         {
+           *oss2<<", "<<it->second->getName() ;
+           if (oss2->str().size()>90) 
+           {
+             oss<<oss2->str()<<"  &"<<iendl ;
+             delete oss2 ;
+             oss2=new ostringstream ;
+           }
+         }
+         *oss2<<" )" ;
+         oss<<oss2->str()<<iendl ;
+         oss<<iendl ;
+         delete oss2 ; 
+         oss2=new ostringstream ;
+         
+         oss<<"IMPLICIT NONE"<<iendl++ ;
+         oss<<"TYPE(txios("<<className<<")) , INTENT(IN) :: "<<className<<"_hdl"<<iendl ;
+         
+         for (it=begin; it != end; it++)
+         {
+           it->second->generateFortranInterfaceDeclaration(oss,className) ;
+         }
+         
+         oss<<iendl ;
+         
+         oss<<"CALL xios(set_"<<className<<"_attr_hdl_)  &"<<iendl ;
+         
+         *oss2<<"( "<<className<<"_hdl"  ;
+         for ( it=begin ; it != end; it++) 
+         {
+           *oss2<<", "<<it->second->getName() ;
+           if (oss2->str().size()>90) 
+           {
+             oss<<oss2->str()<<"  &"<<iendl ;
+             delete oss2 ;
+             oss2=new ostringstream ;
+           }
+         }
+         *oss2<<" )" ;
+         oss<<oss2->str() ;
+         delete oss2 ; 
+         
+         oss<<iendl--<<iendl-- ;
+         oss<<"END SUBROUTINE xios(set_"<<className<<"_attr_hdl)"<<iendl ;
+      }      
+      
+ 
+      void CAttributeMap::generateFortranInterfaceGet_hdl(ostream& oss, const string& className)
+      {
+         oss<<"SUBROUTINE xios(get_"<<className<<"_attr_hdl)  &"<<iendl++ ;
+         ostringstream* oss2 ;
+         SuperClassMap::const_iterator it ;
+         SuperClassMap::const_iterator begin = SuperClassMap::begin(), end = SuperClassMap::end();
+         
+         oss2=new ostringstream ;
+         *oss2<<"( "<<className<<"_hdl"  ;
+         for ( it=begin ; it != end; it++) 
+         {
+           *oss2<<", "<<it->second->getName() ;
+           if (oss2->str().size()>90) 
+           {
+             oss<<oss2->str()<<"  &"<<iendl ;
+             delete oss2 ;
+             oss2=new ostringstream ;
+           }
+         }
+         *oss2<<" )" ;
+         oss<<oss2->str()<<iendl ;
+         oss<<iendl ;
+         delete oss2 ; 
+         oss2=new ostringstream ;
+         
+         oss<<"IMPLICIT NONE"<<iendl++ ;
+         oss<<"TYPE(txios("<<className<<")) , INTENT(IN) :: "<<className<<"_hdl"<<iendl ;
+         
+         for (it=begin; it != end; it++)
+         {
+           it->second->generateFortranInterfaceGetDeclaration(oss,className) ;
+         }
+         
+         oss<<iendl ;
+         
+         oss<<"CALL xios(get_"<<className<<"_attr_hdl_)  &"<<iendl ;
+         
+         *oss2<<"( "<<className<<"_hdl"  ;
+         for ( it=begin ; it != end; it++) 
+         {
+           *oss2<<", "<<it->second->getName() ;
+           if (oss2->str().size()>90) 
+           {
+             oss<<oss2->str()<<"  &"<<iendl ;
+             delete oss2 ;
+             oss2=new ostringstream ;
+           }
+         }
+         *oss2<<" )" ;
+         oss<<oss2->str() ;
+         delete oss2 ; 
+         
+         oss<<iendl--<<iendl-- ;
+         oss<<"END SUBROUTINE xios(get_"<<className<<"_attr_hdl)"<<iendl ;
+      }      
+      
+      void CAttributeMap::generateFortranInterface_id(ostream& oss, const string& className)
+      {
+         oss<<"SUBROUTINE xios(set_"<<className<<"_attr)  &"<<iendl++ ;
+         ostringstream* oss2 ;
+         SuperClassMap::const_iterator it ;
+         SuperClassMap::const_iterator begin = SuperClassMap::begin(), end = SuperClassMap::end();
+         
+         oss2=new ostringstream ;
+         *oss2<<"( "<<className<<"_id"  ;
+         for ( it=begin ; it != end; it++) 
+         {
+           *oss2<<", "<<it->second->getName() ;
+           if (oss2->str().size()>90) 
+           {
+             oss<<oss2->str()<<"  &"<<iendl ;
+             delete oss2 ;
+             oss2=new ostringstream ;
+           }
+         }
+         *oss2<<" )" ;
+         oss<<oss2->str()<<iendl ;
+         oss<<iendl ;
+         delete oss2 ; 
+         oss2=new ostringstream ;
+         
+         oss<<"IMPLICIT NONE"<<iendl++ ;
+
+         oss<<"TYPE(txios("<<className<<"))  :: "<<className<<"_hdl"<<iendl ;
+         oss<<"CHARACTER(LEN=*), INTENT(IN) ::"<<className<<"_id"<<iendl ;
+         
+         for (it=begin; it != end; it++)
+         {
+           it->second->generateFortranInterfaceDeclaration(oss,className) ;
+         }
+         
+         oss<<iendl ;
+         oss<<"CALL xios(get_"<<className<<"_handle)("<<className<<"_id,"<<className<<"_hdl)"<<iendl ; 
+         oss<<"CALL xios(set_"<<className<<"_attr_hdl_)   &"<<iendl ;
+         *oss2<<"( "<<className<<"_hdl"  ;
+         for ( it=begin ; it != end; it++) 
+         {
+           *oss2<<", "<<it->second->getName() ;
+           if (oss2->str().size()>90) 
+           {
+             oss<<oss2->str()<<"  &"<<iendl ;
+             delete oss2 ;
+             oss2=new ostringstream ;
+           }
+         }
+         *oss2<<" )" ;
+         oss<<oss2->str() ;
+         delete oss2 ; 
+         
+         oss<<iendl--<<iendl-- ;
+         oss<<"END SUBROUTINE xios(set_"<<className<<"_attr)"<<iendl ;
+         
+      }      
+      
+      void CAttributeMap::generateFortranInterfaceGet_id(ostream& oss, const string& className)
+      {
+         oss<<"SUBROUTINE xios(get_"<<className<<"_attr)  &"<<iendl++ ;
+         ostringstream* oss2 ;
+         SuperClassMap::const_iterator it ;
+         SuperClassMap::const_iterator begin = SuperClassMap::begin(), end = SuperClassMap::end();
+         
+         oss2=new ostringstream ;
+         *oss2<<"( "<<className<<"_id"  ;
+         for ( it=begin ; it != end; it++) 
+         {
+           *oss2<<", "<<it->second->getName() ;
+           if (oss2->str().size()>90) 
+           {
+             oss<<oss2->str()<<"  &"<<iendl ;
+             delete oss2 ;
+             oss2=new ostringstream ;
+           }
+         }
+         *oss2<<" )" ;
+         oss<<oss2->str()<<iendl ;
+         oss<<iendl ;
+         delete oss2 ; 
+         oss2=new ostringstream ;
+         
+         oss<<"IMPLICIT NONE"<<iendl++ ;
+
+         oss<<"TYPE(txios("<<className<<"))  :: "<<className<<"_hdl"<<iendl ;
+         oss<<"CHARACTER(LEN=*), INTENT(IN) ::"<<className<<"_id"<<iendl ;
+         
+         for (it=begin; it != end; it++)
+         {
+           it->second->generateFortranInterfaceGetDeclaration(oss,className) ;
+         }
+         
+         oss<<iendl ;
+         oss<<"CALL xios(get_"<<className<<"_handle)("<<className<<"_id,"<<className<<"_hdl)"<<iendl ; 
+         oss<<"CALL xios(get_"<<className<<"_attr_hdl_)   &"<<iendl ;
+         *oss2<<"( "<<className<<"_hdl"  ;
+         for ( it=begin ; it != end; it++) 
+         {
+           *oss2<<", "<<it->second->getName() ;
+           if (oss2->str().size()>90) 
+           {
+             oss<<oss2->str()<<"  &"<<iendl ;
+             delete oss2 ;
+             oss2=new ostringstream ;
+           }
+         }
+         *oss2<<" )" ;
+         oss<<oss2->str() ;
+         delete oss2 ; 
+         
+         oss<<iendl--<<iendl-- ;
+         oss<<"END SUBROUTINE xios(get_"<<className<<"_attr)"<<iendl ;
+         
+      }      
+      ///--------------------------------------------------------------
+  
 
    } // namespace tree
Index: /XIOS/trunk/src/attribute_map.hpp
===================================================================
--- /XIOS/trunk/src/attribute_map.hpp	(revision 312)
+++ /XIOS/trunk/src/attribute_map.hpp	(revision 313)
@@ -48,4 +48,12 @@
             virtual void toBinary  (StdOStream & os) const;
             virtual void fromBinary(StdIStream & is);
+            virtual void generateCInterface(ostream& oss, const string& className) ;
+            virtual void generateFortran2003Interface(ostream& oss, const string& className) ;
+            virtual void generateFortranInterface_hdl_(ostream& oss, const string& className) ;
+            virtual void generateFortranInterface_hdl(ostream& oss, const string& className) ;
+            virtual void generateFortranInterface_id(ostream& oss, const string& className) ;
+            virtual void generateFortranInterfaceGet_hdl_(ostream& oss, const string& className) ;
+            virtual void generateFortranInterfaceGet_hdl(ostream& oss, const string& className) ;
+            virtual void generateFortranInterfaceGet_id(ostream& oss, const string& className) ;
 
          protected :
Index: /XIOS/trunk/src/attribute_template.hpp
===================================================================
--- /XIOS/trunk/src/attribute_template.hpp	(revision 312)
+++ /XIOS/trunk/src/attribute_template.hpp	(revision 313)
@@ -64,6 +64,14 @@
             virtual bool fromBuffer(CBufferIn& buffer) ;
             virtual size_t size(void) const;
-   
+            virtual void generateCInterface(ostream& oss,const string& className) ;
+            virtual void generateFortran2003Interface(ostream& oss,const string& className) ;
+            virtual void generateFortranInterfaceDeclaration_(ostream& oss,const string& className) ;
+            virtual void generateFortranInterfaceBody_(ostream& oss,const string& className) ;
+            virtual void generateFortranInterfaceDeclaration(ostream& oss,const string& className) ;
+            virtual void generateFortranInterfaceGetDeclaration_(ostream& oss,const string& className) ;
+            virtual void generateFortranInterfaceGetBody_(ostream& oss,const string& className) ;
+            virtual void generateFortranInterfaceGetDeclaration(ostream& oss,const string& className) ;
 
+      
          protected :
 
Index: /XIOS/trunk/src/attribute_template_impl.hpp
===================================================================
--- /XIOS/trunk/src/attribute_template_impl.hpp	(revision 312)
+++ /XIOS/trunk/src/attribute_template_impl.hpp	(revision 313)
@@ -6,7 +6,11 @@
 #include "buffer_in.hpp"
 #include "buffer_out.hpp"
-
+#include "generate_interface_impl.hpp"
+
+
+  
 namespace xmlioserver
 {
+
    namespace tree
    {
@@ -181,4 +185,53 @@
       }
 
+      template <typename T>
+      void CAttributeTemplate<T>::generateCInterface(ostream& oss,const string& className)
+      {
+        CInterface::AttributeCInterface<T>(oss, className, this->getName()) ;
+      }
+      
+      template <typename T>
+      void CAttributeTemplate<T>::generateFortran2003Interface(ostream& oss,const string& className)
+      {
+        CInterface::AttributeFortran2003Interface<T>(oss, className, this->getName()) ;
+      }
+      
+      template <typename T>
+      void CAttributeTemplate<T>::generateFortranInterfaceDeclaration_(ostream& oss,const string& className)
+      {
+        CInterface::AttributeFortranInterfaceDeclaration<T>(oss, className, this->getName()+"_") ;
+      }
+ 
+      template <typename T>
+      void CAttributeTemplate<T>::generateFortranInterfaceBody_(ostream& oss,const string& className)
+      {
+        CInterface::AttributeFortranInterfaceBody<T>(oss, className, this->getName()) ;
+      }
+
+      template <typename T>
+      void CAttributeTemplate<T>::generateFortranInterfaceDeclaration(ostream& oss,const string& className)
+      {
+        CInterface::AttributeFortranInterfaceDeclaration<T>(oss, className, this->getName()) ;
+      }
+      
+      template <typename T>
+      void CAttributeTemplate<T>::generateFortranInterfaceGetDeclaration_(ostream& oss,const string& className)
+      {
+        CInterface::AttributeFortranInterfaceGetDeclaration<T>(oss, className, this->getName()+"_") ;
+      }
+ 
+      template <typename T>
+      void CAttributeTemplate<T>::generateFortranInterfaceGetBody_(ostream& oss,const string& className)
+      {
+        CInterface::AttributeFortranInterfaceGetBody<T>(oss, className, this->getName()) ;
+      }
+
+      template <typename T>
+      void CAttributeTemplate<T>::generateFortranInterfaceGetDeclaration(ostream& oss,const string& className)
+      {
+        CInterface::AttributeFortranInterfaceGetDeclaration<T>(oss, className, this->getName()) ;
+      }
+ 
+      
       //---------------------------------------------------------------
 
Index: /XIOS/trunk/src/config/axis_attribute.conf
===================================================================
--- /XIOS/trunk/src/config/axis_attribute.conf	(revision 312)
+++ /XIOS/trunk/src/config/axis_attribute.conf	(revision 313)
@@ -6,5 +6,5 @@
 
 DECLARE_ATTRIBUTE(int,       size)
-DECLARE_ATTRIBUTE(ARRAY(double, 1), zvalue)
+DECLARE_ATTRIBUTE(ARRAY(double, 1), value)
 
 
Index: /XIOS/trunk/src/fortran/axis_interface.f90
===================================================================
--- /XIOS/trunk/src/fortran/axis_interface.f90	(revision 312)
+++ /XIOS/trunk/src/fortran/axis_interface.f90	(revision 313)
@@ -4,45 +4,4 @@
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
      
-      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_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_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_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_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_set_axis_zvalue(axis_hdl, zvalue, zvalue_extent1) BIND(C)
-         USE ISO_C_BINDING
-         INTEGER (kind = C_INTPTR_T), VALUE        :: axis_hdl
-         REAL    (kind = C_DOUBLE)  , DIMENSION(*) :: zvalue
-         INTEGER (kind = C_INT)     , VALUE        :: zvalue_extent1
-      END SUBROUTINE cxios_set_axis_zvalue
-      
       SUBROUTINE cxios_axis_handle_create(ret, idt, idt_size) BIND(C)
          USE ISO_C_BINDING
Index: /XIOS/trunk/src/fortran/axisgroup_interface.f90
===================================================================
--- /XIOS/trunk/src/fortran/axisgroup_interface.f90	(revision 312)
+++ /XIOS/trunk/src/fortran/axisgroup_interface.f90	(revision 313)
@@ -4,44 +4,4 @@
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
      
-      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_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_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_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_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_set_axisgroup_zvalue(axisgroup_hdl, zvalue, zvalue_extent1) BIND(C)
-         USE ISO_C_BINDING
-         INTEGER (kind = C_INTPTR_T), VALUE        :: axisgroup_hdl
-         REAL    (kind = C_DOUBLE)  , DIMENSION(*) :: zvalue
-         INTEGER (kind = C_INT)     , VALUE        :: zvalue_extent1
-      END SUBROUTINE cxios_set_axisgroup_zvalue
   
       SUBROUTINE cxios_axisgroup_handle_create(ret, idt, idt_size) BIND(C)
Index: /XIOS/trunk/src/fortran/context_interface.f90
===================================================================
--- /XIOS/trunk/src/fortran/context_interface.f90	(revision 312)
+++ /XIOS/trunk/src/fortran/context_interface.f90	(revision 313)
@@ -4,25 +4,4 @@
    INTERFACE ! Ne pas appeler directement/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_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_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_context_handle_create(ret, idt, idt_size) BIND(C)
          import C_CHAR, C_INTPTR_T, C_INT
Index: /XIOS/trunk/src/fortran/domain_interface.f90
===================================================================
--- /XIOS/trunk/src/fortran/domain_interface.f90	(revision 312)
+++ /XIOS/trunk/src/fortran/domain_interface.f90	(revision 313)
@@ -3,176 +3,4 @@
        
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
-       
-      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_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_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_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_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_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_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_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_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_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_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_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_set_domain_mask(domain_hdl, mask, mask_extent1, mask_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        :: mask_extent1
-         INTEGER (kind = C_INT)     , VALUE        :: mask_extent2
-      END SUBROUTINE cxios_set_domain_mask
-
-      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_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_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_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_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_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_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_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_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_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_set_domain_data_i_index(domain_hdl, data_i_index, 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        :: data_i_index_extent1
-      END SUBROUTINE cxios_set_domain_data_i_index
-
-      SUBROUTINE cxios_set_domain_data_j_index(domain_hdl, data_j_index, 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        :: data_j_index_extent1
-      END SUBROUTINE cxios_set_domain_data_j_index
-
-      SUBROUTINE cxios_set_domain_lonvalue(domain_hdl, lonvalue, 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        :: lonvalue_extent1
-      END SUBROUTINE cxios_set_domain_lonvalue
-
-      SUBROUTINE cxios_set_domain_latvalue(domain_hdl, latvalue, 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        :: latvalue_extent1
-      END SUBROUTINE cxios_set_domain_latvalue
        
       SUBROUTINE cxios_domain_handle_create(ret, idt, idt_size) BIND(C)
Index: /XIOS/trunk/src/fortran/domaingroup_interface.f90
===================================================================
--- /XIOS/trunk/src/fortran/domaingroup_interface.f90	(revision 312)
+++ /XIOS/trunk/src/fortran/domaingroup_interface.f90	(revision 313)
@@ -4,176 +4,4 @@
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
        
-      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_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_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_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_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_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_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_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_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_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_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_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_set_domaingroup_mask(domaingroup_hdl, mask, mask_extent1, mask_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        :: mask_extent1
-         INTEGER (kind = C_INT)     , VALUE        :: mask_extent2
-      END SUBROUTINE cxios_set_domaingroup_mask
-
-      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_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_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_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_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_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_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_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_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_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_set_domaingroup_data_i_index(domaingroup_hdl, data_i_index, 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        :: data_i_index_extent1
-      END SUBROUTINE cxios_set_domaingroup_data_i_index
-
-      SUBROUTINE cxios_set_domaingroup_data_j_index(domaingroup_hdl, data_j_index, 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        :: data_j_index_extent1
-      END SUBROUTINE cxios_set_domaingroup_data_j_index
-
-      SUBROUTINE cxios_set_domaingroup_lonvalue(domaingroup_hdl, lonvalue, 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        :: lonvalue_extent1
-      END SUBROUTINE cxios_set_domaingroup_lonvalue
-
-      SUBROUTINE cxios_set_domaingroup_latvalue(domaingroup_hdl, latvalue, 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        :: latvalue_extent1
-      END SUBROUTINE cxios_set_domaingroup_latvalue
-      
       SUBROUTINE cxios_domaingroup_handle_create(ret, idt, idt_size) BIND(C)
          USE ISO_C_BINDING
Index: /XIOS/trunk/src/fortran/field_interface.f90
===================================================================
--- /XIOS/trunk/src/fortran/field_interface.f90	(revision 312)
+++ /XIOS/trunk/src/fortran/field_interface.f90	(revision 313)
@@ -3,98 +3,4 @@
    
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
-   
-      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_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_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_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_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_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_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_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_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_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_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_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_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_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_field_handle_create(ret, idt, idt_size) BIND(C)
Index: /XIOS/trunk/src/fortran/fieldgroup_interface.f90
===================================================================
--- /XIOS/trunk/src/fortran/fieldgroup_interface.f90	(revision 312)
+++ /XIOS/trunk/src/fortran/fieldgroup_interface.f90	(revision 313)
@@ -4,98 +4,4 @@
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
    
-      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_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_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_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_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_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_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_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_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_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_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_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_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_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_fieldgroup_handle_create(ret, idt, idt_size) BIND(C)
          USE ISO_C_BINDING
Index: /XIOS/trunk/src/fortran/file_interface.f90
===================================================================
--- /XIOS/trunk/src/fortran/file_interface.f90	(revision 312)
+++ /XIOS/trunk/src/fortran/file_interface.f90	(revision 313)
@@ -3,44 +3,4 @@
    
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
-   
-      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_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_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_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_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_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_file_handle_create(ret, idt, idt_size) BIND(C)
@@ -58,11 +18,4 @@
       END SUBROUTINE cxios_file_valid_id
 
-     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
-      
    END INTERFACE
    
Index: /XIOS/trunk/src/fortran/filegroup_interface.f90
===================================================================
--- /XIOS/trunk/src/fortran/filegroup_interface.f90	(revision 312)
+++ /XIOS/trunk/src/fortran/filegroup_interface.f90	(revision 313)
@@ -4,44 +4,4 @@
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
    
-      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_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_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_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_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_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_filegroup_handle_create(ret, idt, idt_size) BIND(C)
          USE ISO_C_BINDING
@@ -58,11 +18,4 @@
       END SUBROUTINE cxios_filegroup_valid_id
 
-      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
-      
    END INTERFACE
    
Index: /XIOS/trunk/src/fortran/grid_interface.f90
===================================================================
--- /XIOS/trunk/src/fortran/grid_interface.f90	(revision 312)
+++ /XIOS/trunk/src/fortran/grid_interface.f90	(revision 313)
@@ -3,33 +3,5 @@
      
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
-     
-      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_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_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_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_grid_handle_create(ret, idt, idt_size) BIND(C)
          USE ISO_C_BINDING
Index: /XIOS/trunk/src/fortran/gridgroup_interface.f90
===================================================================
--- /XIOS/trunk/src/fortran/gridgroup_interface.f90	(revision 312)
+++ /XIOS/trunk/src/fortran/gridgroup_interface.f90	(revision 313)
@@ -4,32 +4,4 @@
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
      
-      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_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_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_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_domaingroup_handle_create(ret, idt, idt_size) BIND(C)
          USE ISO_C_BINDING
Index: /XIOS/trunk/src/fortran/iaxis.F90
===================================================================
--- /XIOS/trunk/src/fortran/iaxis.F90	(revision 312)
+++ /XIOS/trunk/src/fortran/iaxis.F90	(revision 313)
@@ -5,5 +5,5 @@
    USE AXIS_INTERFACE
    USE AXISGROUP_INTERFACE
-
+   
    TYPE txios(axis)
       INTEGER(kind = C_INTPTR_T) :: daddr
@@ -17,133 +17,4 @@
          
    CONTAINS ! Fonctions disponibles pour les utilisateurs.
-
-
-
-   SUBROUTINE xios(set_axis_attr)(axis_id, name, standard_name, long_name, unit, size, value)
-      IMPLICIT NONE
-      TYPE(txios(axis))                                     :: axis_hdl
-      CHARACTER(len = *)                        , INTENT(IN) :: axis_id
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: standard_name
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: long_name
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: unit
-      INTEGER                         , OPTIONAL, INTENT(IN) :: size
-      REAL(kind=8), dimension(*), OPTIONAL, INTENT(IN) :: value(:)
-      
-      CALL xios(get_axis_handle)(axis_id,axis_hdl)
-      CALL xios(set_axis_attr_hdl_)(axis_hdl, name, standard_name, long_name, unit, size, value)
-
-   END SUBROUTINE xios(set_axis_attr)
-   
-
-   SUBROUTINE xios(set_axis_attr_hdl)(axis_hdl, name, standard_name, long_name, unit, size, value)
-      IMPLICIT NONE
-      TYPE(txios(axis))                        , INTENT(IN) :: axis_hdl
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: standard_name
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: long_name
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: unit
-      INTEGER                         , OPTIONAL, INTENT(IN) :: size
-      REAL(kind=8), dimension(*), OPTIONAL, INTENT(IN) :: value(:)
-
-      CALL xios(set_axis_attr_hdl_)(axis_hdl, name, standard_name, long_name, unit, size, value)
-
-   END SUBROUTINE xios(set_axis_attr_hdl)
-   
-   
-   SUBROUTINE xios(set_axis_attr_hdl_)(axis_hdl, name_, standard_name_, long_name_, unit_, size_, value_)
-      IMPLICIT NONE
-      TYPE(txios(axis))                        , INTENT(IN) :: axis_hdl
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: name_
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: standard_name_
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: long_name_
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: unit_
-      INTEGER                         , OPTIONAL, INTENT(IN) :: size_
-      REAL(kind=8), dimension(*), OPTIONAL, INTENT(IN) :: value_(:)
-      
-      IF (PRESENT(name_))           THEN
-         CALL cxios_set_axis_name(axis_hdl%daddr, name_, len(name_))
-      END IF
-      IF (PRESENT(standard_name_))  THEN
-         CALL cxios_set_axis_standard_name(axis_hdl%daddr, standard_name_, len(standard_name_))
-      END IF
-      IF (PRESENT(long_name_))      THEN
-         CALL cxios_set_axis_long_name(axis_hdl%daddr, long_name_, len(long_name_))
-      END IF
-      IF (PRESENT(unit_))           THEN
-         CALL cxios_set_axis_unit(axis_hdl%daddr, unit_, len(unit_))
-      END IF
-      IF (PRESENT(size_))           THEN
-         CALL cxios_set_axis_size(axis_hdl%daddr, size_)
-      END IF
-      IF (PRESENT(value_))         THEN
-         CALL cxios_set_axis_zvalue(axis_hdl%daddr, value_, size(value_, 1))
-      END IF
-      
-   END SUBROUTINE xios(set_axis_attr_hdl_)
-
-   
-   SUBROUTINE xios(set_axisgroup_attr)(axisgroup_id, name, standard_name, long_name, unit, size, value)
-      IMPLICIT NONE
-      TYPE(txios(axisgroup))                                :: axisgroup_hdl
-      CHARACTER(len = *)                        , INTENT(IN) :: axisgroup_id
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: standard_name
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: long_name
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: unit
-      INTEGER                         , OPTIONAL, INTENT(IN) :: size
-      REAL(kind=8), dimension(*), OPTIONAL, INTENT(IN) :: value(:)
-
-      CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl)
-      CALL xios(set_axisgroup_attr_hdl_)(axisgroup_hdl, name, standard_name, long_name, unit, size, value)
-
-   END SUBROUTINE xios(set_axisgroup_attr)
-   
-
-   SUBROUTINE xios(set_axisgroup_attr_hdl)(axisgroup_hdl, name, standard_name, long_name, unit, size, value)
-      IMPLICIT NONE
-      TYPE(txios(axisgroup))                   , INTENT(IN) :: axisgroup_hdl
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: standard_name
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: long_name
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: unit
-      INTEGER                         , OPTIONAL, INTENT(IN) :: size
-      REAL(kind=8), dimension(*), OPTIONAL, INTENT(IN) :: value(:)
-
-      CALL xios(set_axisgroup_attr_hdl_)(axisgroup_hdl, name, standard_name, long_name, unit, size, value)      
-
-   END SUBROUTINE xios(set_axisgroup_attr_hdl)
-
-      
-   SUBROUTINE xios(set_axisgroup_attr_hdl_)(axisgroup_hdl, name_, standard_name_, long_name_, unit_, size_, value_)
-      IMPLICIT NONE
-      TYPE(txios(axisgroup))                   , INTENT(IN) :: axisgroup_hdl
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: name_
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: standard_name_
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: long_name_
-      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: unit_
-      INTEGER                         , OPTIONAL, INTENT(IN) :: size_
-      REAL(kind=8), dimension(*), OPTIONAL, INTENT(IN) :: value_(:)
-      
-      IF (PRESENT(name_))           THEN
-         CALL cxios_set_axisgroup_name(axisgroup_hdl%daddr, name_, len(name_))
-      END IF
-      IF (PRESENT(standard_name_))  THEN
-         CALL cxios_set_axisgroup_standard_name(axisgroup_hdl%daddr, standard_name_, len(standard_name_))
-      END IF
-      IF (PRESENT(long_name_))      THEN
-         CALL cxios_set_axisgroup_long_name(axisgroup_hdl%daddr, long_name_, len(long_name_))
-      END IF
-      IF (PRESENT(unit_))           THEN
-         CALL cxios_set_axisgroup_unit(axisgroup_hdl%daddr, unit_, len(unit_))
-      END IF
-      IF (PRESENT(size_))           THEN
-         CALL cxios_set_axisgroup_size(axisgroup_hdl%daddr, size_)
-      END IF
-      IF (PRESENT(value_))         THEN
-         CALL cxios_set_axisgroup_zvalue(axisgroup_hdl%daddr, value_, size(value_, 1))
-      END IF
-   END SUBROUTINE xios(set_axisgroup_attr_hdl_)
-   
 
    SUBROUTINE xios(get_axis_handle)(idt,ret)
Index: /XIOS/trunk/src/fortran/icaxis.cpp
===================================================================
--- /XIOS/trunk/src/fortran/icaxis.cpp	(revision 312)
+++ /XIOS/trunk/src/fortran/icaxis.cpp	(revision 313)
@@ -23,120 +23,4 @@
    typedef xmlioserver::tree::CAxisGroup * XAxisGroupPtr;
 
-   // ------------------------- Attributs des axes -----------------------------
-   void cxios_set_axis_name 
-      (XAxisPtr 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_set_axis_standard_name
-      (XAxisPtr 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_set_axis_long_name 
-      (XAxisPtr 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_set_axis_unit 
-      (XAxisPtr 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_set_axis_size(XAxisPtr axis_hdl, int size)
-   {
-      axis_hdl->size.setValue(size);
-      axis_hdl->sendAttributToServer(axis_hdl->size) ;
-   }
-
-   void cxios_set_axis_zvalue 
-      (XAxisPtr axis_hdl, const double * zvalue , int zvalue_extent1)
-   {
-      ARRAY(double, 1) zvalue_val(new CArray<double, 1>(boost::extents [zvalue_extent1]));
-      std::copy(zvalue, &(zvalue[zvalue_val->num_elements()]), zvalue_val->data());
-
-      axis_hdl->zvalue.setValue(zvalue_val);
-      axis_hdl->sendAttributToServer(axis_hdl->zvalue) ;
-
-   }
-   
-   // -------------------- Attributs des groupes d'axes -------------------------
-   
-   void cxios_set_axisgroup_name 
-      (XAxisGroupPtr 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_set_axisgroup_standard_name
-      (XAxisGroupPtr 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_set_axisgroup_long_name 
-      (XAxisGroupPtr 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_set_axisgroup_unit 
-      (XAxisGroupPtr 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_set_axisgroup_size(XAxisGroupPtr axisgroup_hdl, int size)
-   {
-      axisgroup_hdl->size.setValue(size);
-      axisgroup_hdl->sendAttributToServer(axisgroup_hdl->size) ;
-   }
-
-   void cxios_set_axisgroup_zvalue 
-      (XAxisGroupPtr axisgroup_hdl, const double * zvalue , int zvalue_extent1)
-   {
-      ARRAY(double, 1) zvalue_val(new CArray<double, 1>(boost::extents [zvalue_extent1]));
-      std::copy(zvalue, &(zvalue[zvalue_val->num_elements()]), zvalue_val->data());
-
-      axisgroup_hdl->zvalue.setValue(zvalue_val);
-      axisgroup_hdl->sendAttributToServer(axisgroup_hdl->zvalue) ;
-   }
-   
    // ------------------------ CrÃ©ation des handle -----------------------------
    
Index: /XIOS/trunk/src/fortran/iccontext.cpp
===================================================================
--- /XIOS/trunk/src/fortran/iccontext.cpp	(revision 312)
+++ /XIOS/trunk/src/fortran/iccontext.cpp	(revision 313)
@@ -26,33 +26,4 @@
    typedef xmlioserver::tree::CContext * XContextPtr;
 
-   // ------------------------- Attributs des contextes ------------------------
-   
-   
-   void cxios_set_context_calendar_type(XContextPtr 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_set_context_start_date(XContextPtr 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_set_context_output_dir(XContextPtr 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) ; 
-   }
-   
    // ------------------------ CrÃ©ation des handle -----------------------------
    
@@ -71,5 +42,5 @@
           return;
       }
-      // Lever une execption ici
+      // Lever une exeception ici
    }
    
Index: /XIOS/trunk/src/fortran/icdomain.cpp
===================================================================
--- /XIOS/trunk/src/fortran/icdomain.cpp	(revision 312)
+++ /XIOS/trunk/src/fortran/icdomain.cpp	(revision 313)
@@ -23,388 +23,4 @@
    typedef xmlioserver::tree::CDomainGroup * XDomainGroupPtr;
 
-   // ------------------------- Attributs des axes -----------------------------
-   
-   void cxios_set_domain_name(XDomainPtr 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_set_domain_standard_name(XDomainPtr 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_set_domain_long_name(XDomainPtr 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_set_domain_domain_group_ref(XDomainPtr 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_set_domain_ni_glo(XDomainPtr domain_hdl, int ni_glo)
-   {
-      domain_hdl->ni_glo.setValue(ni_glo);
-      domain_hdl->sendAttributToServer(domain_hdl->ni_glo) ; 
-   }
-   
-   void cxios_set_domain_nj_glo(XDomainPtr domain_hdl, int nj_glo)
-   {
-      domain_hdl->nj_glo.setValue(nj_glo);
-      domain_hdl->sendAttributToServer(domain_hdl->nj_glo) ; 
-   }
-   
-   void cxios_set_domain_ibegin(XDomainPtr domain_hdl, int ibegin)
-   {
-      domain_hdl->ibegin.setValue(ibegin);
-      domain_hdl->sendAttributToServer(domain_hdl->ibegin) ; 
-   }
-   
-   void cxios_set_domain_iend(XDomainPtr domain_hdl, int iend)
-   {
-      domain_hdl->iend.setValue(iend);
-      domain_hdl->sendAttributToServer(domain_hdl->iend) ; 
-   }
-   
-   void cxios_set_domain_ni(XDomainPtr domain_hdl, int ni)
-   {
-      domain_hdl->ni.setValue(ni);
-      domain_hdl->sendAttributToServer(domain_hdl->ni) ; 
-   }
-   
-   void cxios_set_domain_jbegin(XDomainPtr domain_hdl, int jbegin)
-   {
-      domain_hdl->jbegin.setValue(jbegin);
-      domain_hdl->sendAttributToServer(domain_hdl->jbegin) ; 
-   }
-   
-   void cxios_set_domain_jend(XDomainPtr domain_hdl, int jend)
-   {
-      domain_hdl->jend.setValue(jend);
-      domain_hdl->sendAttributToServer(domain_hdl->jend) ; 
-   }
-   
-   void cxios_set_domain_nj(XDomainPtr domain_hdl, int nj)
-   {
-      domain_hdl->nj.setValue(nj);
-      domain_hdl->sendAttributToServer(domain_hdl->nj) ; 
-   }
-   
-   void cxios_set_domain_mask(XDomainPtr domain_hdl, bool * mask, int mask_extent1, int mask_extent2)
-   {
-      ARRAY(bool, 2) mask_val(new CArray<bool, 2>(boost::extents [mask_extent1][mask_extent2]));
-      std::copy(mask, &(mask[mask_val->num_elements()]), mask_val->data());
-
-      domain_hdl->mask.setValue(mask_val);
-      domain_hdl->sendAttributToServer(domain_hdl->mask) ; 
-   }
-   
-   void cxios_set_domain_data_dim(XDomainPtr domain_hdl, int data_dim)
-   {
-      domain_hdl->data_dim.setValue(data_dim);
-      domain_hdl->sendAttributToServer(domain_hdl->data_dim) ; 
-   }
-   
-   void cxios_set_domain_data_ni(XDomainPtr domain_hdl, int data_ni)
-   {
-      domain_hdl->data_ni.setValue(data_ni);
-      domain_hdl->sendAttributToServer(domain_hdl->data_ni) ; 
-   }
-   
-   void cxios_set_domain_data_nj(XDomainPtr domain_hdl, int data_nj)
-   {
-      domain_hdl->data_nj.setValue(data_nj);
-      domain_hdl->sendAttributToServer(domain_hdl->data_nj) ; 
-   }
-   
-   void cxios_set_domain_data_ibegin(XDomainPtr domain_hdl, int data_ibegin)
-   {
-      domain_hdl->data_ibegin.setValue(data_ibegin);
-      domain_hdl->sendAttributToServer(domain_hdl->data_ibegin) ; 
-   }
-   
-   void cxios_set_domain_data_jbegin(XDomainPtr domain_hdl, int data_jbegin)
-   {
-      domain_hdl->data_jbegin.setValue(data_jbegin);
-      domain_hdl->sendAttributToServer(domain_hdl->data_jbegin) ; 
-   }
-   
-   void cxios_set_domain_zoom_ni(XDomainPtr domain_hdl, int zoom_ni)
-   {
-      domain_hdl->zoom_ni.setValue(zoom_ni);
-      domain_hdl->sendAttributToServer(domain_hdl->zoom_ni) ; 
-   }
-   
-   void cxios_set_domain_zoom_nj(XDomainPtr domain_hdl, int zoom_nj)
-   {
-      domain_hdl->zoom_nj.setValue(zoom_nj);
-      domain_hdl->sendAttributToServer(domain_hdl->zoom_nj) ; 
-   }
-   
-   void cxios_set_domain_zoom_ibegin(XDomainPtr domain_hdl, int zoom_ibegin)
-   {
-      domain_hdl->zoom_ibegin.setValue(zoom_ibegin);
-      domain_hdl->sendAttributToServer(domain_hdl->zoom_ibegin) ; 
-   }
-    
-   void cxios_set_domain_zoom_jbegin(XDomainPtr domain_hdl, int zoom_jbegin)
-   {
-      domain_hdl->zoom_jbegin.setValue(zoom_jbegin);
-      domain_hdl->sendAttributToServer(domain_hdl->zoom_jbegin) ; 
-   }
-   
-   void cxios_set_domain_data_n_index(XDomainPtr 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_set_domain_data_i_index(XDomainPtr domain_hdl, int * data_i_index, int data_i_index_extent1)
-   {
-      ARRAY(int, 1) data_i_index_val(new CArray<int, 1>(boost::extents [data_i_index_extent1]));
-      std::copy(data_i_index, &(data_i_index[data_i_index_val->num_elements()]), data_i_index_val->data());
-
-      domain_hdl->data_i_index.setValue(data_i_index_val);
-      domain_hdl->sendAttributToServer(domain_hdl->data_i_index) ; 
-   }
-   
-   void cxios_set_domain_data_j_index(XDomainPtr domain_hdl, int * data_j_index, int data_j_index_extent1)
-   {
-      ARRAY(int, 1) data_j_index_val(new CArray<int, 1>(boost::extents [data_j_index_extent1]));
-      std::copy(data_j_index, &(data_j_index[data_j_index_val->num_elements()]), data_j_index_val->data());
-
-      domain_hdl->data_j_index.setValue(data_j_index_val);
-      domain_hdl->sendAttributToServer(domain_hdl->data_j_index) ; 
-   }
-    
-   void cxios_set_domain_lonvalue(XDomainPtr domain_hdl, double * lonvalue, int lonvalue_extent1)
-   {
-      ARRAY(double, 1) lonvalue_val(new CArray<double, 1>(boost::extents [lonvalue_extent1]));
-      std::copy(lonvalue, &(lonvalue[lonvalue_val->num_elements()]), lonvalue_val->data());
-
-      domain_hdl->lonvalue.setValue(lonvalue_val);
-      domain_hdl->sendAttributToServer(domain_hdl->lonvalue) ; 
-   }
-   
-   void cxios_set_domain_latvalue(XDomainPtr domain_hdl, double * latvalue, int latvalue_extent1)
-   {
-      ARRAY(double, 1) latvalue_val(new CArray<double, 1>(boost::extents [latvalue_extent1]));
-      std::copy(latvalue, &(latvalue[latvalue_val->num_elements()]), latvalue_val->data());
-
-      domain_hdl->latvalue.setValue(latvalue_val);
-      domain_hdl->sendAttributToServer(domain_hdl->latvalue) ; 
-   }   
-   
-   // -------------------- Attributs des groupes de domaine ------------------------
-   
-   
-   void cxios_set_domaingroup_name(XDomainGroupPtr 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_set_domaingroup_standard_name(XDomainGroupPtr 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_set_domaingroup_long_name(XDomainGroupPtr 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_set_domaingroup_domain_group_ref(XDomainGroupPtr 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_set_domaingroup_ni_glo(XDomainGroupPtr domaingroup_hdl, int ni_glo)
-   {
-      domaingroup_hdl->ni_glo.setValue(ni_glo);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ni_glo) ;
-   }
-   
-   void cxios_set_domaingroup_nj_glo(XDomainGroupPtr domaingroup_hdl, int nj_glo)
-   {
-      domaingroup_hdl->nj_glo.setValue(nj_glo);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->nj_glo) ;
-   }
-   
-   void cxios_set_domaingroup_ibegin(XDomainGroupPtr domaingroup_hdl, int ibegin)
-   {
-      domaingroup_hdl->ibegin.setValue(ibegin);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ibegin) ;
-   }
-   
-   void cxios_set_domaingroup_iend(XDomainGroupPtr domaingroup_hdl, int iend)
-   {
-      domaingroup_hdl->iend.setValue(iend);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->iend) ;
-   }
-   
-   void cxios_set_domaingroup_ni(XDomainGroupPtr domaingroup_hdl, int ni)
-   {
-      domaingroup_hdl->ni.setValue(ni);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ni) ;
-   }
-   
-   void cxios_set_domaingroup_jbegin(XDomainGroupPtr domaingroup_hdl, int jbegin)
-   {
-      domaingroup_hdl->jbegin.setValue(jbegin);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->jbegin) ;
-   }
-   
-   void cxios_set_domaingroup_jend(XDomainGroupPtr domaingroup_hdl, int jend)
-   {
-      domaingroup_hdl->jend.setValue(jend);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->jend) ;
-   }
-   
-   void cxios_set_domaingroup_nj(XDomainGroupPtr domaingroup_hdl, int nj)
-   {
-      domaingroup_hdl->nj.setValue(nj);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->nj) ;
-   }
-   
-   void cxios_set_domaingroup_mask(XDomainGroupPtr domaingroup_hdl, bool * mask, int mask_extent1, int mask_extent2)
-   {
-      ARRAY(bool, 2) mask_val(new CArray<bool, 2>(boost::extents [mask_extent1][mask_extent2]));
-      std::copy(mask, &(mask[mask_val->num_elements()]), mask_val->data());
-
-      domaingroup_hdl->mask.setValue(mask_val);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->mask) ;
-   }
-   
-   void cxios_set_domaingroup_data_dim(XDomainGroupPtr domaingroup_hdl, int data_dim)
-   {
-      domaingroup_hdl->data_dim.setValue(data_dim);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_dim) ;
-   }
-   
-   void cxios_set_domaingroup_data_ni(XDomainGroupPtr domaingroup_hdl, int data_ni)
-   {
-      domaingroup_hdl->data_ni.setValue(data_ni);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_ni) ;
-   }
-   
-   void cxios_set_domaingroup_data_nj(XDomainGroupPtr domaingroup_hdl, int data_nj)
-   {
-      domaingroup_hdl->data_nj.setValue(data_nj);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_nj) ;
-   }
-   
-   void cxios_set_domaingroup_data_ibegin(XDomainGroupPtr domaingroup_hdl, int data_ibegin)
-   {
-      domaingroup_hdl->data_ibegin.setValue(data_ibegin);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_ibegin) ;
-   }
-   
-   void cxios_set_domaingroup_data_jbegin(XDomainGroupPtr domaingroup_hdl, int data_jbegin)
-   {
-      domaingroup_hdl->data_jbegin.setValue(data_jbegin);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_jbegin) ;
-   }
-   
-   void cxios_set_domaingroup_zoom_ni(XDomainGroupPtr domaingroup_hdl, int zoom_ni)
-   {
-      domaingroup_hdl->zoom_ni.setValue(zoom_ni);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ni) ;
-   }
-   
-   void cxios_set_domaingroup_zoom_nj(XDomainGroupPtr domaingroup_hdl, int zoom_nj)
-   {
-      domaingroup_hdl->zoom_nj.setValue(zoom_nj);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_nj) ;
-   }
-   
-   void cxios_set_domaingroup_zoom_ibegin(XDomainGroupPtr domaingroup_hdl, int zoom_ibegin)
-   {
-      domaingroup_hdl->zoom_ibegin.setValue(zoom_ibegin);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ibegin) ;
-   }
-    
-   void cxios_set_domaingroup_zoom_jbegin(XDomainGroupPtr domaingroup_hdl, int zoom_jbegin)
-   {
-      domaingroup_hdl->zoom_jbegin.setValue(zoom_jbegin);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_jbegin) ;
-   }
-   
-   void cxios_set_domaingroup_data_n_index(XDomainGroupPtr 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_set_domaingroup_data_i_index(XDomainGroupPtr domaingroup_hdl, int * data_i_index, int data_i_index_extent1)
-   {
-      ARRAY(int, 1) data_i_index_val(new CArray<int, 1>(boost::extents [data_i_index_extent1]));
-      std::copy(data_i_index, &(data_i_index[data_i_index_val->num_elements()]), data_i_index_val->data());
-
-      domaingroup_hdl->data_i_index.setValue(data_i_index_val);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_i_index) ;
-   }
-   
-   void cxios_set_domaingroup_data_j_index(XDomainGroupPtr domaingroup_hdl, int * data_j_index, int data_j_index_extent1)
-   {
-      ARRAY(int, 1) data_j_index_val(new CArray<int, 1>(boost::extents [data_j_index_extent1]));
-      std::copy(data_j_index, &(data_j_index[data_j_index_val->num_elements()]), data_j_index_val->data());
-
-      domaingroup_hdl->data_j_index.setValue(data_j_index_val);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_j_index) ;
-   }
-    
-   void cxios_set_domaingroup_lonvalue(XDomainGroupPtr domaingroup_hdl, double * lonvalue, int lonvalue_extent1)
-   {
-      ARRAY(double, 1) lonvalue_val(new CArray<double, 1>(boost::extents [lonvalue_extent1]));
-      std::copy(lonvalue, &(lonvalue[lonvalue_val->num_elements()]), lonvalue_val->data());
-
-      domaingroup_hdl->lonvalue.setValue(lonvalue_val);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->lonvalue) ;
-   }
-   
-   void cxios_set_domaingroup_latvalue(XDomainGroupPtr domaingroup_hdl, double * latvalue, int latvalue_extent1)
-   {
-      ARRAY(double, 1) latvalue_val(new CArray<double, 1>(boost::extents [latvalue_extent1]));
-      std::copy(latvalue, &(latvalue[latvalue_val->num_elements()]), latvalue_val->data());
-
-      domaingroup_hdl->latvalue.setValue(latvalue_val);
-      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->latvalue) ;
-   }  
-   
    // ------------------------ CrÃ©ation des handle -----------------------------
    
Index: /XIOS/trunk/src/fortran/icfield.cpp
===================================================================
--- /XIOS/trunk/src/fortran/icfield.cpp	(revision 312)
+++ /XIOS/trunk/src/fortran/icfield.cpp	(revision 313)
@@ -22,239 +22,8 @@
    typedef xmlioserver::tree::CField      * XFieldPtr;
    typedef xmlioserver::tree::CFieldGroup * XFieldGroupPtr;
-
-   // ------------------------- Attributs des champs ---------------------------
    
-   void cxios_set_field_name(XFieldPtr 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_set_field_standard_name(XFieldPtr 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_set_field_long_name(XFieldPtr 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_set_field_unit(XFieldPtr 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_set_field_operation(XFieldPtr 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_set_field_freq_op(XFieldPtr 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_set_field_level(XFieldPtr field_hdl, int level)
-   {
-      field_hdl->level.setValue(level);
-      field_hdl->sendAttributToServer(field_hdl->level) ;
-   }
-   
-   void cxios_set_field_prec(XFieldPtr field_hdl, int prec)
-   {
-      field_hdl->prec.setValue(prec);
-      field_hdl->sendAttributToServer(field_hdl->prec) ;
-   }
-   
-   void cxios_set_field_enabled(XFieldPtr field_hdl, bool enabled)
-   {
-      field_hdl->enabled.setValue(enabled);
-      field_hdl->sendAttributToServer(field_hdl->enabled) ;
-   }
-   
-   void cxios_set_field_domain_ref(XFieldPtr 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_set_field_axis_ref(XFieldPtr 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_set_field_grid_ref(XFieldPtr 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_set_field_field_ref(XFieldPtr 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_set_field_default_value(XFieldPtr field_hdl, double default_value)
-   {
-      field_hdl->default_value.setValue(default_value);
-      field_hdl->sendAttributToServer(field_hdl->default_value) ;
-   }  
-   
-   // -------------------- Attributs des groupes de champs ---------------------
-  
-   void cxios_set_fieldgroup_name(XFieldGroupPtr 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_set_fieldgroup_standard_name(XFieldGroupPtr 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_set_fieldgroup_long_name(XFieldGroupPtr 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_set_fieldgroup_unit(XFieldGroupPtr 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_set_fieldgroup_operation(XFieldGroupPtr 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_set_fieldgroup_freq_op(XFieldGroupPtr 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_set_fieldgroup_level(XFieldGroupPtr fieldgroup_hdl, int level)
-   {
-      fieldgroup_hdl->level.setValue(level);
-      fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->level);
-   }
-   
-   void cxios_set_fieldgroup_prec(XFieldGroupPtr fieldgroup_hdl, int prec)
-   {
-      fieldgroup_hdl->prec.setValue(prec);
-      fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->prec);
-   }
-   
-   void cxios_set_fieldgroup_enabled(XFieldGroupPtr fieldgroup_hdl, bool enabled)
-   {
-      fieldgroup_hdl->enabled.setValue(enabled);
-      fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->enabled);
-   }
-   
-   void cxios_set_fieldgroup_domain_ref(XFieldGroupPtr 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_set_fieldgroup_axis_ref(XFieldGroupPtr 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_set_fieldgroup_grid_ref(XFieldGroupPtr 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_set_fieldgroup_field_ref(XFieldGroupPtr 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_set_fieldgroup_default_value(XFieldGroupPtr fieldgroup_hdl, double default_value)
-   {
-      fieldgroup_hdl->default_value.setValue(default_value);
-      fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->default_value);
-   }  
-   
-   // ------------------------ CrÃ©ation des handle -----------------------------
+// --------------------------------------------------------------------------   
+// ------------------------ CrÃ©ation des handle -----------------------------
+// --------------------------------------------------------------------------   
    
    void cxios_field_handle_create (XFieldPtr * _ret, const char * _id, int _id_len)
@@ -292,9 +61,13 @@
       *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CFieldGroup>(id);
    }
-   
-   void cxios_field_is_active (XFieldPtr field_hdl, bool* ret)
-   {
-      *ret = field_hdl->isActive();
-   }
+
+// -----------------------------------------------------------------------------------------------------   
+// ------------------------- other function----------  --------------------------- ---------------------
+// -----------------------------------------------------------------------------------------------------   
+
+  void cxios_field_is_active (XFieldPtr field_hdl, bool* ret)
+  {
+    *ret = field_hdl->isActive();
+  }
    
 } // extern "C"
Index: /XIOS/trunk/src/fortran/icfile.cpp
===================================================================
--- /XIOS/trunk/src/fortran/icfile.cpp	(revision 312)
+++ /XIOS/trunk/src/fortran/icfile.cpp	(revision 313)
@@ -23,122 +23,4 @@
    typedef xmlioserver::tree::CFileGroup * XFileGroupPtr;
 
-   // ------------------------- Attributs des axes -----------------------------
-   
-   void cxios_set_file_name(XFilePtr 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_set_file_description(XFilePtr 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_set_file_name_suffix(XFilePtr 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_set_file_output_freq(XFilePtr 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_set_file_output_level(XFilePtr file_hdl, int output_level)
-   {
-      file_hdl->output_level.setValue(output_level);
-      file_hdl->sendAttributToServer(file_hdl->output_level) ;
-   }
-   
-   void cxios_set_file_enabled(XFilePtr file_hdl, bool enabled)
-   {
-      file_hdl->enabled.setValue(enabled);
-      file_hdl->sendAttributToServer(file_hdl->enabled) ;
-   }
-   
-   void cxios_set_file_type(XFilePtr 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) ;
-   }
-   
-   // -------------------- Attributs des groupes d'axes ------------------------
-   
-   void cxios_set_filegroup_name(XFileGroupPtr 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_set_filegroup_description(XFileGroupPtr 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_set_filegroup_name_suffix(XFileGroupPtr 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_set_filegroup_output_freq(XFileGroupPtr 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_set_filegroup_output_level(XFileGroupPtr filegroup_hdl, int output_level)
-   {
-      filegroup_hdl->output_level.setValue(output_level);
-      filegroup_hdl->sendAttributToServer(filegroup_hdl->output_level) ;
-   }
-   
-   void cxios_set_filegroup_enabled(XFileGroupPtr filegroup_hdl, bool enabled)
-   {
-      filegroup_hdl->enabled.setValue(enabled);
-      filegroup_hdl->sendAttributToServer(filegroup_hdl->enabled) ;
-   }
-   
-   void cxios_set_filegroup_type(XFileGroupPtr 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) ;
-   }
-   
    // ------------------------ CrÃ©ation des handle -----------------------------
    
Index: /XIOS/trunk/src/fortran/icgrid.cpp
===================================================================
--- /XIOS/trunk/src/fortran/icgrid.cpp	(revision 312)
+++ /XIOS/trunk/src/fortran/icgrid.cpp	(revision 313)
@@ -23,80 +23,4 @@
    typedef xmlioserver::tree::CGridGroup * XGridGroupPtr;
 
-   // ------------------------- Attributs des axes -----------------------------
-   
-   void cxios_set_grid_name(XGridPtr 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(name_str) ;
-   }
-   
-   void cxios_set_grid_description(XGridPtr 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(description_str) ;
-   }
-   
-   void cxios_set_grid_domain_ref(XGridPtr 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(domain_ref_str) ;
-   }
-   
-   void cxios_set_grid_axis_ref(XGridPtr 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(axis_ref_str) ;
-   }
-   
-   // -------------------- Attributs des groupes de grilles --------------------
-   
-   void cxios_set_gridgroup_name(XGridGroupPtr 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_set_gridgroup_description(XGridGroupPtr 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_set_gridgroup_domain_ref(XGridGroupPtr 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_set_gridgroup_axis_ref(XGridGroupPtr 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) ;
-   }
-   
    // ------------------------ CrÃ©ation des handle -----------------------------
   
Index: /XIOS/trunk/src/fortran/icontext.F90
===================================================================
--- /XIOS/trunk/src/fortran/icontext.F90	(revision 312)
+++ /XIOS/trunk/src/fortran/icontext.F90	(revision 313)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE CONTEXT_INTERFACE
+!   USE icontext_attr
    USE IDATE
 
@@ -14,59 +15,4 @@
    CONTAINS ! Fonctions disponibles pour les utilisateurs.
    
-   SUBROUTINE xios(set_context_attr)( context_id, calendar_type, start_date, output_dir)
-      IMPLICIT NONE
-      CHARACTER(len = *)            , INTENT(IN) :: context_id
-      CHARACTER(len = *)  , OPTIONAL, INTENT(IN) :: calendar_type
-      CHARACTER(len = *)  , OPTIONAL, INTENT(IN) :: start_date
-      CHARACTER(len = *)  , OPTIONAL, INTENT(IN) :: output_dir
-         
-      CALL xios(set_context_attr_)( context_id, calendar_type, start_date, output_dir)
-   END SUBROUTINE xios(set_context_attr)
-
-
-   SUBROUTINE xios(set_context_attr_)( context_id, calendar_type_, start_date_, output_dir_)
-      IMPLICIT NONE
-      CHARACTER(len = *)            , INTENT(IN) :: context_id
-      CHARACTER(len = *)  , OPTIONAL, INTENT(IN) :: calendar_type_
-      CHARACTER(len = *)  , OPTIONAL, INTENT(IN) :: start_date_
-      CHARACTER(len = *)  , OPTIONAL, INTENT(IN) :: output_dir_
-      TYPE(txios(context))                      :: context_hdl
-         
-      CALL xios(get_context_handle)(context_id,context_hdl)
-      CALL xios(set_context_attr_hdl_)( context_hdl, calendar_type_, start_date_, output_dir_)
-   END SUBROUTINE xios(set_context_attr_)
-
-
-   SUBROUTINE xios(set_context_attr_hdl)( context_hdl, calendar_type, start_date, output_dir)
-      IMPLICIT NONE
-      TYPE(txios(context))          , INTENT(IN) :: context_hdl
-      CHARACTER(len = *)  , OPTIONAL, INTENT(IN) :: calendar_type
-      CHARACTER(len = *)  , OPTIONAL, INTENT(IN) :: start_date
-      CHARACTER(len = *)  , OPTIONAL, INTENT(IN) :: output_dir   
-        
-      CALL  xios(set_context_attr_hdl_)( context_hdl, calendar_type, start_date, output_dir)  
-
-   END SUBROUTINE xios(set_context_attr_hdl)
-
-   SUBROUTINE xios(set_context_attr_hdl_)( context_hdl, calendar_type_, start_date_, output_dir_)
-      IMPLICIT NONE
-      TYPE(txios(context))          , INTENT(IN) :: context_hdl
-      CHARACTER(len = *)  , OPTIONAL, INTENT(IN) :: calendar_type_
-      CHARACTER(len = *)  , OPTIONAL, INTENT(IN) :: start_date_
-      CHARACTER(len = *)  , OPTIONAL, INTENT(IN) :: output_dir_   
-         
-      IF (PRESENT(calendar_type_)) THEN
-         CALL cxios_set_context_calendar_type(context_hdl%daddr, calendar_type_, len(calendar_type_))
-      END IF
-      IF (PRESENT(start_date_))    THEN
-         CALL cxios_set_context_start_date(context_hdl%daddr, start_date_, len(start_date_))
-      END IF
-      IF (PRESENT(output_dir_))    THEN
-         CALL cxios_set_context_output_dir(context_hdl%daddr, output_dir_, len(output_dir_))
-      END IF
-   END SUBROUTINE xios(set_context_attr_hdl_)
-
-
-
    SUBROUTINE xios(get_context_handle)(idt,ret)
       IMPLICIT NONE
Index: /XIOS/trunk/src/fortran/icutil.hpp
===================================================================
--- /XIOS/trunk/src/fortran/icutil.hpp	(revision 312)
+++ /XIOS/trunk/src/fortran/icutil.hpp	(revision 313)
@@ -8,5 +8,5 @@
 
 #include <string>
-
+#include <string.h>
 // ///////////////////////// DÃ©finitions/DÃ©clarations /////////////////////// //
 
@@ -29,3 +29,39 @@
 }
 
+inline bool string_copy(const string& str, char* cstr,int cstr_size)
+{
+  
+  if (str.size()>cstr_size) return false ;
+  else
+  {
+    std::memset (cstr,' ',cstr_size);
+    str.copy(cstr,cstr_size) ;
+    return true ;
+  }
+}
+  template<class T>
+  inline  bool array_copy(ARRAY(T,1) array_in, T* array_out, size_t extent1)
+  {
+    if (array_in->num_elements() != extent1) return false ;
+    std::copy(array_in->data(), array_in->data() + array_in->num_elements(), array_out);
+    return true ;
+  }
+
+  template<class T>
+  inline  bool array_copy(ARRAY(T,2) array_in, T* array_out, size_t extent1, size_t extent2)
+  {
+    if (array_in->num_elements() != extent1*extent2) return false ;
+    std::copy(array_in->data(), array_in->data() + array_in->num_elements(), array_out);
+    return true ;
+  }
+
+  template<class T>
+  inline  bool array_copy(ARRAY(T,3) array_in, T* array_out, size_t extent1, size_t extent2, size_t extent3)
+  {
+    if (array_in->num_elements() != extent1*extent2*extent3) return false ;
+    std::copy(array_in->data(), array_in->data() + array_in->num_elements(), array_out);
+    return true ;
+  }        
+
+
 #endif // __ICUTIL_HPP__
Index: /XIOS/trunk/src/fortran/idomain.F90
===================================================================
--- /XIOS/trunk/src/fortran/idomain.F90	(revision 312)
+++ /XIOS/trunk/src/fortran/idomain.F90	(revision 313)
@@ -5,5 +5,7 @@
    USE DOMAIN_INTERFACE
    USE DOMAINGROUP_INTERFACE
-   
+!   USE IDOMAIN_ATTR
+!   USE IDOMAINGROUP_ATTR
+      
    TYPE txios(domain)
       INTEGER(kind = C_INTPTR_T) :: daddr
@@ -17,434 +19,4 @@
    CONTAINS ! Fonctions disponibles pour les utilisateurs.
 
-
-   SUBROUTINE xios(set_domaingroup_attr)                                                                   &
-   ( domaingroup_id, name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,       &
-     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,                     &
-     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, data_n_index, data_i_index, data_j_index,                 &
-     lonvalue, latvalue)
-      IMPLICIT NONE
-      TYPE(txios(domaingroup))                              :: domaingroup_hdl
-      CHARACTER(len = *)                       , INTENT(IN) :: domaingroup_id
-      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: standard_name
-      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: long_name
-      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: domain_group_ref
-      INTEGER                        , OPTIONAL, INTENT(IN) :: ni_glo
-      INTEGER                        , OPTIONAL, INTENT(IN) :: nj_glo
-      INTEGER                        , OPTIONAL, INTENT(IN) :: ibegin
-      INTEGER                        , OPTIONAL, INTENT(IN) :: iend
-      INTEGER                        , OPTIONAL, INTENT(IN) :: ni
-      INTEGER                        , OPTIONAL, INTENT(IN) :: jbegin
-      INTEGER                        , OPTIONAL, INTENT(IN) :: jend
-      INTEGER                        , OPTIONAL, INTENT(IN) :: nj
-      LOGICAL          , dimension(*), OPTIONAL, INTENT(IN) :: mask(:,:)
-      INTEGER                        , OPTIONAL, INTENT(IN) :: data_dim
-      INTEGER                        , OPTIONAL, INTENT(IN) :: data_ni
-      INTEGER                        , OPTIONAL, INTENT(IN) :: data_nj
-      INTEGER                        , OPTIONAL, INTENT(IN) :: data_ibegin
-      INTEGER                        , OPTIONAL, INTENT(IN) :: data_jbegin
-      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ni
-      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_nj
-      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ibegin
-      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_jbegin
-      INTEGER                        , OPTIONAL, INTENT(IN) :: data_n_index
-      INTEGER       , dimension(*)   , OPTIONAL, INTENT(IN) :: data_i_index(:)
-      INTEGER       , dimension(*)   , OPTIONAL, INTENT(IN) :: data_j_index(:)
-      REAL(kind = 8), dimension(*)   , OPTIONAL, INTENT(IN) :: lonvalue(:)
-      REAL(kind = 8), dimension(*)   , OPTIONAL, INTENT(IN) :: latvalue(:)
- 
-      CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl)
-      CALL xios(set_domaingroup_attr_hdl_)                                                                 &
-   ( domaingroup_hdl, name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,      &
-     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,                     &
-     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, data_n_index, data_i_index, data_j_index,                 &
-     lonvalue, latvalue)
-
-   END SUBROUTINE xios(set_domaingroup_attr)
-
-   SUBROUTINE xios(set_domaingroup_attr_hdl)                                                               &   
-   ( domaingroup_hdl,name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,       &
-     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,                     &
-     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, data_n_index, data_i_index,                               &
-     data_j_index, lonvalue, latvalue)
-      IMPLICIT NONE
-      TYPE(txios(domaingroup))             , INTENT(IN) :: domaingroup_hdl
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: standard_name
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: long_name
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: domain_group_ref
-      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_glo
-      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_glo
-      INTEGER                          , OPTIONAL, INTENT(IN) :: ibegin
-      INTEGER                          , OPTIONAL, INTENT(IN) :: iend
-      INTEGER                          , OPTIONAL, INTENT(IN) :: ni
-      INTEGER                          , OPTIONAL, INTENT(IN) :: jbegin
-      INTEGER                          , OPTIONAL, INTENT(IN) :: jend
-      INTEGER                          , OPTIONAL, INTENT(IN) :: nj
-      LOGICAL          , dimension(*)  , OPTIONAL, INTENT(IN) :: mask(:,:)
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_dim
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ni
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_nj
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ibegin
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_jbegin
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_n_index
-      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_i_index(:)
-      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_j_index(:)
-      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: lonvalue(:)
-      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: latvalue(:)   
-
-      CALL xios(set_domaingroup_attr_hdl_)                                                               &
-   ( domaingroup_hdl,name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,     &
-     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,                   &
-     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, data_n_index, data_i_index, data_j_index,               &
-     lonvalue, latvalue)
-
-    END SUBROUTINE xios(set_domaingroup_attr_hdl)
-
-   SUBROUTINE xios(set_domaingroup_attr_hdl_)                                                                       &
-   ( domaingroup_hdl, name_, standard_name_, long_name_, domain_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_,       &
-     ni_, jbegin_, jend_, nj_, mask_, data_dim_, data_ni_, data_nj_, data_ibegin_, data_jbegin_,                   &
-     zoom_ni_, zoom_nj_, zoom_ibegin_, zoom_jbegin_, data_n_index_, data_i_index_, data_j_index_,                  &
-     lonvalue_, latvalue_)
-      IMPLICIT NONE
-      TYPE(txios(domaingroup))             , INTENT(IN) :: domaingroup_hdl
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: name_
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: standard_name_
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: long_name_
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: domain_group_ref_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_glo_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_glo_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: ibegin_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: iend_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: jbegin_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: jend_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_
-      LOGICAL          , dimension(*)  , OPTIONAL, INTENT(IN) :: mask_(:,:)
-      LOGICAL(kind = 1), dimension(:,:), ALLOCATABLE          :: mask__! (size(mask_,1),size(mask,2))
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_dim_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ni_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_nj_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ibegin_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_jbegin_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_n_index_
-      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_i_index_(:)
-      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_j_index_(:)
-      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: lonvalue_(:)
-      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: latvalue_(:)
-      
-      IF (PRESENT(name_))             THEN
-         CALL cxios_set_domaingroup_name(domaingroup_hdl%daddr, name_, len(name_))
-      END IF
-      IF (PRESENT(standard_name_))    THEN
-         CALL cxios_set_domaingroup_standard_name(domaingroup_hdl%daddr, standard_name_, len(standard_name_))
-      END IF
-      IF (PRESENT(long_name_))        THEN
-         CALL cxios_set_domaingroup_long_name(domaingroup_hdl%daddr, long_name_, len(long_name_))
-       END IF
-      IF (PRESENT(domain_group_ref_)) THEN
-         CALL cxios_set_domaingroup_domain_group_ref(domaingroup_hdl%daddr, domain_group_ref_, len(domain_group_ref_))
-      END IF
-      IF (PRESENT(ni_glo_))           THEN
-         CALL cxios_set_domaingroup_ni_glo(domaingroup_hdl%daddr, ni_glo_)
-      END IF
-      IF (PRESENT(nj_glo_))           THEN
-         CALL cxios_set_domaingroup_nj_glo(domaingroup_hdl%daddr, nj_glo_)
-      END IF
-      IF (PRESENT(ibegin_))           THEN
-         CALL cxios_set_domaingroup_ibegin(domaingroup_hdl%daddr, ibegin_)
-       END IF
-      IF (PRESENT(iend_))             THEN
-         CALL cxios_set_domaingroup_iend(domaingroup_hdl%daddr, iend_)
-      END IF
-      IF (PRESENT(ni_))               THEN
-         CALL cxios_set_domaingroup_ni(domaingroup_hdl%daddr, ni_)
-      END IF
-      IF (PRESENT(jbegin_))           THEN
-         CALL cxios_set_domaingroup_jbegin(domaingroup_hdl%daddr, jbegin_)
-      END IF
-      IF (PRESENT(jend_))             THEN
-         CALL cxios_set_domaingroup_jend(domaingroup_hdl%daddr, jend_)
-      END IF
-      IF (PRESENT(nj_))               THEN
-         CALL cxios_set_domaingroup_nj(domaingroup_hdl%daddr, nj_)
-      END IF
-      IF (PRESENT(mask_))             THEN
-         ALLOCATE(mask__(size(mask_, 1), size(mask_, 2)))
-         mask__(:,:) = mask_(:,:)
-         CALL cxios_set_domaingroup_mask(domaingroup_hdl%daddr, mask__, size(mask_, 1), size(mask_, 2))         
-         DEALLOCATE(mask__)
-      END IF
-      IF (PRESENT(data_dim_))         THEN
-         CALL cxios_set_domaingroup_data_dim(domaingroup_hdl%daddr, data_dim_)
-      END IF
-      IF (PRESENT(data_ni_))          THEN
-         CALL cxios_set_domaingroup_data_ni(domaingroup_hdl%daddr, data_ni_)
-      END IF 
-      IF (PRESENT(data_nj_))          THEN
-         CALL cxios_set_domaingroup_data_nj(domaingroup_hdl%daddr, data_nj_)
-      END IF
-      IF (PRESENT(data_ibegin_))      THEN
-         CALL cxios_set_domaingroup_data_ibegin(domaingroup_hdl%daddr, data_ibegin_)
-      END IF
-      IF (PRESENT(data_jbegin_))      THEN
-         CALL cxios_set_domaingroup_data_jbegin(domaingroup_hdl%daddr, data_jbegin_)
-      END IF
-      IF (PRESENT(zoom_ni_))          THEN
-         CALL cxios_set_domaingroup_zoom_ni(domaingroup_hdl%daddr, zoom_ni_)
-      END IF
-      IF (PRESENT(zoom_nj_))          THEN
-       CALL cxios_set_domaingroup_zoom_nj(domaingroup_hdl%daddr, zoom_nj_)
-      END IF
-      IF (PRESENT(zoom_ibegin_))      THEN
-         CALL cxios_set_domaingroup_zoom_ibegin(domaingroup_hdl%daddr, zoom_ibegin_)
-      END IF
-      IF (PRESENT(zoom_jbegin_))      THEN
-         CALL cxios_set_domaingroup_zoom_jbegin(domaingroup_hdl%daddr, zoom_jbegin_)
-      END IF
-
-      IF (PRESENT(data_n_index_))     THEN
-         CALL cxios_set_domaingroup_data_n_index(domaingroup_hdl%daddr, data_n_index_)
-      END IF
-      IF (PRESENT(data_i_index_))     THEN
-         CALL cxios_set_domaingroup_data_i_index(domaingroup_hdl%daddr, data_i_index_, size(data_i_index_, 1))
-      END IF
-      IF (PRESENT(data_j_index_))     THEN
-         CALL cxios_set_domaingroup_data_j_index(domaingroup_hdl%daddr, data_j_index_, size(data_j_index_, 1))
-      END IF
-      IF (PRESENT(lonvalue_))         THEN
-         CALL cxios_set_domaingroup_lonvalue(domaingroup_hdl%daddr, lonvalue_, size(lonvalue_, 1))
-      END IF
-      IF (PRESENT(latvalue_))         THEN
-         CALL cxios_set_domaingroup_latvalue(domaingroup_hdl%daddr, latvalue_, size(latvalue_, 1))
-      END IF
-
-   END SUBROUTINE xios(set_domaingroup_attr_hdl_)
-   
-   
-   SUBROUTINE xios(set_domain_attr)                                                                &
-   ( domain_id, name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,    &
-     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,             &
-     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, data_n_index, data_i_index, data_j_index,         &
-     lonvalue, latvalue)
-      IMPLICIT NONE
-     
-      TYPE(txios(domain))                                   :: domain_hdl
-      CHARACTER(len = *)                       , INTENT(IN) :: domain_id
-      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: standard_name
-      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: long_name
-      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: domain_group_ref
-      INTEGER                        , OPTIONAL, INTENT(IN) :: ni_glo
-      INTEGER                        , OPTIONAL, INTENT(IN) :: nj_glo
-      INTEGER                        , OPTIONAL, INTENT(IN) :: ibegin
-      INTEGER                        , OPTIONAL, INTENT(IN) :: iend
-      INTEGER                        , OPTIONAL, INTENT(IN) :: ni
-      INTEGER                        , OPTIONAL, INTENT(IN) :: jbegin
-      INTEGER                        , OPTIONAL, INTENT(IN) :: jend
-      INTEGER                        , OPTIONAL, INTENT(IN) :: nj
-      LOGICAL          , dimension(*), OPTIONAL, INTENT(IN) :: mask(:,:)
-      INTEGER                        , OPTIONAL, INTENT(IN) :: data_dim
-      INTEGER                        , OPTIONAL, INTENT(IN) :: data_ni
-      INTEGER                        , OPTIONAL, INTENT(IN) :: data_nj
-      INTEGER                        , OPTIONAL, INTENT(IN) :: data_ibegin
-      INTEGER                        , OPTIONAL, INTENT(IN) :: data_jbegin
-      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ni
-      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_nj
-      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ibegin
-      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_jbegin
-      INTEGER                        , OPTIONAL, INTENT(IN) :: data_n_index
-      INTEGER       , dimension(*)   , OPTIONAL, INTENT(IN) :: data_i_index(:)
-      INTEGER       , dimension(*)   , OPTIONAL, INTENT(IN) :: data_j_index(:)
-      REAL(kind = 8), dimension(*)   , OPTIONAL, INTENT(IN) :: lonvalue(:)
-      REAL(kind = 8), dimension(*)   , OPTIONAL, INTENT(IN) :: latvalue(:)
- 
-      CALL xios(get_domain_handle)(domain_id,domain_hdl)
-      CALL xios(set_domain_attr_hdl_)                                                               &
-   ( domain_hdl, name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,    &
-     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,              &
-     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, data_n_index, data_i_index, data_j_index,          &
-     lonvalue, latvalue)
-
-   END SUBROUTINE xios(set_domain_attr)
-
-
-   SUBROUTINE xios(set_domain_attr_hdl)                                                            &
-   ( domain_hdl,name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,    &
-     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,             &
-     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, data_n_index, data_i_index,                       &
-     data_j_index, lonvalue, latvalue)
-      IMPLICIT NONE
-     
-      TYPE(txios(domain))                       , INTENT(IN) :: domain_hdl
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: standard_name
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: long_name
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: domain_group_ref
-      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_glo
-      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_glo
-      INTEGER                          , OPTIONAL, INTENT(IN) :: ibegin
-      INTEGER                          , OPTIONAL, INTENT(IN) :: iend
-      INTEGER                          , OPTIONAL, INTENT(IN) :: ni
-      INTEGER                          , OPTIONAL, INTENT(IN) :: jbegin
-      INTEGER                          , OPTIONAL, INTENT(IN) :: jend
-      INTEGER                          , OPTIONAL, INTENT(IN) :: nj
-      LOGICAL          , dimension(*)  , OPTIONAL, INTENT(IN) :: mask(:,:)
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_dim
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ni
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_nj
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ibegin
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_jbegin
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_n_index
-      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_i_index(:)
-      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_j_index(:)
-      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: lonvalue(:)
-      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: latvalue(:)
-      
-      CALL xios(set_domain_attr_hdl_)                                                             &
-   ( domain_hdl,name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,   &
-     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,            &
-     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, data_n_index, data_i_index, data_j_index,        &
-     lonvalue, latvalue)
-     
-   END SUBROUTINE xios(set_domain_attr_hdl)
-       
-   SUBROUTINE xios(set_domain_attr_hdl_)                                                                 &
-   ( domain_hdl,name_, standard_name_, long_name_, domain_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_,  &
-     ni_, jbegin_, jend_, nj_, mask_, data_dim_, data_ni_, data_nj_, data_ibegin_, data_jbegin_,         &
-     zoom_ni_, zoom_nj_, zoom_ibegin_, zoom_jbegin_, data_n_index_, data_i_index_, data_j_index_,        &
-     lonvalue_, latvalue_)
-
-      IMPLICIT NONE
-      TYPE(txios(domain))                       , INTENT(IN) :: domain_hdl
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: name_
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: standard_name_
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: long_name_
-      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: domain_group_ref_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_glo_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_glo_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: ibegin_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: iend_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: jbegin_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: jend_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_
-      LOGICAL          , dimension(*)  , OPTIONAL, INTENT(IN) :: mask_(:,:)
-      LOGICAL(kind = 1), dimension(:,:), ALLOCATABLE          :: mask__
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_dim_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ni_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_nj_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ibegin_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_jbegin_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin_
-      INTEGER                          , OPTIONAL, INTENT(IN) :: data_n_index_
-      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_i_index_(:)
-      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_j_index_(:)
-      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: lonvalue_(:)
-      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: latvalue_(:)
-      IF (PRESENT(name_))             THEN
-         CALL cxios_set_domain_name(domain_hdl%daddr, name_, len(name_))
-      END IF
-      IF (PRESENT(standard_name_))    THEN
-         CALL cxios_set_domain_standard_name(domain_hdl%daddr, standard_name_, len(standard_name_))
-      END IF
-      IF (PRESENT(long_name_))        THEN
-         CALL cxios_set_domain_long_name(domain_hdl%daddr, long_name_, len(long_name_))
-       END IF
-      IF (PRESENT(domain_group_ref_)) THEN
-         CALL cxios_set_domain_domain_group_ref(domain_hdl%daddr, domain_group_ref_, len(domain_group_ref_))
-      END IF
-      IF (PRESENT(ni_glo_))           THEN
-         CALL cxios_set_domain_ni_glo(domain_hdl%daddr, ni_glo_)
-      END IF
-      IF (PRESENT(nj_glo_))           THEN
-         CALL cxios_set_domain_nj_glo(domain_hdl%daddr, nj_glo_)
-      END IF
-      IF (PRESENT(ibegin_))           THEN
-         CALL cxios_set_domain_ibegin(domain_hdl%daddr, ibegin_)
-       END IF
-      IF (PRESENT(iend_))             THEN
-         CALL cxios_set_domain_iend(domain_hdl%daddr, iend_)
-      END IF
-      IF (PRESENT(ni_))               THEN
-         CALL cxios_set_domain_ni(domain_hdl%daddr, ni_)
-      END IF
-      IF (PRESENT(jbegin_))           THEN
-         CALL cxios_set_domain_jbegin(domain_hdl%daddr, jbegin_)
-      END IF
-      IF (PRESENT(jend_))             THEN
-         CALL cxios_set_domain_jend(domain_hdl%daddr, jend_)
-      END IF
-      IF (PRESENT(nj_))               THEN
-         CALL cxios_set_domain_nj(domain_hdl%daddr, nj_)
-      END IF
-      IF (PRESENT(mask_))             THEN
-         ALLOCATE(mask__(size(mask_, 1), size(mask_, 2)))
-         mask__(:,:) = mask_(:,:)
-         CALL cxios_set_domain_mask(domain_hdl%daddr, mask__, size(mask_, 1), size(mask_, 2))         
-         DEALLOCATE(mask__)
-      END IF
-      IF (PRESENT(data_dim_))         THEN
-         CALL cxios_set_domain_data_dim(domain_hdl%daddr, data_dim_)
-      END IF
-      IF (PRESENT(data_ni_))          THEN
-         CALL cxios_set_domain_data_ni(domain_hdl%daddr, data_ni_)
-      END IF 
-      IF (PRESENT(data_nj_))          THEN
-         CALL cxios_set_domain_data_nj(domain_hdl%daddr, data_nj_)
-      END IF
-      IF (PRESENT(data_ibegin_))      THEN
-         CALL cxios_set_domain_data_ibegin(domain_hdl%daddr, data_ibegin_)
-      END IF
-      IF (PRESENT(data_jbegin_))      THEN
-         CALL cxios_set_domain_data_jbegin(domain_hdl%daddr, data_jbegin_)
-      END IF
-      IF (PRESENT(zoom_ni_))          THEN
-         CALL cxios_set_domain_zoom_ni(domain_hdl%daddr, zoom_ni_)
-      END IF
-      IF (PRESENT(zoom_nj_))          THEN
-       CALL cxios_set_domain_zoom_nj(domain_hdl%daddr, zoom_nj_)
-      END IF
-      IF (PRESENT(zoom_ibegin_))      THEN
-         CALL cxios_set_domain_zoom_ibegin(domain_hdl%daddr, zoom_ibegin_)
-      END IF
-      IF (PRESENT(zoom_jbegin_))      THEN
-         CALL cxios_set_domain_zoom_jbegin(domain_hdl%daddr, zoom_jbegin_)
-      END IF
-      IF (PRESENT(data_n_index_))     THEN
-         CALL cxios_set_domain_data_n_index(domain_hdl%daddr, data_n_index_)
-      END IF
-      IF (PRESENT(data_i_index_))     THEN
-         CALL cxios_set_domain_data_i_index(domain_hdl%daddr, data_i_index_, size(data_i_index_, 1))
-      END IF
-      IF (PRESENT(data_j_index_))     THEN
-         CALL cxios_set_domain_data_j_index(domain_hdl%daddr, data_j_index_, size(data_j_index_, 1))
-      END IF
-      IF (PRESENT(lonvalue_))         THEN
-         CALL cxios_set_domain_lonvalue(domain_hdl%daddr, lonvalue_, size(lonvalue_, 1))
-      END IF
-      IF (PRESENT(latvalue_))         THEN
-         CALL cxios_set_domain_latvalue(domain_hdl%daddr, latvalue_, size(latvalue_, 1))
-      END IF
-
-   END SUBROUTINE xios(set_domain_attr_hdl_)
-
-
-   
    SUBROUTINE xios(get_domain_handle)(idt,ret)
       IMPLICIT NONE
Index: /XIOS/trunk/src/fortran/ifield.F90
===================================================================
--- /XIOS/trunk/src/fortran/ifield.F90	(revision 312)
+++ /XIOS/trunk/src/fortran/ifield.F90	(revision 313)
@@ -5,4 +5,6 @@
    USE FIELD_INTERFACE
    USE FIELDGROUP_INTERFACE
+!   USE IFIELD_ATTR
+!   USE IFIELDGROUP_ATTR
    
    TYPE txios(field)
@@ -15,252 +17,4 @@
    
    CONTAINS ! Fonctions disponibles pour les utilisateurs.
-
-
-   SUBROUTINE xios(set_fieldgroup_attr)                                             &
-   (fieldgroup_id, name, standard_name, long_name, unit, operation, freq_op, level, &
-    prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value)
-    
-      IMPLICIT NONE
-      TYPE(txios(fieldgroup))                      :: fieldgroup_hdl
-      CHARACTER(len = *)               , INTENT(IN) :: fieldgroup_id
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: standard_name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: long_name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: unit
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: operation
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: freq_op
-      INTEGER                , OPTIONAL, INTENT(IN) :: level
-      INTEGER                , OPTIONAL, INTENT(IN) :: prec
-      LOGICAL                , OPTIONAL, INTENT(IN) :: enabled
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: grid_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: field_ref
-      REAL(kind=8)           , OPTIONAL, INTENT(IN) :: default_value
-        
-      CALL xios(get_fieldgroup_handle)(fieldgroup_id,fieldgroup_hdl)
-      CALL xios(set_fieldgroup_attr_hdl_)                                                  &
-         (fieldgroup_hdl, name, standard_name, long_name, unit, operation, freq_op, level, &
-          prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value)
-
-   END SUBROUTINE xios(set_fieldgroup_attr)
-
-   SUBROUTINE xios(set_fieldgroup_attr_hdl)                                           &
-   (fieldgroup_hdl, name, standard_name, long_name, unit, operation, freq_op, level , &
-    prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value)
-      IMPLICIT NONE
-      TYPE(txios(fieldgroup))         , INTENT(IN) :: fieldgroup_hdl
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: standard_name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: long_name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: unit
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: operation
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: freq_op
-      INTEGER                , OPTIONAL, INTENT(IN) :: level
-      INTEGER                , OPTIONAL, INTENT(IN) :: prec
-      LOGICAL                , OPTIONAL, INTENT(IN) :: enabled
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: grid_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: field_ref
-      REAL(kind=8)           , OPTIONAL, INTENT(IN) :: default_value
-      
-      CALL  xios(set_fieldgroup_attr_hdl_)                                            &
-   (fieldgroup_hdl, name, standard_name, long_name, unit, operation, freq_op, level , &
-    prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value) 
-       
-   END SUBROUTINE xios(set_fieldgroup_attr_hdl)
-
-
-   SUBROUTINE xios(set_fieldgroup_attr_hdl_)                                                &
-   (fieldgroup_hdl, name_, standard_name_, long_name_, unit_, operation_, freq_op_, level_, &
-    prec_, enabled_, domain_ref_, axis_ref_, grid_ref_, field_ref_, default_value_)
-      IMPLICIT NONE
-      TYPE(txios(fieldgroup))         , INTENT(IN) :: fieldgroup_hdl
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: standard_name_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: long_name_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: unit_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: operation_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: freq_op_
-      INTEGER                , OPTIONAL, INTENT(IN) :: level_
-      INTEGER                , OPTIONAL, INTENT(IN) :: prec_
-      LOGICAL(kind = 1)                             :: enabled__
-      LOGICAL                , OPTIONAL, INTENT(IN) :: enabled_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: grid_ref_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: field_ref_
-      REAL(kind=8)           , OPTIONAL, INTENT(IN) :: default_value_
-      
-      IF (PRESENT(name_))           THEN
-         CALL cxios_set_fieldgroup_name(fieldgroup_hdl%daddr, name_, len(name_))
-      END IF
-      IF (PRESENT(standard_name_))  THEN
-         CALL cxios_set_fieldgroup_standard_name(fieldgroup_hdl%daddr, standard_name_, len(standard_name_))
-      END IF
-      IF (PRESENT(long_name_))      THEN
-         CALL cxios_set_fieldgroup_long_name(fieldgroup_hdl%daddr, long_name_, len(long_name_))
-      END IF
-      IF (PRESENT(unit_))           THEN
-         CALL cxios_set_fieldgroup_unit(fieldgroup_hdl%daddr, unit_, len(unit_))
-      END IF
-      IF (PRESENT(operation_))      THEN
-         CALL cxios_set_fieldgroup_operation(fieldgroup_hdl%daddr, operation_, len(operation_))
-      END IF
-      IF (PRESENT(freq_op_))        THEN
-         CALL cxios_set_fieldgroup_freq_op(fieldgroup_hdl%daddr, freq_op_, len(freq_op_))
-      END IF
-      IF (PRESENT(level_))          THEN
-         CALL cxios_set_fieldgroup_level(fieldgroup_hdl%daddr, level_)
-      END IF
-      IF (PRESENT(prec_))           THEN
-         CALL cxios_set_fieldgroup_prec(fieldgroup_hdl%daddr, prec_)
-      END IF
-      IF (PRESENT(enabled_))        THEN
-         enabled__ = enabled_  
-         CALL cxios_set_fieldgroup_enabled(fieldgroup_hdl%daddr, enabled__)
-      END IF
-      IF (PRESENT(domain_ref_))     THEN
-         CALL cxios_set_fieldgroup_domain_ref(fieldgroup_hdl%daddr, domain_ref_, len(domain_ref_))
-      END IF
-      IF (PRESENT(axis_ref_))       THEN
-         CALL cxios_set_fieldgroup_axis_ref(fieldgroup_hdl%daddr, axis_ref_, len(axis_ref_))
-      END IF
-      IF (PRESENT(grid_ref_))       THEN
-         CALL cxios_set_fieldgroup_grid_ref(fieldgroup_hdl%daddr, grid_ref_, len(grid_ref_))
-      END IF
-      IF (PRESENT(field_ref_))      THEN
-         CALL cxios_set_fieldgroup_field_ref(fieldgroup_hdl%daddr, field_ref_, len(field_ref_))
-      END IF
-      IF (PRESENT(default_value_))  THEN
-         CALL cxios_set_fieldgroup_default_value(fieldgroup_hdl%daddr, default_value_)
-      END IF
-
-   END SUBROUTINE xios(set_fieldgroup_attr_hdl_)
-
-   
-   SUBROUTINE xios(set_field_attr)                                             &
-   (field_id, name, standard_name, long_name, unit, operation, freq_op, level, &
-    prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value)
-    
-      IMPLICIT NONE
-      TYPE(txios(field))                            :: field_hdl
-      CHARACTER(len = *)               , INTENT(IN) :: field_id
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: standard_name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: long_name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: unit
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: operation
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: freq_op
-      INTEGER                , OPTIONAL, INTENT(IN) :: level
-      INTEGER                , OPTIONAL, INTENT(IN) :: prec
-      LOGICAL                , OPTIONAL, INTENT(IN) :: enabled
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: grid_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: field_ref
-      REAL(kind=8)           , OPTIONAL, INTENT(IN) :: default_value
-      
-      CALL xios(get_field_handle)(field_id,field_hdl)
-      CALL xios(set_field_attr_hdl_)                                                          &
-         (field_hdl, name, standard_name, long_name, unit, operation, freq_op, level,  &
-          prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value)
-   END SUBROUTINE xios(set_field_attr)
-
-
-   SUBROUTINE xios(set_field_attr_hdl)                                          &
-   (field_hdl, name, standard_name, long_name, unit, operation, freq_op, level, &
-    prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value)
-      IMPLICIT NONE
-      TYPE(txios(field))               , INTENT(IN):: field_hdl
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: standard_name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: long_name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: unit
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: operation
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: freq_op
-      INTEGER                , OPTIONAL, INTENT(IN) :: level
-      INTEGER                , OPTIONAL, INTENT(IN) :: prec
-      LOGICAL                , OPTIONAL, INTENT(IN) :: enabled
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: grid_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: field_ref
-      REAL(kind=8)           , OPTIONAL, INTENT(IN) :: default_value
-
-      CALL xios(set_field_attr_hdl_)                                            &
-   (field_hdl, name, standard_name, long_name, unit, operation, freq_op, level, &
-    prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value)  
-        
-   END SUBROUTINE xios(set_field_attr_hdl)
-
-   SUBROUTINE xios(set_field_attr_hdl_)                                                &
-   (field_hdl, name_, standard_name_, long_name_, unit_, operation_, freq_op_, level_, &
-    prec_, enabled_, domain_ref_, axis_ref_, grid_ref_, field_ref_, default_value_)
-      IMPLICIT NONE
-      TYPE(txios(field))               , INTENT(IN):: field_hdl
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: standard_name_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: long_name_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: unit_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: operation_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: freq_op_
-      INTEGER                , OPTIONAL, INTENT(IN) :: level_
-      INTEGER                , OPTIONAL, INTENT(IN) :: prec_
-      LOGICAL(kind = 1)                             :: enabled__
-      LOGICAL                , OPTIONAL, INTENT(IN) :: enabled_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: grid_ref_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: field_ref_
-      REAL(kind=8)           , OPTIONAL, INTENT(IN) :: default_value_
-      
-      IF (PRESENT(name_))           THEN
-         CALL cxios_set_field_name(field_hdl%daddr, name_, len(name_))
-      END IF
-      IF (PRESENT(standard_name_))  THEN
-         CALL cxios_set_field_standard_name(field_hdl%daddr, standard_name_, len(standard_name_))
-      END IF
-      IF (PRESENT(long_name_))      THEN
-         CALL cxios_set_field_long_name(field_hdl%daddr, long_name_, len(long_name_))
-      END IF
-      IF (PRESENT(unit_))           THEN
-         CALL cxios_set_field_unit(field_hdl%daddr, unit_, len(unit_))
-      END IF
-      IF (PRESENT(operation_))      THEN
-         CALL cxios_set_field_operation(field_hdl%daddr, operation_, len(operation_))
-      END IF
-      IF (PRESENT(freq_op_))        THEN
-         CALL cxios_set_field_freq_op(field_hdl%daddr, freq_op_, len(freq_op_))
-      END IF
-      IF (PRESENT(level_))          THEN
-         CALL cxios_set_field_level(field_hdl%daddr, level_)
-      END IF
-      IF (PRESENT(prec_))           THEN
-         CALL cxios_set_field_prec(field_hdl%daddr, prec_)
-      END IF
-      IF (PRESENT(enabled_))        THEN
-         enabled__ = enabled_  
-         CALL cxios_set_field_enabled(field_hdl%daddr, enabled__)
-      END IF
-      IF (PRESENT(domain_ref_))     THEN
-         CALL cxios_set_field_domain_ref(field_hdl%daddr, domain_ref_, len(domain_ref_))
-      END IF
-      IF (PRESENT(axis_ref_))       THEN
-         CALL cxios_set_field_axis_ref(field_hdl%daddr, axis_ref_, len(axis_ref_))
-      END IF
-      IF (PRESENT(grid_ref_))       THEN
-         CALL cxios_set_field_grid_ref(field_hdl%daddr, grid_ref_, len(grid_ref_))
-      END IF
-      IF (PRESENT(field_ref_))      THEN
-         CALL cxios_set_field_field_ref(field_hdl%daddr, field_ref_, len(field_ref_))
-      END IF
-      IF (PRESENT(default_value_))  THEN
-         CALL cxios_set_field_default_value(field_hdl%daddr, default_value_)
-      END IF
-
-   END SUBROUTINE xios(set_field_attr_hdl_)
-   
 
    SUBROUTINE xios(get_field_handle)(idt, ret)
Index: /XIOS/trunk/src/fortran/ifile.F90
===================================================================
--- /XIOS/trunk/src/fortran/ifile.F90	(revision 312)
+++ /XIOS/trunk/src/fortran/ifile.F90	(revision 313)
@@ -5,4 +5,6 @@
    USE FILE_INTERFACE
    USE FILEGROUP_INTERFACE
+!   USE IFILE_ATTR
+!   USE IFILEGROUP_ATTR
    
    TYPE txios(file)
@@ -15,150 +17,4 @@
    
    CONTAINS ! Fonctions disponibles pour les utilisateurs.
-
-
-   SUBROUTINE xios(set_file_attr)(file_id, name , description, name_suffix, output_freq, output_level, enabled, type)
-      IMPLICIT NONE
-      TYPE(txios(file))                       :: file_hdl
-      CHARACTER(len = *)          , INTENT(IN) :: file_id
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: description
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_suffix
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: output_freq
-      INTEGER           , OPTIONAL, INTENT(IN) :: output_level
-      LOGICAL           , OPTIONAL, INTENT(IN) :: enabled
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: type
-            
-      CALL xios(get_file_handle)(file_id,file_hdl)
-      CALL xios(set_file_attr_hdl_)(file_hdl, name , description, name_suffix, output_freq, output_level, enabled, type)
-      
-   END SUBROUTINE xios(set_file_attr)
-   
-
-   SUBROUTINE xios(set_file_attr_hdl)(file_hdl, name , description, name_suffix, output_freq, output_level, enabled,type)
-      TYPE(txios(file))          , INTENT(IN) :: file_hdl
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: description
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_suffix
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: output_freq
-      INTEGER           , OPTIONAL, INTENT(IN) :: output_level
-      LOGICAL           , OPTIONAL, INTENT(IN) :: enabled
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: type
-
-      CALL xios(set_file_attr_hdl_)(file_hdl, name , description, name_suffix, output_freq, output_level, enabled, type)
-      
-   END SUBROUTINE xios(set_file_attr_hdl)
-
-   SUBROUTINE xios(set_file_attr_hdl_)(file_hdl, name_ , description_, name_suffix_, output_freq_, output_level_, enabled_, type_)
-      TYPE(txios(file))          , INTENT(IN) :: file_hdl
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: description_
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_suffix_
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: output_freq_
-      INTEGER           , OPTIONAL, INTENT(IN) :: output_level_
-      LOGICAL(kind = 1)                        :: enabled__
-      LOGICAL           , OPTIONAL, INTENT(IN) :: enabled_
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: type_
-            
-      IF (PRESENT(name_))         THEN
-         CALL cxios_set_file_name(file_hdl%daddr, name_, len(name_))
-      END IF
-      IF (PRESENT(description_))  THEN
-         CALL cxios_set_file_description(file_hdl%daddr, description_, len(description_))
-      END IF
-      IF (PRESENT(name_suffix_))  THEN
-         CALL cxios_set_file_name_suffix(file_hdl%daddr, name_suffix_, len(name_suffix_))
-      END IF
-      IF (PRESENT(output_freq_))  THEN
-         CALL cxios_set_file_output_freq(file_hdl%daddr, output_freq_, len(output_freq_))
-      END IF
-      IF (PRESENT(output_level_)) THEN
-         CALL cxios_set_file_output_level(file_hdl%daddr, output_level_)
-      END IF
-      IF (PRESENT(enabled_))      THEN
-         enabled__ = enabled_        
-         CALL cxios_set_file_enabled(file_hdl%daddr, enabled__)
-      END IF
-      
-      IF (PRESENT(type_))         THEN
-         CALL cxios_set_file_type(file_hdl%daddr, type_, len(type_))
-      END IF
-      
-   END SUBROUTINE xios(set_file_attr_hdl_)
-
-
-   
-   SUBROUTINE xios(set_filegroup_attr)(filegroup_id, name , description, name_suffix, output_freq, output_level, enabled, type)
-      IMPLICIT NONE
-      TYPE(txios(filegroup))                  :: filegroup_hdl
-      CHARACTER(len = *)          , INTENT(IN) :: filegroup_id
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: description
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_suffix
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: output_freq
-      INTEGER           , OPTIONAL, INTENT(IN) :: output_level
-      LOGICAL           , OPTIONAL, INTENT(IN) :: enabled
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: type
-      
-      CALL xios(get_filegroup_handle)(filegroup_id,filegroup_hdl)
-      CALL xios(set_filegroup_attr_hdl_)(filegroup_hdl, name , description, name_suffix, output_freq, output_level, enabled, type)
-      
-   END SUBROUTINE xios(set_filegroup_attr)
-
-
-   SUBROUTINE xios(set_filegroup_attr_hdl)(filegroup_hdl, name , description, name_suffix, output_freq, output_level, enabled, type)
-      IMPLICIT NONE
-      TYPE(txios(filegroup))     , INTENT(IN) :: filegroup_hdl
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: description
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_suffix
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: output_freq
-      INTEGER           , OPTIONAL, INTENT(IN) :: output_level
-      LOGICAL           , OPTIONAL, INTENT(IN) :: enabled
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: type
-      
-     CALL xios(set_filegroup_attr_hdl_)(filegroup_hdl, name , description, name_suffix, output_freq, output_level, enabled, type)
-
-   END SUBROUTINE xios(set_filegroup_attr_hdl)
-      
-   
-   SUBROUTINE xios(set_filegroup_attr_hdl_)(filegroup_hdl, name_ , description_, name_suffix_, output_freq_, output_level_,     &
-                   enabled_,type_)
-      IMPLICIT NONE
-      TYPE(txios(filegroup))     , INTENT(IN) :: filegroup_hdl
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: description_
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_suffix_
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: output_freq_
-      INTEGER           , OPTIONAL, INTENT(IN) :: output_level_
-      LOGICAL(kind = 1)                        :: enabled__
-      LOGICAL           , OPTIONAL, INTENT(IN) :: enabled_
-      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: type_
-      
-      IF (PRESENT(name_))         THEN
-         CALL cxios_set_filegroup_name(filegroup_hdl%daddr, name_, len(name_))
-      END IF
-      IF (PRESENT(description_))  THEN
-         CALL cxios_set_filegroup_description(filegroup_hdl%daddr, description_, len(description_))
-      END IF
-      IF (PRESENT(name_suffix_))  THEN
-         CALL cxios_set_filegroup_name_suffix(filegroup_hdl%daddr, name_suffix_, len(name_suffix_))
-      END IF
-      IF (PRESENT(output_freq_))  THEN
-         CALL cxios_set_filegroup_output_freq(filegroup_hdl%daddr, output_freq_, len(output_freq_))
-      END IF
-      IF (PRESENT(output_level_)) THEN
-         CALL cxios_set_filegroup_output_level(filegroup_hdl%daddr, output_level_)
-      END IF
-      IF (PRESENT(enabled_))      THEN
-        enabled__ = enabled_ 
-        CALL cxios_set_filegroup_enabled(filegroup_hdl%daddr, enabled__)
-      END IF
-      
-      IF (PRESENT(type_))         THEN
-         CALL cxios_set_filegroup_type(filegroup_hdl%daddr, type_, len(type_))
-      END IF
-
-   END SUBROUTINE xios(set_filegroup_attr_hdl_)
-
 
    SUBROUTINE xios(get_file_handle)( idt, ret)
Index: /XIOS/trunk/src/fortran/igrid.F90
===================================================================
--- /XIOS/trunk/src/fortran/igrid.F90	(revision 312)
+++ /XIOS/trunk/src/fortran/igrid.F90	(revision 313)
@@ -5,5 +5,7 @@
    USE GRID_INTERFACE
    USE GRIDGROUP_INTERFACE
-
+!   USE IGRID_ATTR
+!   USE IGRIDGROUP_ATTR
+   
    TYPE txios(grid)
       INTEGER(kind = C_INTPTR_T) :: daddr
@@ -16,107 +18,4 @@
    
    CONTAINS ! Fonctions disponibles pour les utilisateurs.
-
-
-
-   SUBROUTINE xios(set_grid_attr)(grid_id, name, description, domain_ref, axis_ref)
-      IMPLICIT NONE
-      TYPE(txios(grid))                             :: grid_hdl
-      CHARACTER(len = *)               , INTENT(IN) :: grid_id
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: description
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref
-      
-      CALL xios(get_grid_handle)(grid_id,grid_hdl)
-      CALL xios(set_grid_attr_hdl_)(grid_hdl, name, description, domain_ref, axis_ref)
-
-   END SUBROUTINE xios(set_grid_attr)
-   
-   SUBROUTINE xios(set_grid_attr_hdl)(grid_hdl, name, description, domain_ref, axis_ref)
-      IMPLICIT NONE
-      TYPE      (txios(grid))                      :: grid_hdl
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: description
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref
-      
-      CALL xios(set_grid_attr_hdl_)(grid_hdl, name, description, domain_ref, axis_ref)
-
-   END SUBROUTINE xios(set_grid_attr_hdl)   
-
-
-   SUBROUTINE xios(set_grid_attr_hdl_)(grid_hdl, name_, description_, domain_ref_, axis_ref_)
-      IMPLICIT NONE
-      TYPE      (txios(grid))                      :: grid_hdl
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: description_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref_
-      
-      IF (PRESENT(name_))        THEN
-       CALL cxios_set_grid_name(grid_hdl%daddr, name_, len(name_))
-      END IF
-      IF (PRESENT(description_)) THEN
-       CALL cxios_set_grid_description(grid_hdl%daddr, description_, len(description_))
-      END IF
-      IF (PRESENT(domain_ref_))  THEN
-       CALL cxios_set_grid_domain_ref(grid_hdl%daddr, domain_ref_, len(domain_ref_))
-      END IF
-      IF (PRESENT(axis_ref_))    THEN
-       CALL cxios_set_grid_axis_ref(grid_hdl%daddr, axis_ref_, len(axis_ref_))
-      END IF
-   END SUBROUTINE xios(set_grid_attr_hdl_)
-
-
-   
-   SUBROUTINE xios(set_gridgroup_attr)(gridgroup_id, name, description, domain_ref, axis_ref)
-      IMPLICIT NONE
-      TYPE(txios(gridgroup))                       :: gridgroup_hdl
-      CHARACTER(len = *)               , INTENT(IN) :: gridgroup_id
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: description
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref
-      
-      CALL xios(get_gridgroup_handle)(gridgroup_id, gridgroup_hdl)
-      CALL xios(set_gridgroup_attr_hdl_)(gridgroup_hdl, name, description, domain_ref, axis_ref)
-
-   END SUBROUTINE xios(set_gridgroup_attr)
-   
-   SUBROUTINE xios(set_gridgroup_attr_hdl)(gridgroup_hdl, name, description, domain_ref, axis_ref)
-      IMPLICIT NONE
-      TYPE      (txios(gridgroup))                 :: gridgroup_hdl
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: description
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref
-
-      CALL xios(set_gridgroup_attr_hdl_)(gridgroup_hdl, name, description, domain_ref, axis_ref)
-
-   END SUBROUTINE xios(set_gridgroup_attr_hdl)
-   
-   SUBROUTINE xios(set_gridgroup_attr_hdl_)(gridgroup_hdl, name_, description_, domain_ref_, axis_ref_)
-      IMPLICIT NONE
-      TYPE      (txios(gridgroup))                 :: gridgroup_hdl
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: description_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref_
-      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref_
-      
-      IF (PRESENT(name_))        THEN
-       CALL cxios_set_gridgroup_name(gridgroup_hdl%daddr, name_, len(name_))
-      END IF
-      IF (PRESENT(description_)) THEN
-       CALL cxios_set_gridgroup_description(gridgroup_hdl%daddr, description_, len(description_))
-      END IF
-      IF (PRESENT(domain_ref_))  THEN
-       CALL cxios_set_gridgroup_domain_ref(gridgroup_hdl%daddr, domain_ref_, len(domain_ref_))
-      END IF
-      IF (PRESENT(axis_ref_))    THEN
-       CALL cxios_set_gridgroup_axis_ref(gridgroup_hdl%daddr, axis_ref_, len(axis_ref_))
-      END IF
-   END SUBROUTINE xios(set_gridgroup_attr_hdl_)
-   
-   
 
    SUBROUTINE xios(get_grid_handle)(idt,ret)
Index: /XIOS/trunk/src/fortran/ixios.F90
===================================================================
--- /XIOS/trunk/src/fortran/ixios.F90	(revision 312)
+++ /XIOS/trunk/src/fortran/ixios.F90	(revision 313)
@@ -4,8 +4,10 @@
 
 
-USE icontext, ONLY : txios(context), xios(set_context_attr), xios(set_context_attr_hdl),   &
-                     xios(get_context_handle), xios(set_current_context),                  &
+USE icontext, ONLY : txios(context), xios(get_context_handle), xios(set_current_context),    &
                      xios(is_valid_context)
 
+USE icontext_attr, ONLY : xios(set_context_attr), xios(set_context_attr_hdl), &
+                          xios(get_context_attr), xios(get_context_attr_hdl)
+                                               
 USE idata, ONLY : xios(initialize),xios(init_server), xios(finalize), xios(context_initialize),  &
                   xios(close_context_definition),       &
@@ -16,25 +18,50 @@
 USE idate, ONLY : txios(date),txios(time), xios(set_timestep),xios(update_calendar)
 
-USE idomain, ONLY : txios(domain), txios(domaingroup), xios(set_domaingroup_attr),       &
-                    xios(set_domaingroup_attr_hdl), xios(set_domain_attr), xios(set_domain_attr_hdl),&
-                    xios(get_domain_handle), xios(get_domaingroup_handle),xios(is_valid_domain),     &
+USE idomain, ONLY : txios(domain), txios(domaingroup), xios(get_domain_handle),  &
+                    xios(get_domaingroup_handle),xios(is_valid_domain),     &
                     xios(is_valid_domaingroup)
-                     
-USE ifield, ONLY : txios(field), txios(fieldgroup), xios(set_fieldgroup_attr),           &
-                   xios(set_fieldgroup_attr_hdl),xios(set_field_attr),xios(set_field_attr_hdl),      &
-                   xios(get_field_handle), xios(get_fieldgroup_handle), xios(is_valid_field),        &
+
+USE idomain_attr, ONLY :  xios(set_domain_attr), xios(set_domain_attr_hdl),  &
+                          xios(get_domain_attr), xios(get_domain_attr_hdl)
+
+USE idomaingroup_attr, ONLY : xios(set_domaingroup_attr), xios(set_domaingroup_attr_hdl),  & 
+                              xios(get_domaingroup_attr), xios(get_domaingroup_attr_hdl) 
+                    
+USE ifield, ONLY : txios(field), txios(fieldgroup), xios(get_field_handle),  &
+                   xios(get_fieldgroup_handle), xios(is_valid_field),        &
                    xios(is_valid_fieldgroup),xios(field_is_active_id),xios(field_is_active_hdl)  
-                   
-USE ifile, ONLY : txios(file), txios(filegroup), xios(set_file_attr),xios(set_file_attr_hdl), &
-                  xios(set_filegroup_attr), xios(set_filegroup_attr_hdl), xios(get_file_handle),    & 
+
+USE ifield_attr, ONLY : xios(set_field_attr),xios(set_field_attr_hdl),    &
+                        xios(get_field_attr),xios(get_field_attr_hdl)
+  
+USE ifieldgroup_attr, ONLY : xios(set_fieldgroup_attr), xios(set_fieldgroup_attr_hdl),  &
+                             xios(get_fieldgroup_attr), xios(get_fieldgroup_attr_hdl)
+
+USE ifile, ONLY : txios(file), txios(filegroup), xios(get_file_handle),    & 
                   xios(get_filegroup_handle), xios(is_valid_file), xios(is_valid_filegroup)
+
+USE ifile_attr, ONLY : xios(set_file_attr),xios(set_file_attr_hdl), &
+                       xios(get_file_attr),xios(get_file_attr_hdl)
+
+USE ifilegroup_attr, ONLY : xios(set_filegroup_attr), xios(set_filegroup_attr_hdl), &
+                            xios(get_filegroup_attr), xios(get_filegroup_attr_hdl)
                   
-USE igrid, ONLY : txios(grid), txios(gridgroup), xios(set_grid_attr), xios(set_grid_attr_hdl), &
-                  xios(set_gridgroup_attr), xios(set_gridgroup_attr_hdl), xios(get_grid_handle),     &
+USE igrid, ONLY : txios(grid), txios(gridgroup), xios(get_grid_handle),     &
                   xios(get_gridgroup_handle), xios(is_valid_grid), xios(is_valid_gridgroup) 
 
-USE iaxis, ONLY : txios(axis), txios(axisgroup), xios(set_axis_attr), xios(set_axis_attr_hdl), &
-                  xios(set_axisgroup_attr), xios(set_axisgroup_attr_hdl), xios(get_axis_handle),     &
+USE igrid_attr, ONLY : xios(set_grid_attr_hdl), xios(set_grid_attr), &
+                       xios(get_grid_attr_hdl), xios(get_grid_attr)
+
+USE igridgroup_attr, ONLY : xios(set_gridgroup_attr), xios(set_gridgroup_attr_hdl),  &
+                            xios(get_gridgroup_attr), xios(get_gridgroup_attr_hdl)
+
+USE iaxis, ONLY : txios(axis), txios(axisgroup), xios(get_axis_handle),     &
                   xios(get_axisgroup_handle), xios(is_valid_axis), xios(is_valid_axisgroup) 
+
+USE iaxis_attr, ONLY :  xios(set_axis_attr), xios(set_axis_attr_hdl), &
+                        xios(get_axis_attr), xios(get_axis_attr_hdl)
+
+USE iaxisgroup_attr, ONLY : xios(set_axisgroup_attr), xios(set_axisgroup_attr_hdl), &
+                            xios(get_axisgroup_attr), xios(get_axisgroup_attr_hdl)
 
 USE ixml_tree, ONLY : xios(add_axis), xios(add_file), xios(add_grid), xios(add_field), xios(add_domain),          &
@@ -52,4 +79,11 @@
                    xios(set_axisgroup_attr_hdl), xios(set_context_attr_hdl)
 END INTERFACE xios(set_attr)
+
+INTERFACE xios(get_attr)
+  MODULE PROCEDURE xios(get_domaingroup_attr_hdl), xios(get_domain_attr_hdl), xios(get_fieldgroup_attr_hdl), &
+                   xios(get_field_attr_hdl), xios(get_file_attr_hdl), xios(get_filegroup_attr_hdl),          &
+                   xios(get_grid_attr_hdl), xios(get_gridgroup_attr_hdl), xios(get_axis_attr_hdl) ,          &
+                   xios(get_axisgroup_attr_hdl), xios(get_context_attr_hdl)
+END INTERFACE xios(get_attr)
 
 INTERFACE xios(get_handle)
@@ -84,4 +118,9 @@
           xios(set_axisgroup_attr), xios(set_context_attr)
 
+ PUBLIC :: xios(get_attr), xios(get_domain_attr), xios(get_domaingroup_attr), xios(get_fieldgroup_attr), &
+          xios(get_field_attr), xios(get_file_attr), xios(get_filegroup_attr),          &
+          xios(get_grid_attr), xios(get_gridgroup_attr), xios(get_axis_attr) ,          &
+          xios(get_axisgroup_attr), xios(get_context_attr)
+
  PUBLIC :: xios(get_handle) 
  PUBLIC :: xios(add_child) 
Index: /XIOS/trunk/src/generate_fortran_interface.cpp
===================================================================
--- /XIOS/trunk/src/generate_fortran_interface.cpp	(revision 313)
+++ /XIOS/trunk/src/generate_fortran_interface.cpp	(revision 313)
@@ -0,0 +1,166 @@
+#include "xmlioserver.hpp"
+#include "generate_interface_impl.hpp"
+#include "indent.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+
+int main (int argc, char ** argv, char ** UNUSED (env))
+{
+//  string path="./src/attr_interface/" ;
+  string path="./interface/" ;
+  
+  CContext* context=tree::CTreeManager::CreateContext("interface").get();
+  CAxis axis ;
+  CAxisGroup axisgroup ;
+  CField field;
+  CFieldGroup fieldgroup ;
+  CDomain domain ;
+  CDomainGroup domaingroup ;
+  CGrid grid ;
+  CGridGroup gridgroup ;
+  
+  CFile afile;
+  CFileGroup filegroup;
+  
+  ostringstream oss ;
+  ofstream file;
+  
+  file.open((path+"axis_interface_attr.f90").c_str()); 
+  axis.generateFortran2003Interface(file) ;
+  file.close();
+  
+  file.open((path+"icaxis_attr.cpp").c_str()); 
+  axis.generateCInterface(file) ;
+  file.close();
+  
+  file.open((path+"iaxis_attr.F90").c_str()); 
+  axis.generateFortranInterface(file) ;
+  file.close();
+  
+  file.open((path+"axisgroup_interface_attr.f90").c_str()); 
+  axisgroup.generateFortran2003Interface(file) ;
+  file.close();
+  
+  file.open((path+"icaxisgroup_attr.cpp").c_str()); 
+  axisgroup.generateCInterface(file) ;
+  file.close();
+  
+  file.open((path+"iaxisgroup_attr.F90").c_str()); 
+  axisgroup.generateFortranInterface(file) ;
+  file.close();
+  
+  file.open((path+"domain_interface_attr.f90").c_str()); 
+  domain.generateFortran2003Interface(file) ;
+  file.close();
+  
+  file.open((path+"icdomain_attr.cpp").c_str()); 
+  domain.generateCInterface(file) ;
+  file.close();
+  
+  file.open((path+"idomain_attr.F90").c_str()); 
+  domain.generateFortranInterface(file) ;
+  file.close();
+  
+  file.open((path+"domaingroup_interface_attr.f90").c_str()); 
+  domaingroup.generateFortran2003Interface(file) ;
+  file.close();
+  
+  file.open((path+"icdomaingroup_attr.cpp").c_str()); 
+  domaingroup.generateCInterface(file) ;
+  file.close();
+  
+  file.open((path+"idomaingroup_attr.F90").c_str()); 
+  domaingroup.generateFortranInterface(file) ;
+  file.close();
+  
+  
+  file.open((path+"grid_interface_attr.f90").c_str()); 
+  grid.generateFortran2003Interface(file) ;
+  file.close();
+  
+  file.open((path+"icgrid_attr.cpp").c_str()); 
+  grid.generateCInterface(file) ;
+  file.close();
+  
+  file.open((path+"igrid_attr.F90").c_str()); 
+  grid.generateFortranInterface(file) ;
+  file.close();
+  
+  file.open((path+"gridgroup_interface_attr.f90").c_str()); 
+  gridgroup.generateFortran2003Interface(file) ;
+  file.close();
+  
+  file.open((path+"icgridgroup_attr.cpp").c_str()); 
+  gridgroup.generateCInterface(file) ;
+  file.close();
+  
+  file.open((path+"igridgroup_attr.F90").c_str()); 
+  gridgroup.generateFortranInterface(file) ;
+  file.close();
+  
+  
+  file.open((path+"field_interface_attr.f90").c_str()); 
+  field.generateFortran2003Interface(file) ;
+  file.close();
+  
+  file.open((path+"icfield_attr.cpp").c_str()); 
+  field.generateCInterface(file) ;
+  file.close();
+  
+  file.open((path+"ifield_attr.F90").c_str()); 
+  field.generateFortranInterface(file) ;
+  file.close();
+  
+  file.open((path+"fieldgroup_interface_attr.f90").c_str()); 
+  fieldgroup.generateFortran2003Interface(file) ;
+  file.close();
+  
+  file.open((path+"icfieldgroup_attr.cpp").c_str()); 
+  fieldgroup.generateCInterface(file) ;
+  file.close();
+  
+  file.open((path+"ifieldgroup_attr.F90").c_str()); 
+  fieldgroup.generateFortranInterface(file) ;
+  file.close();
+  
+
+
+  file.open((path+"file_interface_attr.f90").c_str()); 
+  afile.generateFortran2003Interface(file) ;
+  file.close();
+  
+  file.open((path+"icfile_attr.cpp").c_str()); 
+  afile.generateCInterface(file) ;
+  file.close();
+  
+  file.open((path+"ifile_attr.F90").c_str()); 
+  afile.generateFortranInterface(file) ;
+  file.close();
+  
+  file.open((path+"filegroup_interface_attr.f90").c_str()); 
+  filegroup.generateFortran2003Interface(file) ;
+  file.close();
+  
+  file.open((path+"icfilegroup_attr.cpp").c_str()); 
+  filegroup.generateCInterface(file) ;
+  file.close();
+  
+  file.open((path+"ifilegroup_attr.F90").c_str()); 
+  filegroup.generateFortranInterface(file) ;
+  file.close();
+  
+ 
+  file.open((path+"context_interface_attr.f90").c_str()); 
+  context->generateFortran2003Interface(file) ;
+  file.close();
+  
+  file.open((path+"iccontext_attr.cpp").c_str()); 
+  context->generateCInterface(file) ;
+  file.close();
+  
+  file.open((path+"icontext_attr.F90").c_str()); 
+  context->generateFortranInterface(file) ;
+  file.close();
+  
+}
Index: /XIOS/trunk/src/generate_interface.hpp
===================================================================
--- /XIOS/trunk/src/generate_interface.hpp	(revision 313)
+++ /XIOS/trunk/src/generate_interface.hpp	(revision 313)
@@ -0,0 +1,66 @@
+#ifndef  __XIOS_GENERATE_INTERFACE_HPP__
+#define  __XIOS_GENERATE_INTERFACE_HPP__
+
+#include "xmlioserver_spl.hpp"
+
+namespace xmlioserver
+{
+  class CInterface
+  {
+    public:
+    
+    template <class T>
+    static void AttributeCInterface(ostream& oss,const string& className,const string& name) ;
+   
+   template <class T>
+   static void AttributeFortran2003Interface(ostream& oss,const string& className,const string& name) ;
+   
+   template <class T>
+   static void AttributeFortranInterfaceDeclaration(ostream& oss,const string& className,const string& name) ;
+   
+   template <class T>
+   static void AttributeFortranInterfaceGetDeclaration(ostream& oss,const string& className,const string& name) ;
+
+   template <class T>
+   static void AttributeFortranInterfaceBody(ostream& oss,const string& className,const string& name) ;
+  
+   template <class T>
+   static void AttributeFortranInterfaceGetBody(ostream& oss,const string& className,const string& name) ;
+  
+   template <class T>
+   static string getStrFortranType(void) ;
+
+   template <class T>
+   static string getStrFortranKind(void) ;
+    
+   template <class T>
+   static string getStrFortranKindC(void) ;
+   
+   template <class T>
+   static bool matchingTypeCFortran(void) ;
+   
+
+  };
+  
+  template<> string CInterface::getStrFortranType<int>(void) {return string("INTEGER") ;}
+  template<> string CInterface::getStrFortranType<bool>(void) {return string("LOGICAL") ;}
+  template<> string CInterface::getStrFortranType<double>(void) {return string("REAL") ;}
+  template<> string CInterface::getStrFortranType<float>(void) {return string("REAL") ;}
+  
+  template<> string CInterface::getStrFortranKind<int>(void) {return string("") ;}
+  template<> string CInterface::getStrFortranKind<bool>(void) {return string("") ;}
+  template<> string CInterface::getStrFortranKind<double>(void) {return string("(KIND=8)") ;}
+  template<> string CInterface::getStrFortranKind<float>(void) {return string("(KIND=4)") ;}
+  
+  template<> string CInterface::getStrFortranKindC<int>(void) {return string("(KIND=C_INT)") ;}
+  template<> string CInterface::getStrFortranKindC<bool>(void) {return string("(KIND=C_BOOL)") ;}
+  template<> string CInterface::getStrFortranKindC<double>(void) {return string("(KIND=C_DOUBLE)") ;}
+  template<> string CInterface::getStrFortranKindC<float>(void) {return string("(KIND=C_FLOAT)") ;}
+  
+  template<> bool CInterface::matchingTypeCFortran<int>(void) { return true ; } 
+  template<> bool CInterface::matchingTypeCFortran<bool>(void) { return false ;} 
+  template<> bool CInterface::matchingTypeCFortran<double>(void) { return true; }
+  template<> bool CInterface::matchingTypeCFortran<float>(void) { return true; }
+  
+}
+#endif
Index: /XIOS/trunk/src/generate_interface_impl.hpp
===================================================================
--- /XIOS/trunk/src/generate_interface_impl.hpp	(revision 313)
+++ /XIOS/trunk/src/generate_interface_impl.hpp	(revision 313)
@@ -0,0 +1,486 @@
+#ifndef __XIOS_GENERATE_INTERFACE_IMPL_HPP__
+#define __XIOS_GENERATE_INTERFACE_IMPL_HPP__
+
+#include "xmlioserver_spl.hpp"
+#include "generate_interface.hpp"
+#include "type_util.hpp"
+#include "indent.hpp"
+
+namespace xmlioserver
+{ 
+
+
+// /////////////////////////////////////////////////
+// //                 C Interface                 //
+// /////////////////////////////////////////////////
+
+  template <class T>
+  void CInterface::AttributeCInterface(ostream& oss, const string& className,const string& name)
+  {
+    string typeName=getStrType<T>() ;
+ 
+    oss<<"void cxios_set_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, "<< typeName<<" "<<name<<")"<<iendl ;
+    oss<<"{"<<iendl ;
+    oss<<"  "<<className<<"_hdl->"<<name<<".setValue("<<name<<");"<<iendl ;
+    oss<<"  "<<className<<"_hdl->sendAttributToServer("<<className<<"_hdl->"<<name<<");"<<iendl ;
+    oss<<"}"<<iendl ;
+    
+    oss<<iendl ;
+    oss<<"void cxios_get_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, "<< typeName<<"* "<<name<<")"<<iendl ;
+    oss<<"{"<<iendl;
+    oss<<"  *"<<name<<" = "<<className<<"_hdl->"<<name<<".getValue();"<<iendl ;
+    oss<<"}"<<iendl ;
+  }
+    
+  
+  template<>
+  void CInterface::AttributeCInterface<string>(ostream& oss, const string& className,const string& name)  
+  {
+    oss<<"void cxios_set_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, const char * "<<name<<", int "<<name<<"_size)"<<iendl ;
+    oss<<"{"<<iendl ;
+    oss<<"  std::string "<<name<<"_str;"<<iendl;
+    oss<<"  if(!cstr2string("<<name<<", "<<name<<"_size, "<<name<<"_str)) return;"<<iendl ;
+    oss<<"  "<<className<<"_hdl->"<<name<<".setValue("<<name<<"_str);"<<iendl ;
+    oss<<"  "<<className<<"_hdl->sendAttributToServer("<<className<<"_hdl->"<<name<<");"<<iendl ;
+    oss<<"}"<<iendl ;
+    
+    oss<<iendl ;
+    
+    oss<<"void cxios_get_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, char * "<<name<<", int "<<name<<"_size)"<<iendl ;
+    oss<<"{"<<iendl ;
+    oss<<"  if(!string_copy("<<className<<"_hdl->"<<name<<".getValue(),"<<name<<" , "<<name<<"_size))"<<iendl ;
+    oss<<"    ERROR(\"void cxios_get_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, char * "<<name<<", int "
+       <<name<<"_size)\", <<\"Input string is to short\");"<<iendl ;
+
+    oss<<"}"<<iendl ;
+  
+  }
+
+//     if (!array_copy(domain_hdl->mask.getValue(), mask, extent1, extent2))
+//        ERROR("cxios_get_domain_mask(XDomainPtr domain_hdl, bool * mask, int extent1, int extent2)",<<"Output array size is not conform to array size attribut") ;
+
+
+#define macro(T) \
+  template <>\
+  void CInterface::AttributeCInterface<ARRAY(T,1)>(ostream& oss, const string& className,const string& name)\
+  {\
+    string typeName=getStrType<T>() ;\
+\
+    oss<<"void cxios_set_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, "<< typeName<<"* "<<name<<", int extent1)"<<iendl ;\
+    oss<<"{"<<iendl ;\
+    oss<<"  ARRAY("<<typeName<<",1) array_tmp(new CArray<"<<typeName<<",1>(boost::extents[extent1]));"<<iendl ;\
+    oss<<"  std::copy("<<name<<", &("<<name<<"[array_tmp->num_elements()]), array_tmp->data());"<<iendl ;\
+    oss<<"  "<<className<<"_hdl->"<<name<<".setValue(array_tmp);"<<iendl ;\
+    oss<<"  "<<className<<"_hdl->sendAttributToServer("<<className<<"_hdl->"<<name<<");"<<iendl ;\
+    oss<<"}"<<iendl ;\
+    oss<<iendl; \
+    oss<<"void cxios_get_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, "<< typeName<<"* "<<name<<", int extent1)"<<iendl ;\
+    oss<<"{"<<iendl; \
+    oss<<"  if (!array_copy("<<className<<"_hdl->"<<name<<".getValue(), "<<name<<", extent1))"<<iendl ; \
+    oss<<"   ERROR(\"void cxios_set_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, "<< typeName<<"* "<<name<<", int extent1)\",<<" \
+       <<"\"Output array size is not conform to array size attribute\") ;"<<iendl; \
+    oss<<"}"<<iendl ;\
+  }\
+\
+  template <> \
+  void CInterface::AttributeCInterface<ARRAY(T,2)>(ostream& oss, const string& className,const string& name)\
+  {\
+    string typeName=getStrType<T>() ;\
+\
+    oss<<"void cxios_set_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, "<< typeName<<"* "<<name<<", int extent1, int extent2)"<<iendl ;\
+    oss<<"{"<<iendl ;\
+    oss<<"  ARRAY("<<typeName<<",2) array_tmp(new CArray<"<<typeName<<",2>(boost::extents[extent1][extent2]));"<<iendl ;\
+    oss<<"  std::copy("<<name<<", &("<<name<<"[array_tmp->num_elements()]), array_tmp->data());"<<iendl ;\
+    oss<<"  "<<className<<"_hdl->"<<name<<".setValue(array_tmp);"<<iendl ;\
+    oss<<"  "<<className<<"_hdl->sendAttributToServer("<<className<<"_hdl->"<<name<<");"<<iendl ;\
+    oss<<"}"<<iendl ;\
+    oss<<iendl; \
+    oss<<"void cxios_get_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, "<< typeName<<"* "<<name<<", int extent1, int extent2)"<<iendl ;\
+    oss<<"{"<<iendl; \
+    oss<<"  if (!array_copy("<<className<<"_hdl->"<<name<<".getValue(), "<<name<<", extent1, extent2))"<<iendl ; \
+    oss<<"   ERROR(\"void cxios_set_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, "<< typeName<<"* "<<name<<", int extent1, int extent2)\",<<" \
+       <<"\"Output array size is not conform to array size attribute\") ;"<<iendl; \
+    oss<<"}"<<iendl ;\
+  }\
+\
+  template <>\
+  void CInterface::AttributeCInterface<ARRAY(T,3)>(ostream& oss, const string& className,const string& name)\
+  {\
+    string typeName=getStrType<T>() ;\
+\
+    oss<<"void cxios_set_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, "<< typeName<<"* "<<name<<", int extent1, int extent2, int extent3)"<<iendl ;\
+    oss<<"{"<<iendl ;\
+    oss<<"  ARRAY("<<typeName<<",3) array_tmp(new CArray<"<<typeName<<",3>(boost::extents[extent1][extent2][extent3]));"<<iendl ;\
+    oss<<"  std::copy("<<name<<", &("<<name<<"[array_tmp->num_elements()]), array_tmp->data());"<<iendl ;\
+    oss<<"  "<<className<<"_hdl->"<<name<<".setValue(array_tmp);"<<iendl ;\
+    oss<<"  "<<className<<"_hdl->sendAttributToServer("<<className<<"_hdl->"<<name<<");"<<iendl ;\
+    oss<<"}"<<iendl ;\
+    oss<<iendl; \
+    oss<<"void cxios_get_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, "<< typeName<<"* "<<name<<", int extent1, int extent2, int extent3)"<<iendl ;\
+    oss<<"{"<<iendl; \
+    oss<<"  if (!array_copy("<<className<<"_hdl->"<<name<<".getValue(), "<<name<<", extent1))"<<iendl ; \
+    oss<<"   ERROR(\"void cxios_set_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, "<< typeName<<"* "<<name<<", int extent1, int extent2, int extent3)\",<<" \
+       <<"\"Output array size is not conform to array size attribute\") ;"<<iendl; \
+    oss<<"}"<<iendl ;\
+  }
+
+macro(bool)
+macro(double)
+macro(int)
+
+#undef macro  
+
+// /////////////////////////////////////////////////
+// //          Fortran 2003 Interface             //
+// /////////////////////////////////////////////////
+
+   template <class T>
+   void CInterface::AttributeFortran2003Interface(ostream& oss,const string& className,const string& name)
+   {
+     string fortranType=getStrFortranType<T>() ;
+     string fortranKindC=getStrFortranKindC<T>() ;
+     
+     oss<<"SUBROUTINE cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl, "<<name<<") BIND(C)"<<iendl ;
+     oss<<"  USE ISO_C_BINDING"<<iendl ;
+     oss<<"  INTEGER (kind = C_INTPTR_T), VALUE :: "<<className<<"_hdl"<<iendl ;
+     oss<<"  "<<fortranType<<" "<<fortranKindC<<"      , VALUE :: "<<name<<iendl ;
+     oss<<"END SUBROUTINE cxios_set_"<<className<<"_"<<name<<iendl ;
+     oss<<iendl ; \
+     oss<<"SUBROUTINE cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl, "<<name<<") BIND(C)"<<iendl ;
+     oss<<"  USE ISO_C_BINDING"<<iendl ;
+     oss<<"  INTEGER (kind = C_INTPTR_T), VALUE :: "<<className<<"_hdl"<<iendl ;
+     oss<<"  "<<fortranType<<" "<<fortranKindC<<"             :: "<<name<<iendl ;
+     oss<<"END SUBROUTINE cxios_get_"<<className<<"_"<<name<<iendl ;
+   }
+   
+   
+   template <>
+   void CInterface::AttributeFortran2003Interface<string>(ostream& oss,const string& className,const string& name)
+   {
+          
+     oss<<"SUBROUTINE cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl, "<<name<<", "<<name<<"_size) BIND(C)"<<iendl ;
+     oss<<"  USE ISO_C_BINDING"<<iendl ;
+     oss<<"  INTEGER (kind = C_INTPTR_T), VALUE :: "<<className<<"_hdl"<<iendl ;
+     oss<<"  CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: "<<name<<iendl ;
+     oss<<"  INTEGER  (kind = C_INT)     , VALUE        :: "<<name<<"_size"<<iendl ;
+     oss<<"END SUBROUTINE cxios_set_"<<className<<"_"<<name<<iendl ;
+     oss<<iendl ; 
+     oss<<"SUBROUTINE cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl, "<<name<<", "<<name<<"_size) BIND(C)"<<iendl ;
+     oss<<"  USE ISO_C_BINDING"<<iendl ;
+     oss<<"  INTEGER (kind = C_INTPTR_T), VALUE :: "<<className<<"_hdl"<<iendl ;
+     oss<<"  CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: "<<name<<iendl ;
+     oss<<"  INTEGER  (kind = C_INT)     , VALUE        :: "<<name<<"_size"<<iendl ;
+     oss<<"END SUBROUTINE cxios_get_"<<className<<"_"<<name<<iendl ;
+     
+   }
+    
+#define macro(T)\     
+   template <>\
+   void CInterface::AttributeFortran2003Interface<ARRAY(T,1)>(ostream& oss,const string& className,const string& name) \
+   { \
+     string fortranType=getStrFortranType<T>() ; \
+     string fortranKindC=getStrFortranKindC<T>() ; \
+      \
+     oss<<"SUBROUTINE cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl, "<<name<<", extent1) BIND(C)"<<iendl ; \
+     oss<<"  USE ISO_C_BINDING"<<iendl ; \
+     oss<<"  INTEGER (kind = C_INTPTR_T), VALUE       :: "<<className<<"_hdl"<<iendl ; \
+     oss<<"  "<<fortranType<<" "<<fortranKindC<<"     , DIMENSION(*) :: "<<name<<iendl ; \
+     oss<<"  INTEGER (kind = C_INT), VALUE  :: extent1"<<iendl ; \
+     oss<<"END SUBROUTINE cxios_set_"<<className<<"_"<<name<<iendl ; \
+     oss<<iendl; \
+     oss<<"SUBROUTINE cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl, "<<name<<", extent1) BIND(C)"<<iendl ; \
+     oss<<"  USE ISO_C_BINDING"<<iendl ; \
+     oss<<"  INTEGER (kind = C_INTPTR_T), VALUE       :: "<<className<<"_hdl"<<iendl ; \
+     oss<<"  "<<fortranType<<" "<<fortranKindC<<"     , DIMENSION(*) :: "<<name<<iendl ; \
+     oss<<"  INTEGER (kind = C_INT), VALUE  :: extent1"<<iendl ; \
+     oss<<"END SUBROUTINE cxios_get_"<<className<<"_"<<name<<iendl ; \
+   } \
+ \
+   template <> \
+   void CInterface::AttributeFortran2003Interface<ARRAY(T,2)>(ostream& oss,const string& className,const string& name) \
+   { \
+     string fortranType=getStrFortranType<T>() ; \
+     string fortranKindC=getStrFortranKindC<T>() ; \
+      \
+     oss<<"SUBROUTINE cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl, "<<name<<", extent1, extent2) BIND(C)"<<iendl ; \
+     oss<<"  USE ISO_C_BINDING"<<iendl ; \
+     oss<<"  INTEGER (kind = C_INTPTR_T), VALUE       :: "<<className<<"_hdl"<<iendl ; \
+     oss<<"  "<<fortranType<<" "<<fortranKindC<<"     , DIMENSION(*) :: "<<name<<iendl ; \
+     oss<<"  INTEGER (kind = C_INT), VALUE  :: extent1"<<iendl ; \
+     oss<<"  INTEGER (kind = C_INT), VALUE  :: extent2"<<iendl ; \
+     oss<<"END SUBROUTINE cxios_set_"<<className<<"_"<<name<<iendl ; \
+     oss<<iendl ; \
+     oss<<"SUBROUTINE cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl, "<<name<<", extent1, extent2) BIND(C)"<<iendl ; \
+     oss<<"  USE ISO_C_BINDING"<<iendl ; \
+     oss<<"  INTEGER (kind = C_INTPTR_T), VALUE       :: "<<className<<"_hdl"<<iendl ; \
+     oss<<"  "<<fortranType<<" "<<fortranKindC<<"     , DIMENSION(*) :: "<<name<<iendl ; \
+     oss<<"  INTEGER (kind = C_INT), VALUE  :: extent1"<<iendl ; \
+     oss<<"  INTEGER (kind = C_INT), VALUE  :: extent2"<<iendl ; \
+     oss<<"END SUBROUTINE cxios_get_"<<className<<"_"<<name<<iendl ; \
+   } \
+     \
+   template <> \
+   void CInterface::AttributeFortran2003Interface<ARRAY(T,3)>(ostream& oss,const string& className,const string& name) \
+   { \
+     string fortranType=getStrFortranType<T>() ; \
+     string fortranKindC=getStrFortranKindC<T>() ; \
+      \
+     oss<<"SUBROUTINE cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl, "<<name<<", extent1, extent2, extent3) BIND(C)"<<iendl ; \
+     oss<<"  USE ISO_C_BINDING"<<iendl ; \
+     oss<<"  INTEGER (kind = C_INTPTR_T), VALUE       :: "<<className<<"_hdl"<<iendl ; \
+     oss<<"  "<<fortranType<<" "<<fortranKindC<<"     , DIMENSION(*) :: "<<name<<iendl ; \
+     oss<<"  INTEGER (kind = C_INT), VALUE  :: extent1"<<iendl ; \
+     oss<<"  INTEGER (kind = C_INT), VALUE  :: extent2"<<iendl ; \
+     oss<<"  INTEGER (kind = C_INT), VALUE  :: extent3"<<iendl ; \
+     oss<<"END SUBROUTINE cxios_set_"<<className<<"_"<<name<<iendl ; \
+     oss<<iendl ;\
+     oss<<"SUBROUTINE cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl, "<<name<<", extent1, extent2, extent3) BIND(C)"<<iendl ; \
+     oss<<"  USE ISO_C_BINDING"<<iendl ; \
+     oss<<"  INTEGER (kind = C_INTPTR_T), VALUE       :: "<<className<<"_hdl"<<iendl ; \
+     oss<<"  "<<fortranType<<" "<<fortranKindC<<"     , DIMENSION(*) :: "<<name<<iendl ; \
+     oss<<"  INTEGER (kind = C_INT), VALUE  :: extent1"<<iendl ; \
+     oss<<"  INTEGER (kind = C_INT), VALUE  :: extent2"<<iendl ; \
+     oss<<"  INTEGER (kind = C_INT), VALUE  :: extent3"<<iendl ; \
+     oss<<"END SUBROUTINE cxios_get_"<<className<<"_"<<name<<iendl ; \
+   }
+  
+  macro(bool)
+  macro(double)
+  macro(int)
+  
+  #undef macro
+  
+   template <class T>
+   void CInterface::AttributeFortranInterfaceDeclaration(ostream& oss,const string& className,const string& name)
+   {
+     oss<<getStrFortranType<T>()<<" "<< getStrFortranKind<T>() <<" , OPTIONAL, INTENT(IN) :: "<<name<<iendl ;
+     if (!matchingTypeCFortran<T>()) oss<<getStrFortranType<T>()<<" "<<getStrFortranKindC<T>()<<" :: "<<name<<"_tmp"<<iendl ;
+   }
+
+   template <class T>
+   void CInterface::AttributeFortranInterfaceGetDeclaration(ostream& oss,const string& className,const string& name)
+   {
+     oss<<getStrFortranType<T>()<<" "<< getStrFortranKind<T>() <<" , OPTIONAL, INTENT(OUT) :: "<<name<<iendl ;
+     if (!matchingTypeCFortran<T>()) oss<<getStrFortranType<T>()<<" "<<getStrFortranKindC<T>()<<" :: "<<name<<"_tmp"<<iendl ;
+   }
+  
+   template <>
+   void CInterface::AttributeFortranInterfaceDeclaration<string>(ostream& oss,const string& className,const string& name)
+   {
+     oss<<"CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: "<<name<<iendl ;
+   }
+   
+   template <>
+   void CInterface::AttributeFortranInterfaceGetDeclaration<string>(ostream& oss,const string& className,const string& name)
+   {
+     oss<<"CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: "<<name<<iendl ;
+   }
+
+#define macro(T)\   
+   template <> \
+   void CInterface::AttributeFortranInterfaceDeclaration<ARRAY(T,1)>(ostream& oss,const string& className,const string& name) \
+   { \
+     oss<<getStrFortranType<T>()<<" "<<getStrFortranKind<T>() <<" , OPTIONAL, INTENT(IN) :: "<<name<<"(:)"<<iendl ; \
+     if (!matchingTypeCFortran<T>()) oss<<getStrFortranType<T>()<<" "<<getStrFortranKindC<T>() <<" , ALLOCATABLE :: "<<name<<"_tmp(:)"<<iendl ; \
+   } \
+   template <> \
+   void CInterface::AttributeFortranInterfaceGetDeclaration<ARRAY(T,1)>(ostream& oss,const string& className,const string& name) \
+   { \
+     oss<<getStrFortranType<T>()<<" "<<getStrFortranKind<T>() <<" , OPTIONAL, INTENT(OUT) :: "<<name<<"(:)"<<iendl ; \
+     if (!matchingTypeCFortran<T>()) oss<<getStrFortranType<T>()<<" "<<getStrFortranKindC<T>() <<" , ALLOCATABLE :: "<<name<<"_tmp(:)"<<iendl ; \
+   } \
+ \
+   template <> \
+   void CInterface::AttributeFortranInterfaceDeclaration<ARRAY(T,2)>(ostream& oss,const string& className,const string& name) \
+   { \
+     oss<<getStrFortranType<T>()<<" "<<getStrFortranKind<T>() <<" , OPTIONAL, INTENT(IN) :: "<<name<<"(:,:)"<<iendl ; \
+     if (!matchingTypeCFortran<T>()) oss<<getStrFortranType<T>()<<" "<<getStrFortranKindC<T>() <<" , ALLOCATABLE :: "<<name<<"_tmp(:,:)"<<iendl ; \
+   } \
+ \
+   template <> \
+   void CInterface::AttributeFortranInterfaceGetDeclaration<ARRAY(T,2)>(ostream& oss,const string& className,const string& name) \
+   { \
+     oss<<getStrFortranType<T>()<<" "<<getStrFortranKind<T>() <<" , OPTIONAL, INTENT(OUT) :: "<<name<<"(:,:)"<<iendl ; \
+     if (!matchingTypeCFortran<T>()) oss<<getStrFortranType<T>()<<" "<<getStrFortranKindC<T>() <<" , ALLOCATABLE :: "<<name<<"_tmp(:,:)"<<iendl ; \
+   } \
+ \
+   template <> \
+   void CInterface::AttributeFortranInterfaceDeclaration<ARRAY(T,3)>(ostream& oss,const string& className,const string& name) \
+   { \
+     oss<<getStrFortranType<T>()<<" "<<getStrFortranKind<T>() <<" , OPTIONAL, INTENT(IN) :: "<<name<<"(:,:,:)"<<iendl ; \
+     if (!matchingTypeCFortran<T>()) oss<<getStrFortranType<T>()<<" "<<getStrFortranKindC<T>() <<" , ALLOCATABLE :: "<<name<<"_tmp(:,:,:)"<<iendl ; \
+   }\
+ \
+   template <> \
+   void CInterface::AttributeFortranInterfaceGetDeclaration<ARRAY(T,3)>(ostream& oss,const string& className,const string& name) \
+   { \
+     oss<<getStrFortranType<T>()<<" "<<getStrFortranKind<T>() <<" , OPTIONAL, INTENT(OUT) :: "<<name<<"(:,:,:)"<<iendl ; \
+     if (!matchingTypeCFortran<T>()) oss<<getStrFortranType<T>()<<" "<<getStrFortranKindC<T>() <<" , ALLOCATABLE :: "<<name<<"_tmp(:,:,:)"<<iendl ; \
+   }     
+   
+  macro(bool)
+  macro(double)
+  macro(int)
+
+#undef macro
+
+   
+   template <class T>
+   void CInterface::AttributeFortranInterfaceBody(ostream& oss,const string& className,const string& name)
+   {
+     string name_tmp=name+"__tmp" ;
+     
+     oss<<"IF (PRESENT("<<name<<"_)) THEN"<<iendl ;
+     if (!matchingTypeCFortran<T>()) 
+     {
+       oss<<"  "<<name_tmp<<"="<<name<<"_"<<iendl ;
+       oss<<"  CALL cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name_tmp<<")"<<iendl ;
+     }
+     else oss<<"  CALL cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name<<"_)"<<iendl ;
+     oss<<"ENDIF"<<iendl ;
+   }
+   
+   template <class T>
+   void CInterface::AttributeFortranInterfaceGetBody(ostream& oss,const string& className,const string& name)
+   {
+     string name_tmp=name+"__tmp" ;
+     
+     oss<<"IF (PRESENT("<<name<<"_)) THEN"<<iendl ;
+     if (!matchingTypeCFortran<T>()) 
+     {
+       oss<<"  CALL cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name_tmp<<")"<<iendl ;
+       oss<<"  "<<name<<"_="<<name_tmp<<iendl ;
+     }
+     else oss<<"  CALL cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name<<"_)"<<iendl ;
+     oss<<"ENDIF"<<iendl ;
+   }
+  
+   template <>
+   void CInterface::AttributeFortranInterfaceBody<string>(ostream& oss,const string& className,const string& name)
+   {
+      oss<<"IF (PRESENT("<<name<<"_)) THEN"<<iendl ;
+      oss<<"  CALL cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name<<"_, len("<<name<<"_))"<<iendl ;
+      oss<<"ENDIF"<<iendl ;
+   }
+
+   template <>
+   void CInterface::AttributeFortranInterfaceGetBody<string>(ostream& oss,const string& className,const string& name)
+   {
+      oss<<"IF (PRESENT("<<name<<"_)) THEN"<<iendl ;
+      oss<<"  CALL cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name<<"_, len("<<name<<"_))"<<iendl ;
+      oss<<"ENDIF"<<iendl ;
+   }
+
+
+#define macro(T) \
+   template <>  \
+   void CInterface::AttributeFortranInterfaceBody< ARRAY(T,1) >(ostream& oss,const string& className,const string& name) \
+   {  \
+     string name_tmp=name+"__tmp" ; \
+      \
+     oss<<"IF (PRESENT("<<name<<"_)) THEN"<<iendl ; \
+     if (!matchingTypeCFortran<T>())  \
+     { \
+       oss<<"  ALLOCATE("<<name_tmp<<"(size("<<name<<"_,1)))"<<iendl ; \
+       oss<<"  "<<name_tmp<<"="<<name<<"_"<<iendl ; \
+       oss<<"  CALL cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name_tmp<<",size("<<name<<"_,1))"<<iendl ; \
+     } \
+     else oss<<"  CALL cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name<<"_,size("<<name<<"_,1))"<<iendl ; \
+     oss<<"ENDIF"<<iendl ; \
+   } \
+ \
+   template <>  \
+   void CInterface::AttributeFortranInterfaceBody< ARRAY(T,2) >(ostream& oss,const string& className,const string& name) \
+   {  \
+     string name_tmp=name+"__tmp" ; \
+      \
+     oss<<"IF (PRESENT("<<name<<"_)) THEN"<<iendl ; \
+     if (!matchingTypeCFortran<T>())  \
+     { \
+       oss<<"  ALLOCATE("<<name_tmp<<"(size("<<name<<"_,1),size("<<name<<"_,2)))"<<iendl ; \
+       oss<<"  "<<name_tmp<<"="<<name<<"_"<<iendl ; \
+       oss<<"  CALL cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name_tmp<<",size("<<name<<"_,1),size("<<name<<"_,2))"<<iendl ; \
+     } \
+     else oss<<"  CALL cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name<<"_,size("<<name<<"_,1),size("<<name<<"_,2))"<<iendl ; \
+     oss<<"ENDIF"<<iendl ; \
+   } \
+    \
+   template <>  \
+   void CInterface::AttributeFortranInterfaceBody< ARRAY(T,3) >(ostream& oss,const string& className,const string& name) \
+   {  \
+     string name_tmp=name+"__tmp" ; \
+      \
+     oss<<"IF (PRESENT("<<name<<"_)) THEN"<<iendl ; \
+     if (!matchingTypeCFortran<T>())  \
+     { \
+       oss<<"  ALLOCATE("<<name_tmp<<"(size("<<name<<"_,1),size("<<name<<"_,2),size("<<name<<"_,3)))"<<iendl ; \
+       oss<<"  "<<name_tmp<<"="<<name<<"_"<<iendl ; \
+       oss<<"  CALL cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name_tmp<<",size("<<name<<"_,1),size("<<name<<"_,2),size("<<name<<"_,3))"<<iendl ; \
+     } \
+     else oss<<"  CALL cxios_set_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name<<"_,size("<<name<<"_,1),size("<<name<<"_,2),size("<<name<<"_,3))"<<iendl ; \
+     oss<<"ENDIF"<<iendl ; \
+   }
+  
+  macro(bool)
+  macro(double)
+  macro(int)
+
+#undef macro
+
+#define macro(T) \
+   template <>  \
+   void CInterface::AttributeFortranInterfaceGetBody< ARRAY(T,1) >(ostream& oss,const string& className,const string& name) \
+   {  \
+     string name_tmp=name+"__tmp" ; \
+      \
+     oss<<"IF (PRESENT("<<name<<"_)) THEN"<<iendl ; \
+     if (!matchingTypeCFortran<T>())  \
+     { \
+       oss<<"  ALLOCATE("<<name_tmp<<"(size("<<name<<"_,1)))"<<iendl ; \
+       oss<<"  CALL cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name_tmp<<",size("<<name<<"_,1))"<<iendl ; \
+       oss<<"  "<<name<<"_="<<name_tmp<<"_"<<iendl ; \
+     } \
+     else oss<<"  CALL cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name<<"_,size("<<name<<"_,1))"<<iendl ; \
+     oss<<"ENDIF"<<iendl ; \
+   } \
+ \
+   template <>  \
+   void CInterface::AttributeFortranInterfaceGetBody< ARRAY(T,2) >(ostream& oss,const string& className,const string& name) \
+   {  \
+     string name_tmp=name+"__tmp" ; \
+      \
+     oss<<"IF (PRESENT("<<name<<"_)) THEN"<<iendl ; \
+     if (!matchingTypeCFortran<T>())  \
+     { \
+       oss<<"  ALLOCATE("<<name_tmp<<"(size("<<name<<"_,1),size("<<name<<"_,2)))"<<iendl ; \
+       oss<<"  CALL cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name_tmp<<",size("<<name<<"_,1),size("<<name<<"_,2))"<<iendl ; \
+       oss<<"  "<<name<<"_="<<name_tmp<<iendl ; \
+     } \
+     else oss<<"  CALL cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name<<"_,size("<<name<<"_,1),size("<<name<<"_,2))"<<iendl ; \
+     oss<<"ENDIF"<<iendl ; \
+   } \
+    \
+   template <>  \
+   void CInterface::AttributeFortranInterfaceGetBody< ARRAY(T,3) >(ostream& oss,const string& className,const string& name) \
+   {  \
+     string name_tmp=name+"__tmp" ; \
+      \
+     oss<<"IF (PRESENT("<<name<<"_)) THEN"<<iendl ; \
+     if (!matchingTypeCFortran<T>())  \
+     { \
+       oss<<"  ALLOCATE("<<name_tmp<<"(size("<<name<<"_,1),size("<<name<<"_,2),size("<<name<<"_,3)))"<<iendl ; \
+       oss<<"  CALL cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name_tmp<<",size("<<name<<"_,1),size("<<name<<"_,2),size("<<name<<"_,3))"<<iendl ; \
+       oss<<"  "<<name<<"_="<<name_tmp<<iendl ; \
+      } \
+     else oss<<"  CALL cxios_get_"<<className<<"_"<<name<<"("<<className<<"_hdl%daddr, "<<name<<"_,size("<<name<<"_,1),size("<<name<<"_,2),size("<<name<<"_,3))"<<iendl ; \
+     oss<<"ENDIF"<<iendl ; \
+   }
+     
+  macro(bool)
+  macro(double)
+  macro(int)
+
+#undef macro
+}
+
+#endif
Index: /XIOS/trunk/src/indent.cpp
===================================================================
--- /XIOS/trunk/src/indent.cpp	(revision 312)
+++ /XIOS/trunk/src/indent.cpp	(revision 313)
@@ -1,53 +1,71 @@
 #include "indent.hpp"
+#include <ostream>
+#include <iostream>
 
-/// boost headers ///
-#include <boost/algorithm/string.hpp>
-#include <boost/algorithm/string/split.hpp>
+using namespace std ;
 
 namespace xmlioserver
 {
-   /// ////////////////////// DÃ©finitions ////////////////////// ///
-   unsigned int CIndent::Indent   = 0;
-   StdString    CIndent::Increm   = StdString("   ");
-   bool         CIndent::WithLine = false;
+  Cindent iendl ;
+  Cindent ireset(0,true) ;
+  int Cindent::defaultIncSize=2 ;
+  int Cindent::index=ios::xalloc() ;
+  
+  Cindent::Cindent(int i,bool r) : offset(i), reset(r), incSize(defaultIncSize) 
+  { }
+  
+  Cindent Cindent::operator++()
+  {
+    return Cindent(incSize) ;
+  }
+  
+  Cindent Cindent::operator--()
+  {
+    return Cindent(-incSize) ;
+  }
 
-   StdOStream & CIndent::NIndent(StdOStream& out)
-   {
-      static unsigned int LineNB = 1;
-      if (CIndent::WithLine) out << LineNB++ << ". ";
-      for(unsigned int i = 0; i < CIndent::Indent; out << CIndent::Increm , i++){}
-      return (out);
-   }
+  Cindent Cindent::operator++(int)
+  {
+    return Cindent(incSize) ;
+  }
+  
+  Cindent Cindent::operator--(int)
+  {
+    return Cindent(-incSize) ;
+  }
 
-   StdOStream & CIndent::IncIndent(StdOStream& out)
-   { CIndent::Indent++; return (CIndent::NIndent(out)); }
+  Cindent Cindent::operator+=(int i)
+  {
+    return Cindent(incSize*i) ;
+  }  
 
-   StdOStream & CIndent::DecEndl  (StdOStream& out)
-   { CIndent::Indent--; return (out); }
+  Cindent Cindent::operator-=(int i)
+  {
+    return Cindent(-incSize*i) ;
+  }  
 
-   ///----------------------------------------
-
-   StdString CIndentedXml::Indented(const StdString & content)
-   {
-      StdOStringStream retvalue;
-      std::vector<StdString> str;
-      boost::split(str, content, boost::is_any_of("\n"));
-      
-      std::vector<StdString>::iterator it = str.begin(), end = str.end();
-      
-      for (; it != end; it++)
-      {
-         StdString & line = *it;
-         if (line.find("<? ") != StdString::npos ||
-             line.find(xml::CXMLNode::GetRootName()) != StdString::npos)
-            retvalue << CIndent::NIndent << line <<  std::endl;
-         else if (line.find("</") != StdString::npos)
-            retvalue << CIndent::NIndent   << line << CIndent::DecEndl << std::endl;
-         else if (line.find(" />") != StdString::npos)
-            retvalue << CIndent::IncIndent << line << CIndent::DecEndl << std::endl;
-         else
-            retvalue << CIndent::IncIndent << line <<  std::endl;
-      }
-      return (retvalue.str());
-   }
-} // namespace xmlioserver
+  ostream& Cindent::iendl(ostream& o) const
+  {
+    if (reset)
+    {
+      o.iword(index)=0 ;
+      return o ;
+    }
+    else
+    {
+      o.iword(index)+=offset ;
+      if (o.iword(index)<0) o.iword(index)=0 ;
+      o<<"\n" ;
+      int mem=o.width(o.iword(index)) ;
+      o<<"";
+      o.width(mem) ;
+      return o ;
+    }
+  }
+  
+  ostream& operator <<(ostream& o, const Cindent& indent) 
+  {
+    return indent.iendl(o) ; 
+  }
+  
+}
Index: /XIOS/trunk/src/indent.hpp
===================================================================
--- /XIOS/trunk/src/indent.hpp	(revision 312)
+++ /XIOS/trunk/src/indent.hpp	(revision 313)
@@ -1,50 +1,34 @@
-#ifndef __XMLIO_CIndent__
-#define __XMLIO_CIndent__
+#ifndef __XIOS_INDENT_HPP__
+#define __XIOS_INDENT_HPP__
 
-/// xmlioserver headers ///
-#include "xmlioserver_spl.hpp"
-#include "xml_node.hpp"
+#include <ostream>
 
 namespace xmlioserver
 {
-   /// ////////////////////// DÃ©clarations ////////////////////// ///
-   class CIndent
-   {
-      public :
+  class Cindent  
+  {
+    public:
+    static int defaultIncSize;
+    static int index ;
+    int incSize ;
+    int offset ;
+    bool reset ;
+    public :
 
-         /// MÃ©thodes statiques ///
-         static StdOStream & NIndent  (StdOStream & out);
-         static StdOStream & IncIndent(StdOStream & out);
-         static StdOStream & DecEndl  (StdOStream & out);
+    Cindent(int i=0, bool r=false) ;
+    Cindent operator++(int) ;
+    Cindent operator--(int) ;
+    Cindent operator++() ;
+    Cindent operator--() ;
+    Cindent operator+=(int n) ;
+    Cindent operator-=(int n) ;
+    std::ostream& iendl(std::ostream& o) const ;
+  };
+  
+  std::ostream& operator <<(std::ostream& o, const Cindent& indent) ;
 
-      private :
+  extern Cindent iendl;
+  extern Cindent ireset;
 
-         /// PropriÃ©tÃ©s  statiques ///
-         static unsigned int Indent;
-         static StdString    Increm;
-         static bool         WithLine;
-
-   }; // class CIndent
-
-    ///--------------------------------------------------------------
-    
-   class CIndentedXml
-   {
-      public :
-
-         /// MÃ©thode statique ///
-         static StdString Indented(const StdString & content);
-
-   }; // class CIndentedXml
-
-    ///--------------------------------------------------------------
-
-} // namespace xmlioserver
-
-   /// ////////////////////// Macros ////////////////////// ///
-   
-#define NIndent   CIndent::NIndent
-#define IncIndent CIndent::IncIndent
-#define DecEndl   CIndent::DecEndl
-
-#endif // __XMLIO_CIndent__
+}  
+#endif
Index: /XIOS/trunk/src/indent_xml.cpp
===================================================================
--- /XIOS/trunk/src/indent_xml.cpp	(revision 313)
+++ /XIOS/trunk/src/indent_xml.cpp	(revision 313)
@@ -0,0 +1,53 @@
+#include "indent_xml.hpp"
+
+/// boost headers ///
+#include <boost/algorithm/string.hpp>
+#include <boost/algorithm/string/split.hpp>
+
+namespace xmlioserver
+{
+   /// ////////////////////// DÃ©finitions ////////////////////// ///
+   unsigned int CIndent::Indent   = 0;
+   StdString    CIndent::Increm   = StdString("   ");
+   bool         CIndent::WithLine = false;
+
+   StdOStream & CIndent::NIndent(StdOStream& out)
+   {
+      static unsigned int LineNB = 1;
+      if (CIndent::WithLine) out << LineNB++ << ". ";
+      for(unsigned int i = 0; i < CIndent::Indent; out << CIndent::Increm , i++){}
+      return (out);
+   }
+
+   StdOStream & CIndent::IncIndent(StdOStream& out)
+   { CIndent::Indent++; return (CIndent::NIndent(out)); }
+
+   StdOStream & CIndent::DecEndl  (StdOStream& out)
+   { CIndent::Indent--; return (out); }
+
+   ///----------------------------------------
+
+   StdString CIndentedXml::Indented(const StdString & content)
+   {
+      StdOStringStream retvalue;
+      std::vector<StdString> str;
+      boost::split(str, content, boost::is_any_of("\n"));
+      
+      std::vector<StdString>::iterator it = str.begin(), end = str.end();
+      
+      for (; it != end; it++)
+      {
+         StdString & line = *it;
+         if (line.find("<? ") != StdString::npos ||
+             line.find(xml::CXMLNode::GetRootName()) != StdString::npos)
+            retvalue << CIndent::NIndent << line <<  std::endl;
+         else if (line.find("</") != StdString::npos)
+            retvalue << CIndent::NIndent   << line << CIndent::DecEndl << std::endl;
+         else if (line.find(" />") != StdString::npos)
+            retvalue << CIndent::IncIndent << line << CIndent::DecEndl << std::endl;
+         else
+            retvalue << CIndent::IncIndent << line <<  std::endl;
+      }
+      return (retvalue.str());
+   }
+} // namespace xmlioserver
Index: /XIOS/trunk/src/indent_xml.hpp
===================================================================
--- /XIOS/trunk/src/indent_xml.hpp	(revision 313)
+++ /XIOS/trunk/src/indent_xml.hpp	(revision 313)
@@ -0,0 +1,50 @@
+#ifndef __XMLIO_CIndent_XML__
+#define __XMLIO_CIndent_XML__
+
+/// xmlioserver headers ///
+#include "xmlioserver_spl.hpp"
+#include "xml_node.hpp"
+
+namespace xmlioserver
+{
+   /// ////////////////////// DÃ©clarations ////////////////////// ///
+   class CIndent
+   {
+      public :
+
+         /// MÃ©thodes statiques ///
+         static StdOStream & NIndent  (StdOStream & out);
+         static StdOStream & IncIndent(StdOStream & out);
+         static StdOStream & DecEndl  (StdOStream & out);
+
+      private :
+
+         /// PropriÃ©tÃ©s  statiques ///
+         static unsigned int Indent;
+         static StdString    Increm;
+         static bool         WithLine;
+
+   }; // class CIndent
+
+    ///--------------------------------------------------------------
+    
+   class CIndentedXml
+   {
+      public :
+
+         /// MÃ©thode statique ///
+         static StdString Indented(const StdString & content);
+
+   }; // class CIndentedXml
+
+    ///--------------------------------------------------------------
+
+} // namespace xmlioserver
+
+   /// ////////////////////// Macros ////////////////////// ///
+   
+#define NIndent   CIndent::NIndent
+#define IncIndent CIndent::IncIndent
+#define DecEndl   CIndent::DecEndl
+
+#endif // __XMLIO_CIndent__
Index: /XIOS/trunk/src/manager/tree_manager.hpp
===================================================================
--- /XIOS/trunk/src/manager/tree_manager.hpp	(revision 312)
+++ /XIOS/trunk/src/manager/tree_manager.hpp	(revision 313)
@@ -6,5 +6,5 @@
 #include "node_type.hpp"
 #include "xml_parser.hpp"
-#include "indent.hpp"
+#include "indent_xml.hpp"
 
 #undef  DECLARE_ATTRIBUTE
Index: /XIOS/trunk/src/node/axis.cpp
===================================================================
--- /XIOS/trunk/src/node/axis.cpp	(revision 312)
+++ /XIOS/trunk/src/node/axis.cpp	(revision 313)
@@ -53,8 +53,8 @@
       if (this->isChecked) return;
       StdSize size = this->size.getValue();
-      StdSize true_size = zvalue.getValue()->num_elements();
+      StdSize true_size = value.getValue()->num_elements();
       if (size != true_size)
          ERROR("CAxis::checkAttributes(void)",
-               << "Le tableau \'zvalue\' a une taille diffÃ©rente de celle indiquÃ©e dans l'attribut \'size\'")
+               << "Le tableau \'value\' a une taille diffÃ©rente de celle indiquÃ©e dans l'attribut \'size\'")
 
       this->isChecked = true;
Index: /XIOS/trunk/src/object_template.hpp
===================================================================
--- /XIOS/trunk/src/object_template.hpp	(revision 312)
+++ /XIOS/trunk/src/object_template.hpp	(revision 313)
@@ -40,5 +40,5 @@
          virtual void toBinary  (StdOStream & os) const;
          virtual void fromBinary(StdIStream & is);
-
+         virtual string getName(void) const ;
          virtual void parse(xml::CXMLNode & node);
          
@@ -71,4 +71,8 @@
          static boost::shared_ptr<T> create(const string& id=string("")) ;
          
+         void generateCInterface(ostream& oss) ;
+         void generateFortran2003Interface(ostream& oss) ;
+         void generateFortranInterface(ostream& oss) ;
+         
       protected :
 
Index: /XIOS/trunk/src/object_template_impl.hpp
===================================================================
--- /XIOS/trunk/src/object_template_impl.hpp	(revision 312)
+++ /XIOS/trunk/src/object_template_impl.hpp	(revision 313)
@@ -112,5 +112,11 @@
       return (T::GetType());
    }
-   
+  
+   template <class T>
+   string CObjectTemplate<T>::getName(void) const
+   {
+      return (T::GetName());
+   }
+  
    //---------------------------------------------------------------
 
@@ -238,6 +244,96 @@
   }
   
-
+   template <typename T>
+   void CObjectTemplate<T>::generateCInterface(ostream& oss)
+   {
+     string className=getName() ;
+     int found=className.find_first_of("_") ;
+     if (found!=string::npos) className.replace(found,1,0,'x') ;
+     
+     oss<<"/* ************************************************************************** *"<<iendl ;
+     oss<<" *               Interface auto generated - do not modify                   *"<<iendl ;
+     oss<<" * ************************************************************************** */"<<iendl;
+     oss<<iendl ;
+     oss<<"#include <boost/multi_array.hpp>"<<iendl ;
+     oss<<"#include <boost/shared_ptr.hpp>"<<iendl ;
+     oss<<"#include \"xmlioserver.hpp\""<<iendl;
+     oss<<"#include \"attribute_template_impl.hpp\""<<iendl ;
+     oss<<"#include \"object_template_impl.hpp\""<<iendl;
+     oss<<"#include \"group_template_impl.hpp\""<<iendl ;
+     oss<<"#include \"icutil.hpp\""<<iendl ;
+     oss<<iendl ;
+     oss<<"extern \"C\""<<iendl ;
+     oss<<"{"<<iendl++ ;
+     oss<<"typedef xmlioserver::tree::"<<getStrType<T>()<<"*  "<<className<<"_Ptr;"<<iendl;
+     oss<<iendl ;
+     SuperClassMap::generateCInterface(oss,className) ;
+     oss<<iendl-- ;
+     oss<<"}"<<iendl ;
+   }
+
+   template <typename T>
+   void CObjectTemplate<T>::generateFortran2003Interface(ostream& oss)
+   {
+     string className=getName() ;
+     int found=className.find_first_of("_") ;
+     if (found!=string::npos) className.replace(found,1,0,'x') ;
+     
+     oss<<"! * ************************************************************************** *"<<iendl ;
+     oss<<"! *               Interface auto generated - do not modify                     *"<<iendl ;
+     oss<<"! * ************************************************************************** *"<<iendl;
+     oss<<iendl ;
+     oss<<"MODULE "<<className<<"_interface_attr"<<iendl++ ;
+     oss<<"USE, INTRINSIC :: ISO_C_BINDING"<<iendl ;
+     oss<<iendl ;
+     oss<<"INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99"<<iendl++ ;
+     oss<<iendl ;   
+     oss<<iendl ;
+     SuperClassMap::generateFortran2003Interface(oss,className) ;
+     oss<<"END INTERFACE"<<iendl-- ;
+     oss<<iendl-- ;
+     oss<<"END MODULE "<<className<<"_interface_attr"<<iendl ;
+   }
   
+   template <typename T>
+   void CObjectTemplate<T>::generateFortranInterface(ostream& oss)
+   {
+     string className=getName() ;
+     int found=className.find_first_of('_') ;
+     if (found!=string::npos) className.erase(found,1) ;
+     string superClassName=getName();
+     found=superClassName.find("_group") ;
+     if (found!=string::npos) superClassName.erase(found,6) ;
+     
+     oss<<"! * ************************************************************************** *"<<iendl ;
+     oss<<"! *               Interface auto generated - do not modify                     *"<<iendl ;
+     oss<<"! * ************************************************************************** *"<<iendl;
+     oss<<"#include \"xios_fortran_prefix.hpp\""<<iendl ;
+     oss<<iendl ;
+     oss<<"MODULE i"<<className<<"_attr"<<iendl++ ;
+     oss<<"USE, INTRINSIC :: ISO_C_BINDING"<<iendl ;
+     oss<<"USE i"<<superClassName<<iendl ;
+     oss<<"USE "<<className<<"_interface_attr"<<iendl ;
+//     oss<<"TYPE txios("<<className<<")"<<iendl ;
+//     oss<<"  INTEGER(kind = C_INTPTR_T) :: daddr"<<iendl ;
+//     oss<<"END TYPE txios("<<className<<")"<<iendl ;
+     oss<<iendl-- ;
+     oss<<"CONTAINS"<<iendl++ ;
+     oss<<iendl ;
+     SuperClassMap::generateFortranInterface_id(oss,className) ;
+     oss<<iendl ;
+     SuperClassMap::generateFortranInterface_hdl(oss,className) ;
+     oss<<iendl ;
+     SuperClassMap::generateFortranInterface_hdl_(oss,className) ;
+     oss<<iendl ;
+     SuperClassMap::generateFortranInterfaceGet_id(oss,className) ;
+     oss<<iendl ;
+     SuperClassMap::generateFortranInterfaceGet_hdl(oss,className) ;
+     oss<<iendl ;
+     SuperClassMap::generateFortranInterfaceGet_hdl_(oss,className) ;
+     oss<<iendl-- ;
+     oss<<"END MODULE i"<<className<<"_attr"<<iendl ;
+   }
+
+
 } // namespace xmlioserver
 
Index: /XIOS/trunk/src/output/nc4_data_output.cpp
===================================================================
--- /XIOS/trunk/src/output/nc4_data_output.cpp	(revision 312)
+++ /XIOS/trunk/src/output/nc4_data_output.cpp	(revision 313)
@@ -254,5 +254,5 @@
 
                SuperClassWriter::definition_end();
-               SuperClassWriter::writeData(axis->zvalue.getValue(), axisid, true, 0);
+               SuperClassWriter::writeData(axis->value.getValue(), axisid, true, 0);
                SuperClassWriter::definition_start();
 
Index: /XIOS/trunk/src/test/test_cs.f90
===================================================================
--- /XIOS/trunk/src/test/test_cs.f90	(revision 312)
+++ /XIOS/trunk/src/test/test_cs.f90	(revision 313)
@@ -39,5 +39,5 @@
   
   DOUBLE PRECISION,DIMENSION(ni_glo,nj_glo) :: lon_glo,lat_glo,field_A_glo
-  DOUBLE PRECISION,ALLOCATABLE :: lon(:,:),lat(:,:),field_A(:,:)
+  DOUBLE PRECISION,ALLOCATABLE :: lon(:,:),lat(:,:),field_A(:,:), lonvalue(:) ;
   INTEGER :: ni,ibegin,iend,nj,jbegin,jend
   INTEGER :: i,j,ts,n
@@ -62,5 +62,5 @@
   iend=ibegin+ni-1 ; jend=jbegin+nj-1
 
-  ALLOCATE(lon(ni,nj),lat(ni,nj),field_A(0:ni+1,-1:nj+2))
+  ALLOCATE(lon(ni,nj),lat(ni,nj),field_A(0:ni+1,-1:nj+2),lonvalue(ni*nj))
   lon(:,:)=lon_glo(ibegin:iend,jbegin:jend)
   lat(:,:)=lat_glo(ibegin:iend,jbegin:jend)
@@ -96,4 +96,10 @@
     dtime%second=3600
     CALL xios_set_timestep(dtime) 
+    
+    ni=0 ; lonvalue(:)=0
+    CALL xios_get_domain_attr("domain_A",ni=ni,lonvalue=lonvalue)
+    
+    print *,"ni",ni
+    print *,"lonvalue",lonvalue ;
 
     CALL xios_close_context_definition()
Index: /XIOS/trunk/src/type/type_util.hpp
===================================================================
--- /XIOS/trunk/src/type/type_util.hpp	(revision 313)
+++ /XIOS/trunk/src/type/type_util.hpp	(revision 313)
@@ -0,0 +1,68 @@
+#ifndef __TYPE_UTIL_HPP__
+#define __TYPE_UTIL_HPP__
+
+#include <string>
+namespace xmlioserver
+{
+  namespace tree
+  {
+    class CDomain ;
+    class CDomainGroup;
+    class CField;
+    class CFieldGroup;
+    class CGrid;
+    class CGridGroup;
+    class CAxis;
+    class CAxisGroup;
+    class CFile;
+    class CFileGroup;
+    class CContext;
+  }
+    typedef tree::CDomain CDomain;
+    typedef tree::CDomainGroup CDomainGroup;
+    typedef tree::CField CField;
+    typedef tree::CFieldGroup CFieldGroup;
+    typedef tree::CGrid CGrid;
+    typedef tree::CGridGroup CGridGroup;
+    typedef tree::CAxis CAxis;
+    typedef tree::CAxisGroup CAxisGroup;
+    typedef tree::CFile CFile;
+    typedef tree::CFileGroup CFileGroup;
+    typedef tree::CContext CContext;
+        
+  template <typename T>
+  inline string getStrType(void) ;
+    
+#define macro(T) template <> inline string getStrType<T>(void) { return std::string(#T) ; }
+
+  macro(short)
+  macro(unsigned short)
+  macro(int)
+  macro(unsigned int)
+  macro(long)
+  macro(unsigned long)
+  macro(float)
+  macro(double)
+  macro(long double)
+  macro(char)
+  macro(unsigned char)
+  macro(wchar_t)
+  macro(bool)
+  macro(CDomain)
+  macro(CDomainGroup)
+  macro(CField)
+  macro(CFieldGroup)
+  macro(CGrid)
+  macro(CGridGroup)
+  macro(CAxis)
+  macro(CAxisGroup)
+  macro(CFile)
+  macro(CFileGroup)
+  macro(CContext)
+  
+#undef macro
+
+}
+
+
+#endif
