Index: XMLIO_V2/dev/dev_rv/Makefile.wk
===================================================================
--- XMLIO_V2/dev/dev_rv/Makefile.wk	(revision 241)
+++ XMLIO_V2/dev/dev_rv/Makefile.wk	(revision 242)
@@ -394,5 +394,9 @@
 
 ifeq ($(VERSION), 4)
-	ELEMS_FOR = #vide
+	ELEMS_FOR = domain_interface domaingroup_interface \
+	            field_interface  fieldgroup_interface  \
+	            file_interface   filegroup_interface   \
+	            axis_interface   axisgroup_interface   axis  \
+	            context_interface xml_tree
 endif
             
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/dox/accueil.dox
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/dox/accueil.dox	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/dox/accueil.dox	(revision 242)
@@ -0,0 +1,3 @@
+/*! \mainpage PrÃ©sentation du projet
+
+ */
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/dox/installation.dox
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/dox/installation.dox	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/dox/installation.dox	(revision 242)
@@ -0,0 +1,3 @@
+/*! \page page1 Installation de la bibliothÃšque
+*/
+
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/axis.f90
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/axis.f90	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/axis.f90	(revision 242)
@@ -0,0 +1,132 @@
+MODULE AXIS
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE AXIS_INTERFACE
+   USE AXISGROUP_INTERFACE
+   
+   TYPE XAxisHandle
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE XAxisHandle
+   
+   TYPE XAxisGroupHandle
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE XAxisGroupHandle
+   
+   !----------------------------------------------------------------------------
+   INTERFACE set_axis_attributes
+      MODULE PROCEDURE set_axis_attributes_id,set_axis_attributes_hdl
+   END INTERFACE  
+   
+   INTERFACE set_axis_group_attributes
+      MODULE PROCEDURE set_axisgroup_attributes_id,set_axisgroup_attributes_hdl
+   END INTERFACE  
+   !----------------------------------------------------------------------------
+     
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE set_axis_attributes_id(axis_id, name_, standard_name_, long_name_, unit_, size_, zvalue_)
+      IMPLICIT NONE
+      TYPE(XAxisHandle)                                      :: 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) :: zvalue_(:)
+      
+      CALL axis_handle_create(axis_hdl, axis_id)
+      CALL set_axis_attributes_hdl(axis_hdl, name_, standard_name_, long_name_, unit_, size_, zvalue_)
+
+   END SUBROUTINE set_axis_attributes_id
+
+   SUBROUTINE set_axis_attributes_hdl(axis_hdl, name_, standard_name_, long_name_, unit_, size_, zvalue_)
+      IMPLICIT NONE
+      TYPE(XAxisHandle)                         , 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) :: zvalue_(:)
+      
+      IF (PRESENT(name_))           THEN
+         CALL xios_set_axis_name(axis_hdl%daddr, name_, len(name_))
+      END IF
+      IF (PRESENT(standard_name_))  THEN
+         CALL xios_set_axis_standard_name(axis_hdl%daddr, standard_name_, len(standard_name_))
+      END IF
+      IF (PRESENT(long_name_))      THEN
+         CALL xios_set_axis_long_name(axis_hdl%daddr, long_name_, len(long_name_))
+      END IF
+      IF (PRESENT(unit_))           THEN
+         CALL xios_set_axis_unit(axis_hdl%daddr, unit_, len(unit_))
+      END IF
+      IF (PRESENT(size_))           THEN
+         CALL xios_set_axis_size(axis_hdl%daddr, size_)
+      END IF
+      IF (PRESENT(zvalue_))         THEN
+         CALL xios_set_axis_zvalue(axis_hdl%daddr, zvalue_, size(zvalue_, 1))
+      END IF
+   END SUBROUTINE set_axis_attributes_hdl
+   
+   SUBROUTINE set_axisgroup_attributes_id(axisgroup_id, name_, standard_name_, long_name_, unit_, size_, zvalue_)
+      IMPLICIT NONE
+      TYPE(XAxisGroupHandle)                                 :: 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) :: zvalue_(:)
+      
+      CALL axisgroup_handle_create(axisgroup_hdl, axisgroup_id)
+      CALL set_axisgroup_attributes_hdl(axisgroup_hdl, name_, standard_name_, long_name_, unit_, size_, zvalue_)
+
+   END SUBROUTINE set_axisgroup_attributes_id
+   
+   SUBROUTINE set_axisgroup_attributes_hdl(axisgroup_hdl, name_, standard_name_, long_name_, unit_, size_, zvalue_)
+      IMPLICIT NONE
+      TYPE(XAxisGroupHandle)                    , 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) :: zvalue_(:)
+      
+      IF (PRESENT(name_))           THEN
+         CALL xios_set_axisgroup_name(axisgroup_hdl%daddr, name_, len(name_))
+      END IF
+      IF (PRESENT(standard_name_))  THEN
+         CALL xios_set_axisgroup_standard_name(axisgroup_hdl%daddr, standard_name_, len(standard_name_))
+      END IF
+      IF (PRESENT(long_name_))      THEN
+         CALL xios_set_axisgroup_long_name(axisgroup_hdl%daddr, long_name_, len(long_name_))
+      END IF
+      IF (PRESENT(unit_))           THEN
+         CALL xios_set_axisgroup_unit(axisgroup_hdl%daddr, unit_, len(unit_))
+      END IF
+      IF (PRESENT(size_))           THEN
+         CALL xios_set_axisgroup_size(axisgroup_hdl%daddr, size_)
+      END IF
+      IF (PRESENT(zvalue_))         THEN
+         CALL xios_set_axisgroup_zvalue(axisgroup_hdl%daddr, zvalue_, size(zvalue_, 1))
+      END IF
+   END SUBROUTINE set_axisgroup_attributes_hdl
+
+   SUBROUTINE axis_handle_create(ret, idt)
+      IMPLICIT NONE
+      TYPE(XAxisHandle) , INTENT(OUT):: ret
+      CHARACTER(len = *), INTENT(IN) :: idt      
+      CALL xios_axis_handle_create(ret%daddr, idt, len(idt))            
+   END SUBROUTINE axis_handle_create
+   
+   SUBROUTINE axisgroup_handle_create(ret, idt)
+      IMPLICIT NONE
+      TYPE(XAxisGroupHandle), INTENT(OUT):: ret
+      CHARACTER(len = *)    , INTENT(IN) :: idt      
+      CALL xios_axis_handle_create(ret%daddr, idt, len(idt))            
+   END SUBROUTINE axisgroup_handle_create
+
+END MODULE AXIS
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/axis_interface.f90
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/axis_interface.f90	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/axis_interface.f90	(revision 242)
@@ -0,0 +1,56 @@
+MODULE AXIS_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+     
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+     
+      SUBROUTINE xios_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)                   :: name_size
+      END SUBROUTINE xios_set_axis_name
+
+      SUBROUTINE xios_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)                   :: standard_name_size
+      END SUBROUTINE xios_set_axis_standard_name
+
+      SUBROUTINE xios_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)                   :: long_name_size
+      END SUBROUTINE xios_set_axis_long_name
+
+      SUBROUTINE xios_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)                   :: unit_size
+      END SUBROUTINE xios_set_axis_unit
+
+      SUBROUTINE xios_set_axis_size(axis_hdl, size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+         INTEGER (kind = C_INT)             :: size
+      END SUBROUTINE xios_set_axis_size
+
+      SUBROUTINE xios_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)                    :: zvalue_extent1
+      END SUBROUTINE xios_set_axis_zvalue
+      
+      SUBROUTINE xios_axis_handle_create(ret, idt, idt_size) BIND(C)
+         import C_CHAR, C_INTPTR_T, C_INT
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE xios_axis_handle_create
+     
+   END INTERFACE
+     
+END MODULE AXIS_INTERFACE
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/axisgroup_interface.f90
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/axisgroup_interface.f90	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/axisgroup_interface.f90	(revision 242)
@@ -0,0 +1,56 @@
+MODULE AXISGROUP_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+     
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+     
+      SUBROUTINE xios_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)                   :: name_size
+      END SUBROUTINE xios_set_axisgroup_name
+
+      SUBROUTINE xios_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)                   :: standard_name_size
+      END SUBROUTINE xios_set_axisgroup_standard_name
+
+      SUBROUTINE xios_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)                   :: long_name_size
+      END SUBROUTINE xios_set_axisgroup_long_name
+
+      SUBROUTINE xios_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)                   :: unit_size
+      END SUBROUTINE xios_set_axisgroup_unit
+
+      SUBROUTINE xios_set_axisgroup_size(axisgroup_hdl, size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+         INTEGER (kind = C_INT)             :: size
+      END SUBROUTINE xios_set_axisgroup_size
+
+      SUBROUTINE xios_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)                    :: zvalue_extent1
+      END SUBROUTINE xios_set_axisgroup_zvalue
+  
+      SUBROUTINE xios_axisgroup_handle_create(ret, idt, idt_size) BIND(C)
+         import C_CHAR, C_INTPTR_T, C_INT
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE xios_axisgroup_handle_create
+     
+   END INTERFACE
+     
+END MODULE AXISGROUP_INTERFACE
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/context_interface.f90
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/context_interface.f90	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/context_interface.f90	(revision 242)
@@ -0,0 +1,29 @@
+MODULE CONTEXT_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+     
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+     
+      SUBROUTINE xios_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)                    :: calendar_type_size
+      END SUBROUTINE xios_set_context_calendar_type
+
+      SUBROUTINE xios_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)                    :: start_date_size
+      END SUBROUTINE xios_set_context_start_date
+
+      SUBROUTINE xios_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)                    :: output_dir_size
+      END SUBROUTINE xios_set_context_output_dir
+     
+   END INTERFACE
+     
+END MODULE CONTEXT_INTERFACE
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/domain_interface.f90
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/domain_interface.f90	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/domain_interface.f90	(revision 242)
@@ -0,0 +1,204 @@
+MODULE DOMAIN_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+       
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+       
+      SUBROUTINE xios_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)                    :: name_size
+      END SUBROUTINE xios_set_domain_name
+
+      SUBROUTINE xios_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)                    :: standard_name_size
+      END SUBROUTINE xios_set_domain_standard_name
+
+      SUBROUTINE xios_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)                    :: long_name_size
+      END SUBROUTINE xios_set_domain_long_name
+
+      SUBROUTINE xios_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)                    :: domain_group_ref_size
+      END SUBROUTINE xios_set_domain_domain_group_ref
+
+      SUBROUTINE xios_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)             :: ni_glo
+      END SUBROUTINE xios_set_domain_ni_glo
+
+      SUBROUTINE xios_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)             :: nj_glo
+      END SUBROUTINE xios_set_domain_nj_glo
+
+      SUBROUTINE xios_set_domain_ibegin(domain_hdl, ibegin) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+         INTEGER (kind = C_INT)             :: ibegin
+      END SUBROUTINE xios_set_domain_ibegin
+
+      SUBROUTINE xios_set_domain_iend(domain_hdl, iend) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+         INTEGER (kind = C_INT)             :: iend
+      END SUBROUTINE xios_set_domain_iend
+
+      SUBROUTINE xios_set_domain_ni(domain_hdl, ni) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+         INTEGER (kind = C_INT)             :: ni
+      END SUBROUTINE xios_set_domain_ni
+
+      SUBROUTINE xios_set_domain_jbegin(domain_hdl, jbegin) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+         INTEGER (kind = C_INT)             :: jbegin
+      END SUBROUTINE xios_set_domain_jbegin
+
+      SUBROUTINE xios_set_domain_jend(domain_hdl, jend) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+         INTEGER (kind = C_INT)             :: jend
+      END SUBROUTINE xios_set_domain_jend
+
+      SUBROUTINE xios_set_domain_nj(domain_hdl, nj) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+         INTEGER (kind = C_INT)             :: nj
+      END SUBROUTINE xios_set_domain_nj
+
+      SUBROUTINE xios_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)                    :: mask_extent1
+         INTEGER (kind = C_INT)                    :: mask_extent2
+      END SUBROUTINE xios_set_domain_mask
+
+      SUBROUTINE xios_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)             :: data_dim
+      END SUBROUTINE xios_set_domain_data_dim
+
+      SUBROUTINE xios_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)             :: data_ni
+      END SUBROUTINE xios_set_domain_data_ni
+
+      SUBROUTINE xios_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)             :: data_nj
+      END SUBROUTINE xios_set_domain_data_nj
+
+      SUBROUTINE xios_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)             :: data_ibegin
+      END SUBROUTINE xios_set_domain_data_ibegin
+
+      SUBROUTINE xios_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)             :: data_jbegin
+      END SUBROUTINE xios_set_domain_data_jbegin
+
+      SUBROUTINE xios_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)             :: zoom_ni
+      END SUBROUTINE xios_set_domain_zoom_ni
+
+      SUBROUTINE xios_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)             :: zoom_nj
+      END SUBROUTINE xios_set_domain_zoom_nj
+
+      SUBROUTINE xios_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)             :: zoom_ibegin
+      END SUBROUTINE xios_set_domain_zoom_ibegin
+
+      SUBROUTINE xios_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)             :: zoom_jbegin
+      END SUBROUTINE xios_set_domain_zoom_jbegin
+
+      SUBROUTINE xios_set_domain_zoom_ni_loc(domain_hdl, zoom_ni_loc) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+         INTEGER (kind = C_INT)             :: zoom_ni_loc
+      END SUBROUTINE xios_set_domain_zoom_ni_loc
+
+      SUBROUTINE xios_set_domain_zoom_nj_loc(domain_hdl, zoom_nj_loc) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+         INTEGER (kind = C_INT)             :: zoom_nj_loc
+      END SUBROUTINE xios_set_domain_zoom_nj_loc
+
+      SUBROUTINE xios_set_domain_zoom_ibegin_loc(domain_hdl, zoom_ibegin_loc) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+         INTEGER (kind = C_INT)             :: zoom_ibegin_loc
+      END SUBROUTINE xios_set_domain_zoom_ibegin_loc
+
+      SUBROUTINE xios_set_domain_zoom_jbegin_loc(domain_hdl, zoom_jbegin_loc) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+         INTEGER (kind = C_INT)             :: zoom_jbegin_loc
+      END SUBROUTINE xios_set_domain_zoom_jbegin_loc
+
+      SUBROUTINE xios_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)             :: data_n_index
+      END SUBROUTINE xios_set_domain_data_n_index
+
+      SUBROUTINE xios_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)                     :: data_i_index_extent1
+      END SUBROUTINE xios_set_domain_data_i_index
+
+      SUBROUTINE xios_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)                    :: data_j_index_extent1
+      END SUBROUTINE xios_set_domain_data_j_index
+
+      SUBROUTINE xios_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)                    :: lonvalue_extent1
+      END SUBROUTINE xios_set_domain_lonvalue
+
+      SUBROUTINE xios_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)                    :: latvalue_extent1
+      END SUBROUTINE xios_set_domain_latvalue
+       
+   END INTERFACE
+       
+END MODULE DOMAIN_INTERFACE
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/domaingroup_interface.f90
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/domaingroup_interface.f90	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/domaingroup_interface.f90	(revision 242)
@@ -0,0 +1,204 @@
+MODULE DOMAINGROUP_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+       
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+       
+      SUBROUTINE xios_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)                    :: name_size
+      END SUBROUTINE xios_set_domaingroup_name
+
+      SUBROUTINE xios_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)                    :: standard_name_size
+      END SUBROUTINE xios_set_domaingroup_standard_name
+
+      SUBROUTINE xios_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)                    :: long_name_size
+      END SUBROUTINE xios_set_domaingroup_long_name
+
+      SUBROUTINE xios_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)                    :: domain_group_ref_size
+      END SUBROUTINE xios_set_domaingroup_domain_group_ref
+
+      SUBROUTINE xios_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)             :: ni_glo
+      END SUBROUTINE xios_set_domaingroup_ni_glo
+
+      SUBROUTINE xios_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)             :: nj_glo
+      END SUBROUTINE xios_set_domaingroup_nj_glo
+
+      SUBROUTINE xios_set_domaingroup_ibegin(domaingroup_hdl, ibegin) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+         INTEGER (kind = C_INT)             :: ibegin
+      END SUBROUTINE xios_set_domaingroup_ibegin
+
+      SUBROUTINE xios_set_domaingroup_iend(domaingroup_hdl, iend) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+         INTEGER (kind = C_INT)             :: iend
+      END SUBROUTINE xios_set_domaingroup_iend
+
+      SUBROUTINE xios_set_domaingroup_ni(domaingroup_hdl, ni) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+         INTEGER (kind = C_INT)             :: ni
+      END SUBROUTINE xios_set_domaingroup_ni
+
+      SUBROUTINE xios_set_domaingroup_jbegin(domaingroup_hdl, jbegin) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+         INTEGER (kind = C_INT)             :: jbegin
+      END SUBROUTINE xios_set_domaingroup_jbegin
+
+      SUBROUTINE xios_set_domaingroup_jend(domaingroup_hdl, jend) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+         INTEGER (kind = C_INT)             :: jend
+      END SUBROUTINE xios_set_domaingroup_jend
+
+      SUBROUTINE xios_set_domaingroup_nj(domaingroup_hdl, nj) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+         INTEGER (kind = C_INT)             :: nj
+      END SUBROUTINE xios_set_domaingroup_nj
+
+      SUBROUTINE xios_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)                    :: mask_extent1
+         INTEGER (kind = C_INT)                    :: mask_extent2
+      END SUBROUTINE xios_set_domaingroup_mask
+
+      SUBROUTINE xios_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)             :: data_dim
+      END SUBROUTINE xios_set_domaingroup_data_dim
+
+      SUBROUTINE xios_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)             :: data_ni
+      END SUBROUTINE xios_set_domaingroup_data_ni
+
+      SUBROUTINE xios_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)             :: data_nj
+      END SUBROUTINE xios_set_domaingroup_data_nj
+
+      SUBROUTINE xios_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)             :: data_ibegin
+      END SUBROUTINE xios_set_domaingroup_data_ibegin
+
+      SUBROUTINE xios_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)             :: data_jbegin
+      END SUBROUTINE xios_set_domaingroup_data_jbegin
+
+      SUBROUTINE xios_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)             :: zoom_ni
+      END SUBROUTINE xios_set_domaingroup_zoom_ni
+
+      SUBROUTINE xios_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)             :: zoom_nj
+      END SUBROUTINE xios_set_domaingroup_zoom_nj
+
+      SUBROUTINE xios_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)             :: zoom_ibegin
+      END SUBROUTINE xios_set_domaingroup_zoom_ibegin
+
+      SUBROUTINE xios_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)             :: zoom_jbegin
+      END SUBROUTINE xios_set_domaingroup_zoom_jbegin
+
+      SUBROUTINE xios_set_domaingroup_zoom_ni_loc(domaingroup_hdl, zoom_ni_loc) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+         INTEGER (kind = C_INT)             :: zoom_ni_loc
+      END SUBROUTINE xios_set_domaingroup_zoom_ni_loc
+
+      SUBROUTINE xios_set_domaingroup_zoom_nj_loc(domaingroup_hdl, zoom_nj_loc) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+         INTEGER (kind = C_INT)             :: zoom_nj_loc
+      END SUBROUTINE xios_set_domaingroup_zoom_nj_loc
+
+      SUBROUTINE xios_set_domaingroup_zoom_ibegin_loc(domaingroup_hdl, zoom_ibegin_loc) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+         INTEGER (kind = C_INT)             :: zoom_ibegin_loc
+      END SUBROUTINE xios_set_domaingroup_zoom_ibegin_loc
+
+      SUBROUTINE xios_set_domaingroup_zoom_jbegin_loc(domaingroup_hdl, zoom_jbegin_loc) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+         INTEGER (kind = C_INT)             :: zoom_jbegin_loc
+      END SUBROUTINE xios_set_domaingroup_zoom_jbegin_loc
+
+      SUBROUTINE xios_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)             :: data_n_index
+      END SUBROUTINE xios_set_domaingroup_data_n_index
+
+      SUBROUTINE xios_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)                     :: data_i_index_extent1
+      END SUBROUTINE xios_set_domaingroup_data_i_index
+
+      SUBROUTINE xios_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)                    :: data_j_index_extent1
+      END SUBROUTINE xios_set_domaingroup_data_j_index
+
+      SUBROUTINE xios_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)                    :: lonvalue_extent1
+      END SUBROUTINE xios_set_domaingroup_lonvalue
+
+      SUBROUTINE xios_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)                    :: latvalue_extent1
+      END SUBROUTINE xios_set_domaingroup_latvalue
+       
+   END INTERFACE
+       
+END MODULE DOMAINGROUP_INTERFACE
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/field_interface.f90
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/field_interface.f90	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/field_interface.f90	(revision 242)
@@ -0,0 +1,102 @@
+MODULE FIELD_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+   
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+   
+      SUBROUTINE xios_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)                    :: name_size
+      END SUBROUTINE xios_set_field_name
+
+      SUBROUTINE xios_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)                    :: standard_name_size
+      END SUBROUTINE xios_set_field_standard_name
+
+      SUBROUTINE xios_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)                    :: long_name_size
+      END SUBROUTINE xios_set_field_long_name
+
+      SUBROUTINE xios_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)                    :: unit_size
+      END SUBROUTINE xios_set_field_unit
+
+      SUBROUTINE xios_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)                    :: operation_size
+      END SUBROUTINE xios_set_field_operation
+
+      SUBROUTINE xios_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)                    :: freq_op_size
+      END SUBROUTINE xios_set_field_freq_op
+
+      SUBROUTINE xios_set_field_level(field_hdl, level) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+         INTEGER (kind = C_INT)             :: level
+      END SUBROUTINE xios_set_field_level
+
+      SUBROUTINE xios_set_field_prec(field_hdl, prec) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+         INTEGER (kind = C_INT)             :: prec
+      END SUBROUTINE xios_set_field_prec
+
+      SUBROUTINE xios_set_field_enabled(field_hdl, enabled) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+         LOGICAL (kind = C_BOOL)            :: enabled
+         END SUBROUTINE xios_set_field_enabled
+
+      SUBROUTINE xios_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)                    :: domain_ref_size
+      END SUBROUTINE xios_set_field_domain_ref
+
+      SUBROUTINE xios_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)                    :: axis_ref_size
+      END SUBROUTINE xios_set_field_axis_ref
+
+      SUBROUTINE xios_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)                    :: grid_ref_size
+      END SUBROUTINE xios_set_field_grid_ref
+
+      SUBROUTINE xios_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)                    :: field_ref_size
+      END SUBROUTINE xios_set_field_field_ref
+
+      SUBROUTINE xios_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)          :: default_value
+      END SUBROUTINE xios_set_field_default_value
+   
+   END INTERFACE
+   
+END MODULE FIELD_INTERFACE
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/fieldgroup_interface.f90
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/fieldgroup_interface.f90	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/fieldgroup_interface.f90	(revision 242)
@@ -0,0 +1,102 @@
+MODULE FIELDGROUP_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+   
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+   
+      SUBROUTINE xios_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)                    :: name_size
+      END SUBROUTINE xios_set_fieldgroup_name
+
+      SUBROUTINE xios_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)                    :: standard_name_size
+      END SUBROUTINE xios_set_fieldgroup_standard_name
+
+      SUBROUTINE xios_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)                    :: long_name_size
+      END SUBROUTINE xios_set_fieldgroup_long_name
+
+      SUBROUTINE xios_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)                    :: unit_size
+      END SUBROUTINE xios_set_fieldgroup_unit
+
+      SUBROUTINE xios_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)                    :: operation_size
+      END SUBROUTINE xios_set_fieldgroup_operation
+
+      SUBROUTINE xios_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)                    :: freq_op_size
+      END SUBROUTINE xios_set_fieldgroup_freq_op
+
+      SUBROUTINE xios_set_fieldgroup_level(fieldgroup_hdl, level) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+         INTEGER (kind = C_INT)             :: level
+      END SUBROUTINE xios_set_fieldgroup_level
+
+      SUBROUTINE xios_set_fieldgroup_prec(fieldgroup_hdl, prec) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+         INTEGER (kind = C_INT)             :: prec
+      END SUBROUTINE xios_set_fieldgroup_prec
+
+      SUBROUTINE xios_set_fieldgroup_enabled(fieldgroup_hdl, enabled) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+         LOGICAL (kind = C_BOOL)            :: enabled
+         END SUBROUTINE xios_set_fieldgroup_enabled
+
+      SUBROUTINE xios_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)                    :: domain_ref_size
+      END SUBROUTINE xios_set_fieldgroup_domain_ref
+
+      SUBROUTINE xios_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)                    :: axis_ref_size
+      END SUBROUTINE xios_set_fieldgroup_axis_ref
+
+      SUBROUTINE xios_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)                    :: grid_ref_size
+      END SUBROUTINE xios_set_fieldgroup_grid_ref
+
+      SUBROUTINE xios_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)                    :: field_ref_size
+      END SUBROUTINE xios_set_fieldgroup_field_ref
+
+      SUBROUTINE xios_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)          :: default_value
+      END SUBROUTINE xios_set_fieldgroup_default_value
+   
+   END INTERFACE
+   
+END MODULE FIELDGROUP_INTERFACE
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/file_interface.f90
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/file_interface.f90	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/file_interface.f90	(revision 242)
@@ -0,0 +1,41 @@
+MODULE FILE_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+   
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+   
+      SUBROUTINE xios_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)                   :: name_size
+      END SUBROUTINE xios_set_file_name
+
+      SUBROUTINE xios_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)                   :: description_size
+      END SUBROUTINE xios_set_file_description
+
+      SUBROUTINE xios_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)                    :: output_freq_size
+      END SUBROUTINE xios_set_file_output_freq
+
+      SUBROUTINE xios_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)             :: output_level
+      END SUBROUTINE xios_set_file_output_level
+
+      SUBROUTINE xios_set_file_enabled(file_hdl, enabled) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+         LOGICAL (kind = C_BOOL)            :: enabled
+      END SUBROUTINE xios_set_file_enabled
+   
+   END INTERFACE
+   
+END MODULE FILE_INTERFACE
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/filegroup_interface.f90
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/filegroup_interface.f90	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/filegroup_interface.f90	(revision 242)
@@ -0,0 +1,41 @@
+MODULE FILEGROUP_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+   
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+   
+      SUBROUTINE xios_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)                    :: name_size
+      END SUBROUTINE xios_set_filegroup_name
+
+      SUBROUTINE xios_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)                    :: description_size
+      END SUBROUTINE xios_set_filegroup_description
+
+      SUBROUTINE xios_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)                    :: output_freq_size
+      END SUBROUTINE xios_set_filegroup_output_freq
+
+      SUBROUTINE xios_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)             :: output_level
+      END SUBROUTINE xios_set_filegroup_output_level
+
+      SUBROUTINE xios_set_filegroup_enabled(filegroup_hdl, enabled) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+         LOGICAL (kind = C_BOOL)            :: enabled
+      END SUBROUTINE xios_set_filegroup_enabled
+   
+   END INTERFACE
+   
+END MODULE FILEGROUP_INTERFACE
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/grid_interface.f90
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/grid_interface.f90	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/grid_interface.f90	(revision 242)
@@ -0,0 +1,36 @@
+MODULE GRID_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+     
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+     
+      SUBROUTINE xios_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)                    :: name_size
+      END SUBROUTINE xios_set_grid_name
+
+      SUBROUTINE xios_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)                    :: description_size
+      END SUBROUTINE xios_set_grid_description
+
+      SUBROUTINE xios_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)                    :: domain_ref_size
+      END SUBROUTINE xios_set_grid_domain_ref
+
+      SUBROUTINE xios_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)                    :: axis_ref_size
+      END SUBROUTINE xios_set_grid_axis_ref
+     
+   END INTERFACE
+     
+END MODULE GRID_INTERFACE
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/gridgroup_interface.f90
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/gridgroup_interface.f90	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/gridgroup_interface.f90	(revision 242)
@@ -0,0 +1,36 @@
+MODULE GRIDGROUP_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+     
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+     
+      SUBROUTINE xios_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)                    :: name_size
+      END SUBROUTINE xios_set_gridgroup_name
+
+      SUBROUTINE xios_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)                    :: description_size
+      END SUBROUTINE xios_set_gridgroup_description
+
+      SUBROUTINE xios_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)                    :: domain_ref_size
+      END SUBROUTINE xios_set_gridgroup_domain_ref
+
+      SUBROUTINE xios_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)                    :: axis_ref_size
+      END SUBROUTINE xios_set_gridgroup_axis_ref
+     
+   END INTERFACE
+     
+END MODULE GRIDGROUP_INTERFACE
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/xml_tree.f90
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/xml_tree.f90	(revision 242)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/fortran/xml_tree.f90	(revision 242)
@@ -0,0 +1,95 @@
+MODULE XML_TREE
+   USE, INTRINSIC :: ISO_C_BINDING
+     
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+     
+      SUBROUTINE xios_xml_tree_add_field(parent_, child_, child_id, child_id_size) BIND(C)
+         import C_CHAR, C_INT, C_INTPTR_T
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE xios_xml_tree_add_field
+      
+      SUBROUTINE xios_xml_tree_add_grid(parent_, child_, child_id, child_id_size) BIND(C)
+         import C_CHAR, C_INT, C_INTPTR_T
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE xios_xml_tree_add_grid
+      
+      SUBROUTINE xios_xml_tree_add_file(parent_, child_, child_id, child_id_size) BIND(C)
+         import C_CHAR, C_INT, C_INTPTR_T
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE xios_xml_tree_add_file
+      
+      SUBROUTINE xios_xml_tree_add_axis(parent_, child_, child_id, child_id_size) BIND(C)
+         import C_CHAR, C_INT, C_INTPTR_T
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE xios_xml_tree_add_axis
+      
+      SUBROUTINE xios_xml_tree_add_domain(parent_, child_, child_id, child_id_size) BIND(C)
+         import C_CHAR, C_INT, C_INTPTR_T
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE xios_xml_tree_add_domain
+      
+      SUBROUTINE xios_xml_tree_add_fieldtofile(parent_, child_, child_id, child_id_size) BIND(C)
+         import C_CHAR, C_INT, C_INTPTR_T
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE xios_xml_tree_add_fieldtofile    
+
+      SUBROUTINE xios_xml_tree_show(filename, filename_size) BIND(C)
+         import C_CHAR, C_INT
+         CHARACTER(kind = C_CHAR), DIMENSION(*) :: filename
+         INTEGER  (kind = C_INT) , VALUE        :: filename_size
+      END SUBROUTINE xios_xml_tree_show
+
+      SUBROUTINE xios_xml_parse_file(filename, filename_size) BIND(C)
+         import C_CHAR, C_INT
+         CHARACTER(kind = C_CHAR), DIMENSION(*) :: filename
+         INTEGER  (kind = C_INT) , VALUE        :: filename_size
+      END SUBROUTINE xios_xml_parse_file
+
+      SUBROUTINE xios_xml_parse_string(xmlcontent, xmlcontent_size) BIND(C)
+         import C_CHAR, C_INT
+         CHARACTER(kind = C_CHAR), DIMENSION(*) :: xmlcontent
+         INTEGER  (kind = C_INT) , VALUE        :: xmlcontent_size
+      END SUBROUTINE xios_xml_parse_string
+     
+   END INTERFACE
+   
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+     
+   SUBROUTINE xml_tree_show(filename)
+      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: filename
+      IF (PRESENT(filename)) THEN
+         CALL xios_xml_tree_show(filename, len(filename))
+      ELSE
+         CALL xios_xml_tree_show("NONE", -1)
+      END IF
+   END SUBROUTINE xml_tree_show
+   
+   SUBROUTINE xml_parse_file(filename)
+      CHARACTER(len = *), INTENT(IN) :: filename
+      CALL xios_xml_parse_file(filename, len(filename))
+   END SUBROUTINE xml_Parse_File
+   
+   SUBROUTINE xml_parse_string(xmlcontent)
+      CHARACTER(len = *), INTENT(IN) :: xmlcontent
+      CALL xios_xml_parse_string(xmlcontent, len(xmlcontent))
+   END SUBROUTINE xml_Parse_String
+      
+END MODULE XML_TREE
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/main_server.cpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/main_server.cpp	(revision 241)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/main_server.cpp	(revision 242)
@@ -36,57 +36,6 @@
    try
    {
-       std::cout << "Test input"  << std::endl;
-       CINetCDF4Adv file_coslatgrid("test/vtk/file_coslatgrid.nc4");
-       CINetCDF4Adv file_xboundsybounds("test/vtk/file_xboundsybounds.nc4");
-       CINetCDF4Adv sampleCurveGrid4("test/vtk/sampleCurveGrid4.nc4");
-       CINetCDF4Adv sampleGenGrid3("test/vtk/sampleGenGrid3.nc4");
-       CINetCDF4Adv ucov("test/vtk/ucov.nc4");
-       
-       std::vector<CINetCDF4Adv*> listinput;
-       listinput.push_back(&file_coslatgrid);
-       listinput.push_back(&file_xboundsybounds);
-       listinput.push_back(&sampleCurveGrid4);
-       listinput.push_back(&sampleGenGrid3);
-       listinput.push_back(&ucov);
-       std::vector<CINetCDF4Adv*>::iterator it = listinput.begin(), end = listinput.end();
-       
-       for (; it != end; it++)
-       {
-           std::cout << "-------------" << std::endl;
-           std::map<std::string, std::size_t> dims = (*it)->getDimensions();
-           std::map<std::string, std::size_t>::iterator it0 = dims.begin(), end0 = dims.end();
-           
-           for (; it0 != end0; it0++)
-           {
-               std::cout << "dimensions " << it0->first << " : " << it0->second << std::endl;
-           }
-           
-           std::vector<std::string> vars = (*it)->getVariables();
-           std::vector<std::string>::iterator it1 = vars.begin(), end1 = vars.end();
-           for (; it1 != end1; it1++)
-           {
-               std::map<std::string, std::size_t> dims = (*it)->getDimensions(&(*it1));
-               std::map<std::string, std::size_t>::iterator it3 = dims.begin(), end3 = dims.end();
 
-               std::cout << "Variable " << *it1 << " [";
-               for (; it3 != end3; it3++)
-               {
-                   std::cout << it3->first << ":" << it3->second << " ";
-               }
-               std::cout << "] :" << std::endl;
-           }
-       }
-       
-       boost::multi_array<float, 1> data;
-       file_coslatgrid.readData(data, "NTEMP", 1);
-       std::cout << data.size() << std::endl;
 
-       
-       //vtkLSCEReader::ShowVariable("test/vtk/file_coslatgrid.nc4", "NTEMP");
-       vtkLSCEReader::ShowVariable("test/vtk/ucov.nc4", "ucov");
-       //vtkLSCEReader::ShowVariable("test/vtk/sampleCurveGrid4.nc4", "sample");
-       //vtkLSCEReader::ShowVariable("test/vtk/sampleGenGrid3.nc4", "sample");
-       //vtkLSCEReader::ShowVariable("test/vtk/file_xboundsybounds.nc4", "A");
-       
 
    }
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/mpi/mpi_interface.cpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/mpi/mpi_interface.cpp	(revision 241)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/mpi/mpi_interface.cpp	(revision 242)
@@ -19,4 +19,180 @@
 namespace comm {
 
+   // ---------------------- Initialisation & Finalisation ---------------------
+
+   void CMPIManager::Initialise(int * _argc, char *** _argv)
+   {
+      int flag = 0;
+      if (MPI_Initialized(&flag) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::Initialise(arc, argv)", << " MPI Error !");
+      if (!flag)
+      {
+         if (MPI_Init(_argc, _argv) != MPI_SUCCESS)
+            XIOS_ERROR("CMPIManager::Initialise(arc, argv)", << " MPI Error !");
+      }
+
+   }
+   
+   void CMPIManager::Finalize(void)
+   {
+      if (MPI_Finalize() != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::Finalize(void)", << " MPI Error !");
+   }
+   
+   // ------------------------------ Communicateurs ----------------------------
+   
+   int CMPIManager::GetCommRank(MPI_Comm _comm)
+   {
+      int rank = 0;
+      if (MPI_Comm_rank(_comm, &rank) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::GetCommRank(comm)", << " MPI Error !");
+      return (rank);
+   }
+   
+   int CMPIManager::GetCommSize(MPI_Comm _comm)
+   {
+      int size = 0;
+      if (MPI_Comm_size(_comm, &size) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::GetCommSize(comm)", << " MPI Error !");
+      return (size);
+   }
+   
+   MPI_Comm CMPIManager::CreateComm(MPI_Group _group, MPI_Comm _pcomm)
+   {
+      MPI_Comm commu;      
+      if (MPI_Comm_create(_pcomm, _group, &commu) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::CreateComm(group, pcomm)", << " MPI Error !");
+      return (commu);
+   }
+   
+   MPI_Comm CMPIManager::GetCommWorld(void)
+   {
+      return (MPI_COMM_WORLD); 
+   }
+   
+   // ---------------------------------- Autre ---------------------------------
+         
+   void CMPIManager::Barrier(MPI_Comm _comm)
+   {
+      if (MPI_Barrier(_comm) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::Barrier(comm)", << " MPI Error !");
+   }
+
+   // --------------------------------- Groupes --------------------------------
+         
+   MPI_Group CMPIManager::GetGroupWorld(void)
+   {
+      MPI_Group group = 0;
+      if (MPI_Comm_group(CMPIManager::GetCommWorld(), &group) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::GetGroupWorld()", << " MPI Error !");
+      return (group);
+   }
+   
+   MPI_Group CMPIManager::CreateSubGroup(MPI_Group _pgroup, const std::vector<int> & _ranks)
+   {
+      MPI_Group group = 0;
+      if (MPI_Group_incl(_pgroup, _ranks.size(), const_cast<int*>(&(_ranks[0])), &group) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::CreateSubGroup(pgroup, ranks)", << " MPI Error !");
+      return (group);
+   }
+   
+   MPI_Group CMPIManager::CreateSubGroup
+      (MPI_Group _pgroup, int _min_rank, int _max_rank, int _intval)
+   {
+      std::vector<int> ranks;
+      for (int i = _min_rank; i <= _max_rank; i += _intval)
+         ranks.push_back(i);
+      return (CMPIManager::CreateSubGroup(_pgroup, ranks));
+   }
+
+   // ----------------------------------- Tests --------------------------------
+         
+   bool CMPIManager::IsMaster(MPI_Comm _comm)
+   {
+      return (CMPIManager::GetCommRank(_comm) == 0); 
+   }
+   
+   bool CMPIManager::IsRank(int _rank, MPI_Comm _comm)
+   {
+      return (CMPIManager::GetCommRank(_comm) == _rank); 
+   }
+
+   // --------------------------- Communication simple -------------------------
+         
+   void CMPIManager::Send (MPI_Comm _comm, int _dest_rank, char * _data,
+                           std::size_t _size, MPI_Request & _request)
+   {
+      int nsize = _size;    
+      if (MPI_Issend(_data, nsize, MPI_CHAR, _dest_rank, 0, _comm, &_request) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::Send (comm, dest_rank, data, size, request)", << " MPI Error !");
+   }
+   
+   void CMPIManager::Wait (MPI_Request & _request)
+   {
+      MPI_Status status;
+      if (MPI_Wait(&_request, &status) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::Wait (request)", << " MPI Error !");
+   }
+   
+   bool CMPIManager::Test (MPI_Request & _request)
+   {
+      MPI_Status status;
+      int flag = 0;
+      if (MPI_Test(&_request, &flag, &status) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::Test (request)", << " MPI Error !");
+      return (flag);
+   }
+
+   bool CMPIManager::HasReceivedData(MPI_Comm _comm, int _src_rank)
+   {
+      MPI_Status status;
+      int flag = 0;
+      if (MPI_Iprobe(_src_rank, MPI_ANY_TAG, _comm, &flag, &status) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::HasReceivedData (comm, rank)", << " MPI Error !");
+      return (flag);
+   }
+   
+   std::size_t CMPIManager::GetReceivedDataSize(MPI_Comm _comm, int _src_rank)
+   {
+      MPI_Status status;
+      int flag = 0, size = 0;
+      if (MPI_Iprobe(_src_rank, MPI_ANY_TAG, _comm, &flag, &status) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::getReceivedDataSize (comm, rank)", << " MPI Error !");
+      if (!flag) return (0);  
+      if (MPI_Get_count(&status, MPI_CHAR, &size) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::getReceivedDataSize (comm, rank)", << " MPI Error !");
+
+      return (size);
+   }
+   
+   void CMPIManager::Receive(MPI_Comm _comm, int _src_rank, char * _data)
+   {
+      MPI_Request request = 0;
+      int size = CMPIManager::GetReceivedDataSize(_comm, _src_rank);
+      if (MPI_Irecv(_data, size, MPI_CHAR, _src_rank, MPI_ANY_TAG, _comm, &request) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::Receive (comm, src_rank, data)", << " MPI Error !");
+      CMPIManager::Wait (request); // Temporaire
+   }
+         
+   // ------------------------- Communication 'complexe' -----------------------
+         
+   //void SendLinearBuffer(MPIComm comm, int dest_rank, CLinearBuffer & buff, MPIRequest & request);
+   //void ReceiveLinearBuffer(MPIComm comm, int src_rank, CLinearBuffer & buff);
+   //boost::shared_ptr<CLinearBuffer> ReceiveLinearBuffer(MPIComm comm, int src_rank);
+   //void ReceiveCircularBuffer(MPIComm comm, int src_rank, CCircularBuffer & buff);
+
+   // ---------------------- MÃ©moire (non fonctionnel ....) --------------------
+         
+   void CMPIManager::AllocMemory(void * _data, std::size_t _size)
+   {
+      if (MPI_Alloc_mem(sizeof(char) * _size, MPI_INFO_NULL, _data) != MPI_SUCCESS)
+         XIOS_ERROR("CMPIManager::AllocMem(data, size)", << " MPI Error !");
+   }
+   
+   void CMPIManager::FreeMemory (void * _data)
+   {
+      MPI_Free_mem(_data);
+   }
+
 } // namespace comm
 } // namespace xmlioserver
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/mpi/mpi_interface.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/mpi/mpi_interface.hpp	(revision 241)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/mpi/mpi_interface.hpp	(revision 242)
@@ -71,5 +71,5 @@
          public : // Communication simple
          
-            static void Send (MPI_Comm comm, int dest_rank, const char * data,
+            static void Send (MPI_Comm comm, int dest_rank, char * data,
                               std::size_t size, MPI_Request & request);
             static void Wait (MPI_Request & request);
