Index: /XIOS/trunk/inputs/COMPLETE/context_atmosphere.xml
===================================================================
--- /XIOS/trunk/inputs/COMPLETE/context_atmosphere.xml	(revision 783)
+++ /XIOS/trunk/inputs/COMPLETE/context_atmosphere.xml	(revision 784)
@@ -27,5 +27,5 @@
     <domain id="domain_atm" />
     <domain id="domain_atm_zoom" domain_ref="domain_atm">
-      <zoom_domain zoom_ibegin="39" zoom_ni="20" zoom_jbegin="39" zoom_nj="5"/>
+      <zoom_domain id="domain_atm_zoom" />
     </domain>
   </domain_definition>
Index: /XIOS/trunk/src/config/zoom_domain_attribute.conf
===================================================================
--- /XIOS/trunk/src/config/zoom_domain_attribute.conf	(revision 783)
+++ /XIOS/trunk/src/config/zoom_domain_attribute.conf	(revision 784)
@@ -4,8 +4,2 @@
 DECLARE_ATTRIBUTE(int             , zoom_ibegin)
 DECLARE_ATTRIBUTE(int             , zoom_jbegin)
-
-/* LOCAL */
-DECLARE_ATTRIBUTE(int             , zoom_ni_loc)
-DECLARE_ATTRIBUTE(int             , zoom_nj_loc)
-DECLARE_ATTRIBUTE(int             , zoom_ibegin_loc)
-DECLARE_ATTRIBUTE(int             , zoom_jbegin_loc)
Index: /XIOS/trunk/src/config/zoom_domain_attribute_private.conf
===================================================================
--- /XIOS/trunk/src/config/zoom_domain_attribute_private.conf	(revision 784)
+++ /XIOS/trunk/src/config/zoom_domain_attribute_private.conf	(revision 784)
@@ -0,0 +1,5 @@
+/* LOCAL */
+DECLARE_ATTRIBUTE_PRIVATE(int             , zoom_ni_loc)
+DECLARE_ATTRIBUTE_PRIVATE(int             , zoom_nj_loc)
+DECLARE_ATTRIBUTE_PRIVATE(int             , zoom_ibegin_loc)
+DECLARE_ATTRIBUTE_PRIVATE(int             , zoom_jbegin_loc)
Index: /XIOS/trunk/src/generate_fortran_interface.cpp
===================================================================
--- /XIOS/trunk/src/generate_fortran_interface.cpp	(revision 783)
+++ /XIOS/trunk/src/generate_fortran_interface.cpp	(revision 784)
@@ -7,4 +7,6 @@
 #include "context.hpp"
 #include "file.hpp"
+#include "zoom_domain.hpp"
+#include "zoom_axis.hpp"
 
 int main (int argc, char ** argv, char ** UNUSED (env))
@@ -29,4 +31,7 @@
   CFileGroup filegroup;
 
+  CZoomDomain zoomDomain;
+  CZoomAxis zoomAxis;
+
   ostringstream oss;
   ofstream file;
@@ -195,4 +200,27 @@
   file.close();
 
+  file.open((path+"zoom_domain_interface_attr.F90").c_str());
+  zoomDomain.generateFortran2003Interface(file);
+  file.close();
+
+  file.open((path+"iczoom_domain_attr.cpp").c_str());
+  zoomDomain.generateCInterface(file);
+  file.close();
+
+  file.open((path+"izoom_domain_attr.F90").c_str());
+  zoomDomain.generateFortranInterface(file);
+  file.close();
+
+  file.open((path+"zoom_axis_interface_attr.F90").c_str());
+  zoomAxis.generateFortran2003Interface(file);
+  file.close();
+
+  file.open((path+"iczoom_axis_attr.cpp").c_str());
+  zoomAxis.generateCInterface(file);
+  file.close();
+
+  file.open((path+"izoom_axis_attr.F90").c_str());
+  zoomAxis.generateFortranInterface(file);
+  file.close();
 
   file.open((path+"context_interface_attr.F90").c_str());
@@ -208,3 +236,5 @@
   file.close();
 
+
+
 }
Index: /XIOS/trunk/src/interface/c/iczoom_axis.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/iczoom_axis.cpp	(revision 784)
+++ /XIOS/trunk/src/interface/c/iczoom_axis.cpp	(revision 784)
@@ -0,0 +1,46 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xios.hpp"
+
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "attribute_template.hpp"
+
+#include "icutil.hpp"
+#include "timer.hpp"
+#include "zoom_axis.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xios::CZoomAxis   * XZoomAxisPtr;
+
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   void cxios_zoom_axis_handle_create (XZoomAxisPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CZoomAxis::get(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+   void cxios_zoom_axis_valid_id (bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CZoomAxis::has(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/iczoom_domain.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/iczoom_domain.cpp	(revision 784)
+++ /XIOS/trunk/src/interface/c/iczoom_domain.cpp	(revision 784)
@@ -0,0 +1,46 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xios.hpp"
+
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "attribute_template.hpp"
+
+#include "icutil.hpp"
+#include "timer.hpp"
+#include "zoom_domain.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xios::CZoomDomain      * XZoomDomainPtr;
+
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   void cxios_zoom_domain_handle_create(XZoomDomainPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CZoomDomain::get(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+   void cxios_zoom_domain_valid_id(bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CZoomDomain::has(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+} // extern "C"
Index: /XIOS/trunk/src/interface/c_attr/iczoom_axis_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/iczoom_axis_attr.cpp	(revision 784)
+++ /XIOS/trunk/src/interface/c_attr/iczoom_axis_attr.cpp	(revision 784)
@@ -0,0 +1,87 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                     *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xios.hpp"
+#include "attribute_template.hpp"
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "icutil.hpp"
+#include "icdate.hpp"
+#include "timer.hpp"
+#include "node_type.hpp"
+
+extern "C"
+{
+  typedef xios::CZoomAxis* zoom_axis_Ptr;
+
+  void cxios_set_zoom_axis_zoom_begin(zoom_axis_Ptr zoom_axis_hdl, int zoom_begin)
+  {
+    CTimer::get("XIOS").resume();
+    zoom_axis_hdl->zoom_begin.setValue(zoom_begin);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_zoom_axis_zoom_begin(zoom_axis_Ptr zoom_axis_hdl, int* zoom_begin)
+  {
+    CTimer::get("XIOS").resume();
+    *zoom_begin = zoom_axis_hdl->zoom_begin.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_zoom_axis_zoom_begin(zoom_axis_Ptr zoom_axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = zoom_axis_hdl->zoom_begin.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_zoom_axis_zoom_end(zoom_axis_Ptr zoom_axis_hdl, int zoom_end)
+  {
+    CTimer::get("XIOS").resume();
+    zoom_axis_hdl->zoom_end.setValue(zoom_end);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_zoom_axis_zoom_end(zoom_axis_Ptr zoom_axis_hdl, int* zoom_end)
+  {
+    CTimer::get("XIOS").resume();
+    *zoom_end = zoom_axis_hdl->zoom_end.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_zoom_axis_zoom_end(zoom_axis_Ptr zoom_axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = zoom_axis_hdl->zoom_end.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_zoom_axis_zoom_size(zoom_axis_Ptr zoom_axis_hdl, int zoom_size)
+  {
+    CTimer::get("XIOS").resume();
+    zoom_axis_hdl->zoom_size.setValue(zoom_size);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_zoom_axis_zoom_size(zoom_axis_Ptr zoom_axis_hdl, int* zoom_size)
+  {
+    CTimer::get("XIOS").resume();
+    *zoom_size = zoom_axis_hdl->zoom_size.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_zoom_axis_zoom_size(zoom_axis_Ptr zoom_axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = zoom_axis_hdl->zoom_size.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+}
Index: /XIOS/trunk/src/interface/c_attr/iczoom_domain_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/iczoom_domain_attr.cpp	(revision 784)
+++ /XIOS/trunk/src/interface/c_attr/iczoom_domain_attr.cpp	(revision 784)
@@ -0,0 +1,110 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                     *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xios.hpp"
+#include "attribute_template.hpp"
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "icutil.hpp"
+#include "icdate.hpp"
+#include "timer.hpp"
+#include "node_type.hpp"
+
+extern "C"
+{
+  typedef xios::CZoomDomain* zoom_domain_Ptr;
+
+  void cxios_set_zoom_domain_zoom_ibegin(zoom_domain_Ptr zoom_domain_hdl, int zoom_ibegin)
+  {
+    CTimer::get("XIOS").resume();
+    zoom_domain_hdl->zoom_ibegin.setValue(zoom_ibegin);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_zoom_domain_zoom_ibegin(zoom_domain_Ptr zoom_domain_hdl, int* zoom_ibegin)
+  {
+    CTimer::get("XIOS").resume();
+    *zoom_ibegin = zoom_domain_hdl->zoom_ibegin.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_zoom_domain_zoom_ibegin(zoom_domain_Ptr zoom_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = zoom_domain_hdl->zoom_ibegin.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_zoom_domain_zoom_jbegin(zoom_domain_Ptr zoom_domain_hdl, int zoom_jbegin)
+  {
+    CTimer::get("XIOS").resume();
+    zoom_domain_hdl->zoom_jbegin.setValue(zoom_jbegin);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_zoom_domain_zoom_jbegin(zoom_domain_Ptr zoom_domain_hdl, int* zoom_jbegin)
+  {
+    CTimer::get("XIOS").resume();
+    *zoom_jbegin = zoom_domain_hdl->zoom_jbegin.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_zoom_domain_zoom_jbegin(zoom_domain_Ptr zoom_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = zoom_domain_hdl->zoom_jbegin.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_zoom_domain_zoom_ni(zoom_domain_Ptr zoom_domain_hdl, int zoom_ni)
+  {
+    CTimer::get("XIOS").resume();
+    zoom_domain_hdl->zoom_ni.setValue(zoom_ni);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_zoom_domain_zoom_ni(zoom_domain_Ptr zoom_domain_hdl, int* zoom_ni)
+  {
+    CTimer::get("XIOS").resume();
+    *zoom_ni = zoom_domain_hdl->zoom_ni.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_zoom_domain_zoom_ni(zoom_domain_Ptr zoom_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = zoom_domain_hdl->zoom_ni.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_zoom_domain_zoom_nj(zoom_domain_Ptr zoom_domain_hdl, int zoom_nj)
+  {
+    CTimer::get("XIOS").resume();
+    zoom_domain_hdl->zoom_nj.setValue(zoom_nj);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_zoom_domain_zoom_nj(zoom_domain_Ptr zoom_domain_hdl, int* zoom_nj)
+  {
+    CTimer::get("XIOS").resume();
+    *zoom_nj = zoom_domain_hdl->zoom_nj.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_zoom_domain_zoom_nj(zoom_domain_Ptr zoom_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = zoom_domain_hdl->zoom_nj.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+}
Index: /XIOS/trunk/src/interface/fortran/ixios.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/ixios.F90	(revision 783)
+++ /XIOS/trunk/src/interface/fortran/ixios.F90	(revision 784)
@@ -67,4 +67,12 @@
 USE iaxisgroup_attr, ONLY : xios(set_axisgroup_attr), xios(get_axisgroup_attr), xios(is_defined_axisgroup_attr)
 
+USE izoom_axis, ONLY : txios(zoom_axis), xios(is_valid_zoom_axis)
+
+USE izoom_axis_attr, ONLY : xios(set_zoom_axis_attr), xios(get_zoom_axis_attr), xios(is_defined_zoom_axis_attr)
+
+USE izoom_domain, ONLY : txios(zoom_domain), xios(is_valid_zoom_domain)
+
+USE izoom_domain_attr, ONLY : xios(set_zoom_domain_attr), xios(get_zoom_domain_attr), xios(is_defined_zoom_domain_attr)
+
 USE XIOS_INTERFACES, ONLY : xios(set_attr), xios(get_attr), xios(is_defined_attr), xios(get_handle), xios(add_child), &
                             xios(send_field), xios(send_scalar), xios(recv_field), xios(field_is_active), xios(getVar), xios(setVar)
Index: /XIOS/trunk/src/interface/fortran/ixios_interfaces.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/ixios_interfaces.F90	(revision 783)
+++ /XIOS/trunk/src/interface/fortran/ixios_interfaces.F90	(revision 784)
@@ -51,4 +51,12 @@
 USE iaxisgroup_attr, ONLY : xios(set_axisgroup_attr_hdl), xios(get_axisgroup_attr_hdl), xios(is_defined_axisgroup_attr_hdl)
 
+USE izoom_axis, ONLY : xios(get_zoom_axis_handle)
+
+USE izoom_axis_attr, ONLY : xios(set_zoom_axis_attr_hdl), xios(get_zoom_axis_attr_hdl), xios(is_defined_zoom_axis_attr_hdl)
+
+USE izoom_domain, ONLY : xios(get_zoom_domain_handle)
+
+USE izoom_domain_attr, ONLY : xios(set_zoom_domain_attr_hdl), xios(get_zoom_domain_attr_hdl), xios(is_defined_zoom_domain_attr_hdl)
+
 USE ixml_tree, ONLY : xios(add_axis), xios(add_file), xios(add_grid), xios(add_field), xios(add_domain),   &
                       xios(add_fieldtofile), xios(add_variabletofile), xios(add_variabletofield),          &
@@ -64,5 +72,6 @@
                    xios(set_file_attr_hdl), xios(set_filegroup_attr_hdl),                                    &
                    xios(set_grid_attr_hdl), xios(set_gridgroup_attr_hdl), xios(set_axis_attr_hdl) ,          &
-                   xios(set_axisgroup_attr_hdl), xios(set_context_attr_hdl)
+                   xios(set_axisgroup_attr_hdl), xios(set_context_attr_hdl), xios(set_zoom_axis_attr_hdl),   &
+                   xios(set_zoom_domain_attr_hdl)
 END INTERFACE xios(set_attr)
 
@@ -72,5 +81,6 @@
                    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)
+                   xios(get_axisgroup_attr_hdl), xios(get_context_attr_hdl), xios(get_zoom_axis_attr_hdl),   &
+                   xios(get_zoom_domain_attr_hdl)
 END INTERFACE xios(get_attr)
 
@@ -80,5 +90,6 @@
                    xios(is_defined_file_attr_hdl), xios(is_defined_filegroup_attr_hdl),                                           &
                    xios(is_defined_grid_attr_hdl), xios(is_defined_gridgroup_attr_hdl), xios(is_defined_axis_attr_hdl) ,          &
-                   xios(is_defined_axisgroup_attr_hdl), xios(is_defined_context_attr_hdl)
+                   xios(is_defined_axisgroup_attr_hdl), xios(is_defined_context_attr_hdl),                                        &
+                   xios(is_defined_zoom_axis_attr_hdl), xios(is_defined_zoom_domain_attr_hdl)
 END INTERFACE xios(is_defined_attr)
 
@@ -88,5 +99,6 @@
                    xios(get_gridgroup_handle), xios(get_axis_handle), xios(get_axisgroup_handle),   &
                    xios(get_field_handle), xios(get_fieldgroup_handle),xios(get_variable_handle),   &
-                   xios(get_variablegroup_handle)
+                   xios(get_variablegroup_handle), xios(get_zoom_axis_handle),                  &
+                   xios(get_zoom_domain_handle)
 END INTERFACE xios(get_handle)
 
Index: /XIOS/trunk/src/interface/fortran/izoom_axis.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/izoom_axis.F90	(revision 784)
+++ /XIOS/trunk/src/interface/fortran/izoom_axis.F90	(revision 784)
@@ -0,0 +1,30 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IZOOM_AXIS
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE ZOOM_AXIS_INTERFACE
+
+   TYPE txios(zoom_axis)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(zoom_axis)
+
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_zoom_axis_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN) :: idt
+      TYPE(txios(zoom_axis)) , INTENT(OUT):: ret
+      CALL cxios_zoom_axis_handle_create(ret%daddr, idt, len(idt))
+   END SUBROUTINE xios(get_zoom_axis_handle)
+
+   LOGICAL FUNCTION xios(is_valid_zoom_axis)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_zoom_axis_valid_id(val, idt, len(idt))
+      xios(is_valid_zoom_axis) = val
+
+   END FUNCTION  xios(is_valid_zoom_axis)
+
+END MODULE IZOOM_AXIS
Index: /XIOS/trunk/src/interface/fortran/izoom_domain.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/izoom_domain.F90	(revision 784)
+++ /XIOS/trunk/src/interface/fortran/izoom_domain.F90	(revision 784)
@@ -0,0 +1,30 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IZOOM_DOMAIN
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE ZOOM_DOMAIN_INTERFACE
+
+   TYPE txios(zoom_domain)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(zoom_domain)
+
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_zoom_domain_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN) :: idt
+      TYPE(txios(zoom_domain)) , INTENT(OUT):: ret
+      CALL cxios_zoom_domain_handle_create(ret%daddr, idt, len(idt))
+   END SUBROUTINE xios(get_zoom_domain_handle)
+
+   LOGICAL FUNCTION xios(is_valid_zoom_domain)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_zoom_domain_valid_id(val, idt, len(idt))
+      xios(is_valid_zoom_domain) = val
+
+   END FUNCTION  xios(is_valid_zoom_domain)
+
+END MODULE IZOOM_DOMAIN
Index: /XIOS/trunk/src/interface/fortran/zoom_axis_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/zoom_axis_interface.f90	(revision 784)
+++ /XIOS/trunk/src/interface/fortran/zoom_axis_interface.f90	(revision 784)
@@ -0,0 +1,22 @@
+MODULE ZOOM_AXIS_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE cxios_zoom_axis_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_zoom_axis_handle_create
+
+      SUBROUTINE cxios_zoom_axis_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_zoom_axis_valid_id
+
+   END INTERFACE
+
+END MODULE ZOOM_AXIS_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/zoom_domain_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/zoom_domain_interface.f90	(revision 784)
+++ /XIOS/trunk/src/interface/fortran/zoom_domain_interface.f90	(revision 784)
@@ -0,0 +1,22 @@
+MODULE ZOOM_DOMAIN_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE cxios_zoom_domain_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_zoom_domain_handle_create
+
+      SUBROUTINE cxios_zoom_domain_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_zoom_domain_valid_id
+
+   END INTERFACE
+
+END MODULE ZOOM_DOMAIN_INTERFACE
Index: /XIOS/trunk/src/interface/fortran_attr/izoom_axis_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/izoom_axis_attr.F90	(revision 784)
+++ /XIOS/trunk/src/interface/fortran_attr/izoom_axis_attr.F90	(revision 784)
@@ -0,0 +1,184 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE izoom_axis_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE izoom_axis
+  USE zoom_axis_interface_attr
+
+CONTAINS
+
+  SUBROUTINE xios(set_zoom_axis_attr)  &
+    ( zoom_axis_id, zoom_begin, zoom_end, zoom_size )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_axis))  :: zoom_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::zoom_axis_id
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_begin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_end
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_size
+
+      CALL xios(get_zoom_axis_handle)(zoom_axis_id,zoom_axis_hdl)
+      CALL xios(set_zoom_axis_attr_hdl_)   &
+      ( zoom_axis_hdl, zoom_begin, zoom_end, zoom_size )
+
+  END SUBROUTINE xios(set_zoom_axis_attr)
+
+  SUBROUTINE xios(set_zoom_axis_attr_hdl)  &
+    ( zoom_axis_hdl, zoom_begin, zoom_end, zoom_size )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_axis)) , INTENT(IN) :: zoom_axis_hdl
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_begin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_end
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_size
+
+      CALL xios(set_zoom_axis_attr_hdl_)  &
+      ( zoom_axis_hdl, zoom_begin, zoom_end, zoom_size )
+
+  END SUBROUTINE xios(set_zoom_axis_attr_hdl)
+
+  SUBROUTINE xios(set_zoom_axis_attr_hdl_)   &
+    ( zoom_axis_hdl, zoom_begin_, zoom_end_, zoom_size_ )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_axis)) , INTENT(IN) :: zoom_axis_hdl
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_begin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_end_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_size_
+
+      IF (PRESENT(zoom_begin_)) THEN
+        CALL cxios_set_zoom_axis_zoom_begin(zoom_axis_hdl%daddr, zoom_begin_)
+      ENDIF
+
+      IF (PRESENT(zoom_end_)) THEN
+        CALL cxios_set_zoom_axis_zoom_end(zoom_axis_hdl%daddr, zoom_end_)
+      ENDIF
+
+      IF (PRESENT(zoom_size_)) THEN
+        CALL cxios_set_zoom_axis_zoom_size(zoom_axis_hdl%daddr, zoom_size_)
+      ENDIF
+
+  END SUBROUTINE xios(set_zoom_axis_attr_hdl_)
+
+  SUBROUTINE xios(get_zoom_axis_attr)  &
+    ( zoom_axis_id, zoom_begin, zoom_end, zoom_size )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_axis))  :: zoom_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::zoom_axis_id
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_begin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_end
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_size
+
+      CALL xios(get_zoom_axis_handle)(zoom_axis_id,zoom_axis_hdl)
+      CALL xios(get_zoom_axis_attr_hdl_)   &
+      ( zoom_axis_hdl, zoom_begin, zoom_end, zoom_size )
+
+  END SUBROUTINE xios(get_zoom_axis_attr)
+
+  SUBROUTINE xios(get_zoom_axis_attr_hdl)  &
+    ( zoom_axis_hdl, zoom_begin, zoom_end, zoom_size )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_axis)) , INTENT(IN) :: zoom_axis_hdl
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_begin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_end
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_size
+
+      CALL xios(get_zoom_axis_attr_hdl_)  &
+      ( zoom_axis_hdl, zoom_begin, zoom_end, zoom_size )
+
+  END SUBROUTINE xios(get_zoom_axis_attr_hdl)
+
+  SUBROUTINE xios(get_zoom_axis_attr_hdl_)   &
+    ( zoom_axis_hdl, zoom_begin_, zoom_end_, zoom_size_ )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_axis)) , INTENT(IN) :: zoom_axis_hdl
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_begin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_end_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_size_
+
+      IF (PRESENT(zoom_begin_)) THEN
+        CALL cxios_get_zoom_axis_zoom_begin(zoom_axis_hdl%daddr, zoom_begin_)
+      ENDIF
+
+      IF (PRESENT(zoom_end_)) THEN
+        CALL cxios_get_zoom_axis_zoom_end(zoom_axis_hdl%daddr, zoom_end_)
+      ENDIF
+
+      IF (PRESENT(zoom_size_)) THEN
+        CALL cxios_get_zoom_axis_zoom_size(zoom_axis_hdl%daddr, zoom_size_)
+      ENDIF
+
+  END SUBROUTINE xios(get_zoom_axis_attr_hdl_)
+
+  SUBROUTINE xios(is_defined_zoom_axis_attr)  &
+    ( zoom_axis_id, zoom_begin, zoom_end, zoom_size )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_axis))  :: zoom_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::zoom_axis_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_begin
+      LOGICAL(KIND=C_BOOL) :: zoom_begin_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_end
+      LOGICAL(KIND=C_BOOL) :: zoom_end_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_size
+      LOGICAL(KIND=C_BOOL) :: zoom_size_tmp
+
+      CALL xios(get_zoom_axis_handle)(zoom_axis_id,zoom_axis_hdl)
+      CALL xios(is_defined_zoom_axis_attr_hdl_)   &
+      ( zoom_axis_hdl, zoom_begin, zoom_end, zoom_size )
+
+  END SUBROUTINE xios(is_defined_zoom_axis_attr)
+
+  SUBROUTINE xios(is_defined_zoom_axis_attr_hdl)  &
+    ( zoom_axis_hdl, zoom_begin, zoom_end, zoom_size )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_axis)) , INTENT(IN) :: zoom_axis_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_begin
+      LOGICAL(KIND=C_BOOL) :: zoom_begin_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_end
+      LOGICAL(KIND=C_BOOL) :: zoom_end_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_size
+      LOGICAL(KIND=C_BOOL) :: zoom_size_tmp
+
+      CALL xios(is_defined_zoom_axis_attr_hdl_)  &
+      ( zoom_axis_hdl, zoom_begin, zoom_end, zoom_size )
+
+  END SUBROUTINE xios(is_defined_zoom_axis_attr_hdl)
+
+  SUBROUTINE xios(is_defined_zoom_axis_attr_hdl_)   &
+    ( zoom_axis_hdl, zoom_begin_, zoom_end_, zoom_size_ )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_axis)) , INTENT(IN) :: zoom_axis_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_begin_
+      LOGICAL(KIND=C_BOOL) :: zoom_begin__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_end_
+      LOGICAL(KIND=C_BOOL) :: zoom_end__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_size_
+      LOGICAL(KIND=C_BOOL) :: zoom_size__tmp
+
+      IF (PRESENT(zoom_begin_)) THEN
+        zoom_begin__tmp = cxios_is_defined_zoom_axis_zoom_begin(zoom_axis_hdl%daddr)
+        zoom_begin_ = zoom_begin__tmp
+      ENDIF
+
+      IF (PRESENT(zoom_end_)) THEN
+        zoom_end__tmp = cxios_is_defined_zoom_axis_zoom_end(zoom_axis_hdl%daddr)
+        zoom_end_ = zoom_end__tmp
+      ENDIF
+
+      IF (PRESENT(zoom_size_)) THEN
+        zoom_size__tmp = cxios_is_defined_zoom_axis_zoom_size(zoom_axis_hdl%daddr)
+        zoom_size_ = zoom_size__tmp
+      ENDIF
+
+  END SUBROUTINE xios(is_defined_zoom_axis_attr_hdl_)
+
+END MODULE izoom_axis_attr
Index: /XIOS/trunk/src/interface/fortran_attr/izoom_domain_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/izoom_domain_attr.F90	(revision 784)
+++ /XIOS/trunk/src/interface/fortran_attr/izoom_domain_attr.F90	(revision 784)
@@ -0,0 +1,209 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE izoom_domain_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE izoom_domain
+  USE zoom_domain_interface_attr
+
+CONTAINS
+
+  SUBROUTINE xios(set_zoom_domain_attr)  &
+    ( zoom_domain_id, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_domain))  :: zoom_domain_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::zoom_domain_id
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj
+
+      CALL xios(get_zoom_domain_handle)(zoom_domain_id,zoom_domain_hdl)
+      CALL xios(set_zoom_domain_attr_hdl_)   &
+      ( zoom_domain_hdl, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj )
+
+  END SUBROUTINE xios(set_zoom_domain_attr)
+
+  SUBROUTINE xios(set_zoom_domain_attr_hdl)  &
+    ( zoom_domain_hdl, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_domain)) , INTENT(IN) :: zoom_domain_hdl
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj
+
+      CALL xios(set_zoom_domain_attr_hdl_)  &
+      ( zoom_domain_hdl, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj )
+
+  END SUBROUTINE xios(set_zoom_domain_attr_hdl)
+
+  SUBROUTINE xios(set_zoom_domain_attr_hdl_)   &
+    ( zoom_domain_hdl, zoom_ibegin_, zoom_jbegin_, zoom_ni_, zoom_nj_ )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_domain)) , INTENT(IN) :: zoom_domain_hdl
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ibegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_jbegin_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_ni_
+      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_
+
+      IF (PRESENT(zoom_ibegin_)) THEN
+        CALL cxios_set_zoom_domain_zoom_ibegin(zoom_domain_hdl%daddr, zoom_ibegin_)
+      ENDIF
+
+      IF (PRESENT(zoom_jbegin_)) THEN
+        CALL cxios_set_zoom_domain_zoom_jbegin(zoom_domain_hdl%daddr, zoom_jbegin_)
+      ENDIF
+
+      IF (PRESENT(zoom_ni_)) THEN
+        CALL cxios_set_zoom_domain_zoom_ni(zoom_domain_hdl%daddr, zoom_ni_)
+      ENDIF
+
+      IF (PRESENT(zoom_nj_)) THEN
+        CALL cxios_set_zoom_domain_zoom_nj(zoom_domain_hdl%daddr, zoom_nj_)
+      ENDIF
+
+  END SUBROUTINE xios(set_zoom_domain_attr_hdl_)
+
+  SUBROUTINE xios(get_zoom_domain_attr)  &
+    ( zoom_domain_id, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_domain))  :: zoom_domain_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::zoom_domain_id
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj
+
+      CALL xios(get_zoom_domain_handle)(zoom_domain_id,zoom_domain_hdl)
+      CALL xios(get_zoom_domain_attr_hdl_)   &
+      ( zoom_domain_hdl, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj )
+
+  END SUBROUTINE xios(get_zoom_domain_attr)
+
+  SUBROUTINE xios(get_zoom_domain_attr_hdl)  &
+    ( zoom_domain_hdl, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_domain)) , INTENT(IN) :: zoom_domain_hdl
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj
+
+      CALL xios(get_zoom_domain_attr_hdl_)  &
+      ( zoom_domain_hdl, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj )
+
+  END SUBROUTINE xios(get_zoom_domain_attr_hdl)
+
+  SUBROUTINE xios(get_zoom_domain_attr_hdl_)   &
+    ( zoom_domain_hdl, zoom_ibegin_, zoom_jbegin_, zoom_ni_, zoom_nj_ )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_domain)) , INTENT(IN) :: zoom_domain_hdl
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ibegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_jbegin_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_ni_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_
+
+      IF (PRESENT(zoom_ibegin_)) THEN
+        CALL cxios_get_zoom_domain_zoom_ibegin(zoom_domain_hdl%daddr, zoom_ibegin_)
+      ENDIF
+
+      IF (PRESENT(zoom_jbegin_)) THEN
+        CALL cxios_get_zoom_domain_zoom_jbegin(zoom_domain_hdl%daddr, zoom_jbegin_)
+      ENDIF
+
+      IF (PRESENT(zoom_ni_)) THEN
+        CALL cxios_get_zoom_domain_zoom_ni(zoom_domain_hdl%daddr, zoom_ni_)
+      ENDIF
+
+      IF (PRESENT(zoom_nj_)) THEN
+        CALL cxios_get_zoom_domain_zoom_nj(zoom_domain_hdl%daddr, zoom_nj_)
+      ENDIF
+
+  END SUBROUTINE xios(get_zoom_domain_attr_hdl_)
+
+  SUBROUTINE xios(is_defined_zoom_domain_attr)  &
+    ( zoom_domain_id, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_domain))  :: zoom_domain_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::zoom_domain_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_ibegin
+      LOGICAL(KIND=C_BOOL) :: zoom_ibegin_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_jbegin
+      LOGICAL(KIND=C_BOOL) :: zoom_jbegin_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_ni
+      LOGICAL(KIND=C_BOOL) :: zoom_ni_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_nj
+      LOGICAL(KIND=C_BOOL) :: zoom_nj_tmp
+
+      CALL xios(get_zoom_domain_handle)(zoom_domain_id,zoom_domain_hdl)
+      CALL xios(is_defined_zoom_domain_attr_hdl_)   &
+      ( zoom_domain_hdl, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj )
+
+  END SUBROUTINE xios(is_defined_zoom_domain_attr)
+
+  SUBROUTINE xios(is_defined_zoom_domain_attr_hdl)  &
+    ( zoom_domain_hdl, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_domain)) , INTENT(IN) :: zoom_domain_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_ibegin
+      LOGICAL(KIND=C_BOOL) :: zoom_ibegin_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_jbegin
+      LOGICAL(KIND=C_BOOL) :: zoom_jbegin_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_ni
+      LOGICAL(KIND=C_BOOL) :: zoom_ni_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_nj
+      LOGICAL(KIND=C_BOOL) :: zoom_nj_tmp
+
+      CALL xios(is_defined_zoom_domain_attr_hdl_)  &
+      ( zoom_domain_hdl, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj )
+
+  END SUBROUTINE xios(is_defined_zoom_domain_attr_hdl)
+
+  SUBROUTINE xios(is_defined_zoom_domain_attr_hdl_)   &
+    ( zoom_domain_hdl, zoom_ibegin_, zoom_jbegin_, zoom_ni_, zoom_nj_ )
+
+    IMPLICIT NONE
+      TYPE(txios(zoom_domain)) , INTENT(IN) :: zoom_domain_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_ibegin_
+      LOGICAL(KIND=C_BOOL) :: zoom_ibegin__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_jbegin_
+      LOGICAL(KIND=C_BOOL) :: zoom_jbegin__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_ni_
+      LOGICAL(KIND=C_BOOL) :: zoom_ni__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_nj_
+      LOGICAL(KIND=C_BOOL) :: zoom_nj__tmp
+
+      IF (PRESENT(zoom_ibegin_)) THEN
+        zoom_ibegin__tmp = cxios_is_defined_zoom_domain_zoom_ibegin(zoom_domain_hdl%daddr)
+        zoom_ibegin_ = zoom_ibegin__tmp
+      ENDIF
+
+      IF (PRESENT(zoom_jbegin_)) THEN
+        zoom_jbegin__tmp = cxios_is_defined_zoom_domain_zoom_jbegin(zoom_domain_hdl%daddr)
+        zoom_jbegin_ = zoom_jbegin__tmp
+      ENDIF
+
+      IF (PRESENT(zoom_ni_)) THEN
+        zoom_ni__tmp = cxios_is_defined_zoom_domain_zoom_ni(zoom_domain_hdl%daddr)
+        zoom_ni_ = zoom_ni__tmp
+      ENDIF
+
+      IF (PRESENT(zoom_nj_)) THEN
+        zoom_nj__tmp = cxios_is_defined_zoom_domain_zoom_nj(zoom_domain_hdl%daddr)
+        zoom_nj_ = zoom_nj__tmp
+      ENDIF
+
+  END SUBROUTINE xios(is_defined_zoom_domain_attr_hdl_)
+
+END MODULE izoom_domain_attr
Index: /XIOS/trunk/src/interface/fortran_attr/zoom_axis_interface_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/zoom_axis_interface_attr.F90	(revision 784)
+++ /XIOS/trunk/src/interface/fortran_attr/zoom_axis_interface_attr.F90	(revision 784)
@@ -0,0 +1,70 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "../fortran/xios_fortran_prefix.hpp"
+
+MODULE zoom_axis_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+
+  INTERFACE
+    ! Do not call directly / interface FORTRAN 2003 <-> C99
+
+    SUBROUTINE cxios_set_zoom_axis_zoom_begin(zoom_axis_hdl, zoom_begin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_axis_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_begin
+    END SUBROUTINE cxios_set_zoom_axis_zoom_begin
+
+    SUBROUTINE cxios_get_zoom_axis_zoom_begin(zoom_axis_hdl, zoom_begin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_axis_hdl
+      INTEGER (KIND=C_INT)             :: zoom_begin
+    END SUBROUTINE cxios_get_zoom_axis_zoom_begin
+
+    FUNCTION cxios_is_defined_zoom_axis_zoom_begin(zoom_axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_zoom_axis_zoom_begin
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_axis_hdl
+    END FUNCTION cxios_is_defined_zoom_axis_zoom_begin
+
+
+    SUBROUTINE cxios_set_zoom_axis_zoom_end(zoom_axis_hdl, zoom_end) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_axis_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_end
+    END SUBROUTINE cxios_set_zoom_axis_zoom_end
+
+    SUBROUTINE cxios_get_zoom_axis_zoom_end(zoom_axis_hdl, zoom_end) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_axis_hdl
+      INTEGER (KIND=C_INT)             :: zoom_end
+    END SUBROUTINE cxios_get_zoom_axis_zoom_end
+
+    FUNCTION cxios_is_defined_zoom_axis_zoom_end(zoom_axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_zoom_axis_zoom_end
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_axis_hdl
+    END FUNCTION cxios_is_defined_zoom_axis_zoom_end
+
+
+    SUBROUTINE cxios_set_zoom_axis_zoom_size(zoom_axis_hdl, zoom_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_axis_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_size
+    END SUBROUTINE cxios_set_zoom_axis_zoom_size
+
+    SUBROUTINE cxios_get_zoom_axis_zoom_size(zoom_axis_hdl, zoom_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_axis_hdl
+      INTEGER (KIND=C_INT)             :: zoom_size
+    END SUBROUTINE cxios_get_zoom_axis_zoom_size
+
+    FUNCTION cxios_is_defined_zoom_axis_zoom_size(zoom_axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_zoom_axis_zoom_size
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_axis_hdl
+    END FUNCTION cxios_is_defined_zoom_axis_zoom_size
+
+  END INTERFACE
+
+END MODULE zoom_axis_interface_attr
Index: /XIOS/trunk/src/interface/fortran_attr/zoom_domain_interface_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/zoom_domain_interface_attr.F90	(revision 784)
+++ /XIOS/trunk/src/interface/fortran_attr/zoom_domain_interface_attr.F90	(revision 784)
@@ -0,0 +1,89 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "../fortran/xios_fortran_prefix.hpp"
+
+MODULE zoom_domain_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+
+  INTERFACE
+    ! Do not call directly / interface FORTRAN 2003 <-> C99
+
+    SUBROUTINE cxios_set_zoom_domain_zoom_ibegin(zoom_domain_hdl, zoom_ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_ibegin
+    END SUBROUTINE cxios_set_zoom_domain_zoom_ibegin
+
+    SUBROUTINE cxios_get_zoom_domain_zoom_ibegin(zoom_domain_hdl, zoom_ibegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_domain_hdl
+      INTEGER (KIND=C_INT)             :: zoom_ibegin
+    END SUBROUTINE cxios_get_zoom_domain_zoom_ibegin
+
+    FUNCTION cxios_is_defined_zoom_domain_zoom_ibegin(zoom_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_zoom_domain_zoom_ibegin
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_domain_hdl
+    END FUNCTION cxios_is_defined_zoom_domain_zoom_ibegin
+
+
+    SUBROUTINE cxios_set_zoom_domain_zoom_jbegin(zoom_domain_hdl, zoom_jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_jbegin
+    END SUBROUTINE cxios_set_zoom_domain_zoom_jbegin
+
+    SUBROUTINE cxios_get_zoom_domain_zoom_jbegin(zoom_domain_hdl, zoom_jbegin) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_domain_hdl
+      INTEGER (KIND=C_INT)             :: zoom_jbegin
+    END SUBROUTINE cxios_get_zoom_domain_zoom_jbegin
+
+    FUNCTION cxios_is_defined_zoom_domain_zoom_jbegin(zoom_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_zoom_domain_zoom_jbegin
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_domain_hdl
+    END FUNCTION cxios_is_defined_zoom_domain_zoom_jbegin
+
+
+    SUBROUTINE cxios_set_zoom_domain_zoom_ni(zoom_domain_hdl, zoom_ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_ni
+    END SUBROUTINE cxios_set_zoom_domain_zoom_ni
+
+    SUBROUTINE cxios_get_zoom_domain_zoom_ni(zoom_domain_hdl, zoom_ni) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_domain_hdl
+      INTEGER (KIND=C_INT)             :: zoom_ni
+    END SUBROUTINE cxios_get_zoom_domain_zoom_ni
+
+    FUNCTION cxios_is_defined_zoom_domain_zoom_ni(zoom_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_zoom_domain_zoom_ni
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_domain_hdl
+    END FUNCTION cxios_is_defined_zoom_domain_zoom_ni
+
+
+    SUBROUTINE cxios_set_zoom_domain_zoom_nj(zoom_domain_hdl, zoom_nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: zoom_nj
+    END SUBROUTINE cxios_set_zoom_domain_zoom_nj
+
+    SUBROUTINE cxios_get_zoom_domain_zoom_nj(zoom_domain_hdl, zoom_nj) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_domain_hdl
+      INTEGER (KIND=C_INT)             :: zoom_nj
+    END SUBROUTINE cxios_get_zoom_domain_zoom_nj
+
+    FUNCTION cxios_is_defined_zoom_domain_zoom_nj(zoom_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_zoom_domain_zoom_nj
+      INTEGER (kind = C_INTPTR_T), VALUE :: zoom_domain_hdl
+    END FUNCTION cxios_is_defined_zoom_domain_zoom_nj
+
+  END INTERFACE
+
+END MODULE zoom_domain_interface_attr
Index: /XIOS/trunk/src/node/axis.cpp
===================================================================
--- /XIOS/trunk/src/node/axis.cpp	(revision 783)
+++ /XIOS/trunk/src/node/axis.cpp	(revision 784)
@@ -912,6 +912,10 @@
       do
       {
+        StdString nodeId("");
+        if (node.getAttributes().end() != node.getAttributes().find("id"))
+        { nodeId = node.getAttributes()["id"]; }
+
         if (node.getElementName() == inverse) {
-          CInverseAxis* tmp = (CInverseAxisGroup::get(inverseAxisDefRoot))->createChild();
+          CInverseAxis* tmp = (CInverseAxisGroup::get(inverseAxisDefRoot))->createChild(nodeId);
           tmp->parse(node);
           transformationMap_.push_back(std::make_pair(TRANS_INVERSE_AXIS,tmp));
@@ -922,5 +926,5 @@
         }
         else if (node.getElementName() == interp) {
-          CInterpolateAxis* tmp = (CInterpolateAxisGroup::get(interpAxisDefRoot))->createChild();
+          CInterpolateAxis* tmp = (CInterpolateAxisGroup::get(interpAxisDefRoot))->createChild(nodeId);
           tmp->parse(node);
           transformationMap_.push_back(std::make_pair(TRANS_INTERPOLATE_AXIS,tmp));
Index: /XIOS/trunk/src/node/domain.cpp
===================================================================
--- /XIOS/trunk/src/node/domain.cpp	(revision 783)
+++ /XIOS/trunk/src/node/domain.cpp	(revision 784)
@@ -1950,6 +1950,10 @@
       do
       {
+        StdString nodeId("");
+        if (node.getAttributes().end() != node.getAttributes().find("id"))
+        { nodeId = node.getAttributes()["id"]; }
+
         if (node.getElementName() == zoom) {
-          CZoomDomain* tmp = (CZoomDomainGroup::get(zoomDomainDefRoot))->createChild();
+          CZoomDomain* tmp = (CZoomDomainGroup::get(zoomDomainDefRoot))->createChild(nodeId);
           tmp->parse(node);
           transformationMap_.push_back(std::make_pair(TRANS_ZOOM_DOMAIN,tmp));
@@ -1957,5 +1961,5 @@
         else if (node.getElementName() == interpFromFile)
         {
-          CInterpolateDomain* tmp = (CInterpolateDomainGroup::get(interpDomainDefRoot))->createChild();
+          CInterpolateDomain* tmp = (CInterpolateDomainGroup::get(interpDomainDefRoot))->createChild(nodeId);
           tmp->parse(node);
           transformationMap_.push_back(std::make_pair(TRANS_INTERPOLATE_DOMAIN,tmp));
@@ -1963,5 +1967,5 @@
         else if (node.getElementName() == generateRectilinear)
         {
-          CGenerateRectilinearDomain* tmp = (CGenerateRectilinearDomainGroup::get(generateRectilinearDefRoot))->createChild();
+          CGenerateRectilinearDomain* tmp = (CGenerateRectilinearDomainGroup::get(generateRectilinearDefRoot))->createChild(nodeId);
           tmp->parse(node);
           transformationMap_.push_back(std::make_pair(TRANS_GENERATE_RECTILINEAR_DOMAIN,tmp));
Index: /XIOS/trunk/src/test/test_complete.f90
===================================================================
--- /XIOS/trunk/src/test/test_complete.f90	(revision 783)
+++ /XIOS/trunk/src/test/test_complete.f90	(revision 784)
@@ -96,5 +96,5 @@
   CALL xios_set_domain_attr("domain_atm_zoom",data_dim=2, data_ibegin=-1, data_ni=ni+2, data_jbegin=-2, data_nj=nj+4)
   CALL xios_set_domain_attr("domain_atm_zoom",lonvalue_2D=lon,latvalue_2D=lat)
-!  CALL xios_set_domain_attr("domain_atm_zoom",zoom_ibegin=39, zoom_ni=20, zoom_jbegin=39, zoom_nj=5)
+  CALL xios_set_zoom_domain_attr("domain_atm_zoom",zoom_ibegin=39, zoom_ni=20, zoom_jbegin=39, zoom_nj=5)
 
 !!! Activation du groupe field_definition
