Index: XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp	(revision 802)
+++ XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp	(revision 817)
@@ -163,4 +163,29 @@
 
 
+  void cxios_set_axis_index(axis_Ptr axis_hdl, int* index, int* extent)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<int,1> tmp(index, shape(extent[0]), neverDeleteData);
+    axis_hdl->index.reference(tmp.copy());
+     CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axis_index(axis_Ptr axis_hdl, int* index, int* extent)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<int,1> tmp(index, shape(extent[0]), neverDeleteData);
+    tmp=axis_hdl->index.getInheritedValue();
+     CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axis_index(axis_Ptr axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axis_hdl->index.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_axis_long_name(axis_Ptr axis_hdl, const char * long_name, int long_name_size)
   {
Index: XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp	(revision 802)
+++ XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp	(revision 817)
@@ -189,4 +189,29 @@
 
 
+  void cxios_set_axisgroup_index(axisgroup_Ptr axisgroup_hdl, int* index, int* extent)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<int,1> tmp(index, shape(extent[0]), neverDeleteData);
+    axisgroup_hdl->index.reference(tmp.copy());
+     CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axisgroup_index(axisgroup_Ptr axisgroup_hdl, int* index, int* extent)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<int,1> tmp(index, shape(extent[0]), neverDeleteData);
+    tmp=axisgroup_hdl->index.getInheritedValue();
+     CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axisgroup_index(axisgroup_Ptr axisgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axisgroup_hdl->index.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_axisgroup_long_name(axisgroup_Ptr axisgroup_hdl, const char * long_name, int long_name_size)
   {
Index: XIOS/trunk/src/interface/c_attr/icgrid_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icgrid_attr.cpp	(revision 802)
+++ XIOS/trunk/src/interface/c_attr/icgrid_attr.cpp	(revision 817)
@@ -44,24 +44,24 @@
 
 
-  void cxios_set_grid_mask1(grid_Ptr grid_hdl, bool* mask1, int* extent)
+  void cxios_set_grid_mask_1d(grid_Ptr grid_hdl, bool* mask_1d, int* extent)
   {
     CTimer::get("XIOS").resume();
-    CArray<bool,1> tmp(mask1, shape(extent[0]), neverDeleteData);
-    grid_hdl->mask1.reference(tmp.copy());
+    CArray<bool,1> tmp(mask_1d, shape(extent[0]), neverDeleteData);
+    grid_hdl->mask_1d.reference(tmp.copy());
      CTimer::get("XIOS").suspend();
   }
 
-  void cxios_get_grid_mask1(grid_Ptr grid_hdl, bool* mask1, int* extent)
+  void cxios_get_grid_mask_1d(grid_Ptr grid_hdl, bool* mask_1d, int* extent)
   {
     CTimer::get("XIOS").resume();
-    CArray<bool,1> tmp(mask1, shape(extent[0]), neverDeleteData);
-    tmp=grid_hdl->mask1.getInheritedValue();
+    CArray<bool,1> tmp(mask_1d, shape(extent[0]), neverDeleteData);
+    tmp=grid_hdl->mask_1d.getInheritedValue();
      CTimer::get("XIOS").suspend();
   }
 
-  bool cxios_is_defined_grid_mask1(grid_Ptr grid_hdl)
+  bool cxios_is_defined_grid_mask_1d(grid_Ptr grid_hdl)
   {
      CTimer::get("XIOS").resume();
-     bool isDefined = grid_hdl->mask1.hasInheritedValue();
+     bool isDefined = grid_hdl->mask_1d.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
@@ -69,24 +69,24 @@
 
 
-  void cxios_set_grid_mask2(grid_Ptr grid_hdl, bool* mask2, int* extent)
+  void cxios_set_grid_mask_2d(grid_Ptr grid_hdl, bool* mask_2d, int* extent)
   {
     CTimer::get("XIOS").resume();
-    CArray<bool,2> tmp(mask2, shape(extent[0], extent[1]), neverDeleteData);
-    grid_hdl->mask2.reference(tmp.copy());
+    CArray<bool,2> tmp(mask_2d, shape(extent[0], extent[1]), neverDeleteData);
+    grid_hdl->mask_2d.reference(tmp.copy());
      CTimer::get("XIOS").suspend();
   }
 
-  void cxios_get_grid_mask2(grid_Ptr grid_hdl, bool* mask2, int* extent)
+  void cxios_get_grid_mask_2d(grid_Ptr grid_hdl, bool* mask_2d, int* extent)
   {
     CTimer::get("XIOS").resume();
-    CArray<bool,2> tmp(mask2, shape(extent[0], extent[1]), neverDeleteData);
-    tmp=grid_hdl->mask2.getInheritedValue();
+    CArray<bool,2> tmp(mask_2d, shape(extent[0], extent[1]), neverDeleteData);
+    tmp=grid_hdl->mask_2d.getInheritedValue();
      CTimer::get("XIOS").suspend();
   }
 
-  bool cxios_is_defined_grid_mask2(grid_Ptr grid_hdl)
+  bool cxios_is_defined_grid_mask_2d(grid_Ptr grid_hdl)
   {
      CTimer::get("XIOS").resume();
-     bool isDefined = grid_hdl->mask2.hasInheritedValue();
+     bool isDefined = grid_hdl->mask_2d.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
@@ -94,24 +94,24 @@
 
 
-  void cxios_set_grid_mask3(grid_Ptr grid_hdl, bool* mask3, int* extent)
+  void cxios_set_grid_mask_3d(grid_Ptr grid_hdl, bool* mask_3d, int* extent)
   {
     CTimer::get("XIOS").resume();
-    CArray<bool,3> tmp(mask3, shape(extent[0], extent[1], extent[2]), neverDeleteData);
-    grid_hdl->mask3.reference(tmp.copy());
+    CArray<bool,3> tmp(mask_3d, shape(extent[0], extent[1], extent[2]), neverDeleteData);
+    grid_hdl->mask_3d.reference(tmp.copy());
      CTimer::get("XIOS").suspend();
   }
 
-  void cxios_get_grid_mask3(grid_Ptr grid_hdl, bool* mask3, int* extent)
+  void cxios_get_grid_mask_3d(grid_Ptr grid_hdl, bool* mask_3d, int* extent)
   {
     CTimer::get("XIOS").resume();
-    CArray<bool,3> tmp(mask3, shape(extent[0], extent[1], extent[2]), neverDeleteData);
-    tmp=grid_hdl->mask3.getInheritedValue();
+    CArray<bool,3> tmp(mask_3d, shape(extent[0], extent[1], extent[2]), neverDeleteData);
+    tmp=grid_hdl->mask_3d.getInheritedValue();
      CTimer::get("XIOS").suspend();
   }
 
-  bool cxios_is_defined_grid_mask3(grid_Ptr grid_hdl)
+  bool cxios_is_defined_grid_mask_3d(grid_Ptr grid_hdl)
   {
      CTimer::get("XIOS").resume();
-     bool isDefined = grid_hdl->mask3.hasInheritedValue();
+     bool isDefined = grid_hdl->mask_3d.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
Index: XIOS/trunk/src/interface/c_attr/icgridgroup_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icgridgroup_attr.cpp	(revision 802)
+++ XIOS/trunk/src/interface/c_attr/icgridgroup_attr.cpp	(revision 817)
@@ -70,24 +70,24 @@
 
 
-  void cxios_set_gridgroup_mask1(gridgroup_Ptr gridgroup_hdl, bool* mask1, int* extent)
+  void cxios_set_gridgroup_mask_1d(gridgroup_Ptr gridgroup_hdl, bool* mask_1d, int* extent)
   {
     CTimer::get("XIOS").resume();
-    CArray<bool,1> tmp(mask1, shape(extent[0]), neverDeleteData);
-    gridgroup_hdl->mask1.reference(tmp.copy());
+    CArray<bool,1> tmp(mask_1d, shape(extent[0]), neverDeleteData);
+    gridgroup_hdl->mask_1d.reference(tmp.copy());
      CTimer::get("XIOS").suspend();
   }
 
-  void cxios_get_gridgroup_mask1(gridgroup_Ptr gridgroup_hdl, bool* mask1, int* extent)
+  void cxios_get_gridgroup_mask_1d(gridgroup_Ptr gridgroup_hdl, bool* mask_1d, int* extent)
   {
     CTimer::get("XIOS").resume();
-    CArray<bool,1> tmp(mask1, shape(extent[0]), neverDeleteData);
-    tmp=gridgroup_hdl->mask1.getInheritedValue();
+    CArray<bool,1> tmp(mask_1d, shape(extent[0]), neverDeleteData);
+    tmp=gridgroup_hdl->mask_1d.getInheritedValue();
      CTimer::get("XIOS").suspend();
   }
 
-  bool cxios_is_defined_gridgroup_mask1(gridgroup_Ptr gridgroup_hdl)
+  bool cxios_is_defined_gridgroup_mask_1d(gridgroup_Ptr gridgroup_hdl)
   {
      CTimer::get("XIOS").resume();
-     bool isDefined = gridgroup_hdl->mask1.hasInheritedValue();
+     bool isDefined = gridgroup_hdl->mask_1d.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
@@ -95,24 +95,24 @@
 
 
-  void cxios_set_gridgroup_mask2(gridgroup_Ptr gridgroup_hdl, bool* mask2, int* extent)
+  void cxios_set_gridgroup_mask_2d(gridgroup_Ptr gridgroup_hdl, bool* mask_2d, int* extent)
   {
     CTimer::get("XIOS").resume();
-    CArray<bool,2> tmp(mask2, shape(extent[0], extent[1]), neverDeleteData);
-    gridgroup_hdl->mask2.reference(tmp.copy());
+    CArray<bool,2> tmp(mask_2d, shape(extent[0], extent[1]), neverDeleteData);
+    gridgroup_hdl->mask_2d.reference(tmp.copy());
      CTimer::get("XIOS").suspend();
   }
 
-  void cxios_get_gridgroup_mask2(gridgroup_Ptr gridgroup_hdl, bool* mask2, int* extent)
+  void cxios_get_gridgroup_mask_2d(gridgroup_Ptr gridgroup_hdl, bool* mask_2d, int* extent)
   {
     CTimer::get("XIOS").resume();
-    CArray<bool,2> tmp(mask2, shape(extent[0], extent[1]), neverDeleteData);
-    tmp=gridgroup_hdl->mask2.getInheritedValue();
+    CArray<bool,2> tmp(mask_2d, shape(extent[0], extent[1]), neverDeleteData);
+    tmp=gridgroup_hdl->mask_2d.getInheritedValue();
      CTimer::get("XIOS").suspend();
   }
 
-  bool cxios_is_defined_gridgroup_mask2(gridgroup_Ptr gridgroup_hdl)
+  bool cxios_is_defined_gridgroup_mask_2d(gridgroup_Ptr gridgroup_hdl)
   {
      CTimer::get("XIOS").resume();
-     bool isDefined = gridgroup_hdl->mask2.hasInheritedValue();
+     bool isDefined = gridgroup_hdl->mask_2d.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
@@ -120,24 +120,24 @@
 
 
-  void cxios_set_gridgroup_mask3(gridgroup_Ptr gridgroup_hdl, bool* mask3, int* extent)
+  void cxios_set_gridgroup_mask_3d(gridgroup_Ptr gridgroup_hdl, bool* mask_3d, int* extent)
   {
     CTimer::get("XIOS").resume();
-    CArray<bool,3> tmp(mask3, shape(extent[0], extent[1], extent[2]), neverDeleteData);
-    gridgroup_hdl->mask3.reference(tmp.copy());
+    CArray<bool,3> tmp(mask_3d, shape(extent[0], extent[1], extent[2]), neverDeleteData);
+    gridgroup_hdl->mask_3d.reference(tmp.copy());
      CTimer::get("XIOS").suspend();
   }
 
-  void cxios_get_gridgroup_mask3(gridgroup_Ptr gridgroup_hdl, bool* mask3, int* extent)
+  void cxios_get_gridgroup_mask_3d(gridgroup_Ptr gridgroup_hdl, bool* mask_3d, int* extent)
   {
     CTimer::get("XIOS").resume();
-    CArray<bool,3> tmp(mask3, shape(extent[0], extent[1], extent[2]), neverDeleteData);
-    tmp=gridgroup_hdl->mask3.getInheritedValue();
+    CArray<bool,3> tmp(mask_3d, shape(extent[0], extent[1], extent[2]), neverDeleteData);
+    tmp=gridgroup_hdl->mask_3d.getInheritedValue();
      CTimer::get("XIOS").suspend();
   }
 
-  bool cxios_is_defined_gridgroup_mask3(gridgroup_Ptr gridgroup_hdl)
+  bool cxios_is_defined_gridgroup_mask_3d(gridgroup_Ptr gridgroup_hdl)
   {
      CTimer::get("XIOS").resume();
-     bool isDefined = gridgroup_hdl->mask3.hasInheritedValue();
+     bool isDefined = gridgroup_hdl->mask_3d.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
Index: XIOS/trunk/src/interface/fortran_attr/axis_interface_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/axis_interface_attr.F90	(revision 802)
+++ XIOS/trunk/src/interface/fortran_attr/axis_interface_attr.F90	(revision 817)
@@ -130,4 +130,25 @@
 
 
+    SUBROUTINE cxios_set_axis_index(axis_hdl, index, extent) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: axis_hdl
+      INTEGER (KIND=C_INT)     , DIMENSION(*) :: index
+      INTEGER (kind = C_INT), DIMENSION(*)     :: extent
+    END SUBROUTINE cxios_set_axis_index
+
+    SUBROUTINE cxios_get_axis_index(axis_hdl, index, extent) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: axis_hdl
+      INTEGER (KIND=C_INT)     , DIMENSION(*) :: index
+      INTEGER (kind = C_INT), DIMENSION(*)     :: extent
+    END SUBROUTINE cxios_get_axis_index
+
+    FUNCTION cxios_is_defined_axis_index(axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axis_index
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+    END FUNCTION cxios_is_defined_axis_index
+
+
     SUBROUTINE cxios_set_axis_long_name(axis_hdl, long_name, long_name_size) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/trunk/src/interface/fortran_attr/axisgroup_interface_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/axisgroup_interface_attr.F90	(revision 802)
+++ XIOS/trunk/src/interface/fortran_attr/axisgroup_interface_attr.F90	(revision 817)
@@ -151,4 +151,25 @@
 
 
+    SUBROUTINE cxios_set_axisgroup_index(axisgroup_hdl, index, extent) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: axisgroup_hdl
+      INTEGER (KIND=C_INT)     , DIMENSION(*) :: index
+      INTEGER (kind = C_INT), DIMENSION(*)     :: extent
+    END SUBROUTINE cxios_set_axisgroup_index
+
+    SUBROUTINE cxios_get_axisgroup_index(axisgroup_hdl, index, extent) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: axisgroup_hdl
+      INTEGER (KIND=C_INT)     , DIMENSION(*) :: index
+      INTEGER (kind = C_INT), DIMENSION(*)     :: extent
+    END SUBROUTINE cxios_get_axisgroup_index
+
+    FUNCTION cxios_is_defined_axisgroup_index(axisgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axisgroup_index
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+    END FUNCTION cxios_is_defined_axisgroup_index
+
+
     SUBROUTINE cxios_set_axisgroup_long_name(axisgroup_hdl, long_name, long_name_size) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/trunk/src/interface/fortran_attr/grid_interface_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/grid_interface_attr.F90	(revision 802)
+++ XIOS/trunk/src/interface/fortran_attr/grid_interface_attr.F90	(revision 817)
@@ -31,65 +31,65 @@
 
 
-    SUBROUTINE cxios_set_grid_mask1(grid_hdl, mask1, extent) BIND(C)
+    SUBROUTINE cxios_set_grid_mask_1d(grid_hdl, mask_1d, extent) BIND(C)
       USE ISO_C_BINDING
       INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl
-      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask1
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_1d
       INTEGER (kind = C_INT), DIMENSION(*)     :: extent
-    END SUBROUTINE cxios_set_grid_mask1
+    END SUBROUTINE cxios_set_grid_mask_1d
 
-    SUBROUTINE cxios_get_grid_mask1(grid_hdl, mask1, extent) BIND(C)
+    SUBROUTINE cxios_get_grid_mask_1d(grid_hdl, mask_1d, extent) BIND(C)
       USE ISO_C_BINDING
       INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl
-      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask1
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_1d
       INTEGER (kind = C_INT), DIMENSION(*)     :: extent
-    END SUBROUTINE cxios_get_grid_mask1
+    END SUBROUTINE cxios_get_grid_mask_1d
 
-    FUNCTION cxios_is_defined_grid_mask1(grid_hdl) BIND(C)
+    FUNCTION cxios_is_defined_grid_mask_1d(grid_hdl) BIND(C)
       USE ISO_C_BINDING
-      LOGICAL(kind=C_BOOL) :: cxios_is_defined_grid_mask1
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_grid_mask_1d
       INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
-    END FUNCTION cxios_is_defined_grid_mask1
+    END FUNCTION cxios_is_defined_grid_mask_1d
 
 
-    SUBROUTINE cxios_set_grid_mask2(grid_hdl, mask2, extent) BIND(C)
+    SUBROUTINE cxios_set_grid_mask_2d(grid_hdl, mask_2d, extent) BIND(C)
       USE ISO_C_BINDING
       INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl
-      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask2
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_2d
       INTEGER (kind = C_INT), DIMENSION(*)     :: extent
-    END SUBROUTINE cxios_set_grid_mask2
+    END SUBROUTINE cxios_set_grid_mask_2d
 
-    SUBROUTINE cxios_get_grid_mask2(grid_hdl, mask2, extent) BIND(C)
+    SUBROUTINE cxios_get_grid_mask_2d(grid_hdl, mask_2d, extent) BIND(C)
       USE ISO_C_BINDING
       INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl
-      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask2
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_2d
       INTEGER (kind = C_INT), DIMENSION(*)     :: extent
-    END SUBROUTINE cxios_get_grid_mask2
+    END SUBROUTINE cxios_get_grid_mask_2d
 
-    FUNCTION cxios_is_defined_grid_mask2(grid_hdl) BIND(C)
+    FUNCTION cxios_is_defined_grid_mask_2d(grid_hdl) BIND(C)
       USE ISO_C_BINDING
-      LOGICAL(kind=C_BOOL) :: cxios_is_defined_grid_mask2
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_grid_mask_2d
       INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
-    END FUNCTION cxios_is_defined_grid_mask2
+    END FUNCTION cxios_is_defined_grid_mask_2d
 
 
-    SUBROUTINE cxios_set_grid_mask3(grid_hdl, mask3, extent) BIND(C)
+    SUBROUTINE cxios_set_grid_mask_3d(grid_hdl, mask_3d, extent) BIND(C)
       USE ISO_C_BINDING
       INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl
-      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask3
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_3d
       INTEGER (kind = C_INT), DIMENSION(*)     :: extent
-    END SUBROUTINE cxios_set_grid_mask3
+    END SUBROUTINE cxios_set_grid_mask_3d
 
-    SUBROUTINE cxios_get_grid_mask3(grid_hdl, mask3, extent) BIND(C)
+    SUBROUTINE cxios_get_grid_mask_3d(grid_hdl, mask_3d, extent) BIND(C)
       USE ISO_C_BINDING
       INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl
-      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask3
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_3d
       INTEGER (kind = C_INT), DIMENSION(*)     :: extent
-    END SUBROUTINE cxios_get_grid_mask3
+    END SUBROUTINE cxios_get_grid_mask_3d
 
-    FUNCTION cxios_is_defined_grid_mask3(grid_hdl) BIND(C)
+    FUNCTION cxios_is_defined_grid_mask_3d(grid_hdl) BIND(C)
       USE ISO_C_BINDING
-      LOGICAL(kind=C_BOOL) :: cxios_is_defined_grid_mask3
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_grid_mask_3d
       INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
-    END FUNCTION cxios_is_defined_grid_mask3
+    END FUNCTION cxios_is_defined_grid_mask_3d
 
 
Index: XIOS/trunk/src/interface/fortran_attr/gridgroup_interface_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/gridgroup_interface_attr.F90	(revision 802)
+++ XIOS/trunk/src/interface/fortran_attr/gridgroup_interface_attr.F90	(revision 817)
@@ -52,65 +52,65 @@
 
 
-    SUBROUTINE cxios_set_gridgroup_mask1(gridgroup_hdl, mask1, extent) BIND(C)
+    SUBROUTINE cxios_set_gridgroup_mask_1d(gridgroup_hdl, mask_1d, extent) BIND(C)
       USE ISO_C_BINDING
       INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl
-      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask1
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_1d
       INTEGER (kind = C_INT), DIMENSION(*)     :: extent
-    END SUBROUTINE cxios_set_gridgroup_mask1
+    END SUBROUTINE cxios_set_gridgroup_mask_1d
 
-    SUBROUTINE cxios_get_gridgroup_mask1(gridgroup_hdl, mask1, extent) BIND(C)
+    SUBROUTINE cxios_get_gridgroup_mask_1d(gridgroup_hdl, mask_1d, extent) BIND(C)
       USE ISO_C_BINDING
       INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl
-      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask1
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_1d
       INTEGER (kind = C_INT), DIMENSION(*)     :: extent
-    END SUBROUTINE cxios_get_gridgroup_mask1
+    END SUBROUTINE cxios_get_gridgroup_mask_1d
 
-    FUNCTION cxios_is_defined_gridgroup_mask1(gridgroup_hdl) BIND(C)
+    FUNCTION cxios_is_defined_gridgroup_mask_1d(gridgroup_hdl) BIND(C)
       USE ISO_C_BINDING
-      LOGICAL(kind=C_BOOL) :: cxios_is_defined_gridgroup_mask1
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_gridgroup_mask_1d
       INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
-    END FUNCTION cxios_is_defined_gridgroup_mask1
+    END FUNCTION cxios_is_defined_gridgroup_mask_1d
 
 
-    SUBROUTINE cxios_set_gridgroup_mask2(gridgroup_hdl, mask2, extent) BIND(C)
+    SUBROUTINE cxios_set_gridgroup_mask_2d(gridgroup_hdl, mask_2d, extent) BIND(C)
       USE ISO_C_BINDING
       INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl
-      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask2
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_2d
       INTEGER (kind = C_INT), DIMENSION(*)     :: extent
-    END SUBROUTINE cxios_set_gridgroup_mask2
+    END SUBROUTINE cxios_set_gridgroup_mask_2d
 
-    SUBROUTINE cxios_get_gridgroup_mask2(gridgroup_hdl, mask2, extent) BIND(C)
+    SUBROUTINE cxios_get_gridgroup_mask_2d(gridgroup_hdl, mask_2d, extent) BIND(C)
       USE ISO_C_BINDING
       INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl
-      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask2
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_2d
       INTEGER (kind = C_INT), DIMENSION(*)     :: extent
-    END SUBROUTINE cxios_get_gridgroup_mask2
+    END SUBROUTINE cxios_get_gridgroup_mask_2d
 
-    FUNCTION cxios_is_defined_gridgroup_mask2(gridgroup_hdl) BIND(C)
+    FUNCTION cxios_is_defined_gridgroup_mask_2d(gridgroup_hdl) BIND(C)
       USE ISO_C_BINDING
-      LOGICAL(kind=C_BOOL) :: cxios_is_defined_gridgroup_mask2
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_gridgroup_mask_2d
       INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
-    END FUNCTION cxios_is_defined_gridgroup_mask2
+    END FUNCTION cxios_is_defined_gridgroup_mask_2d
 
 
-    SUBROUTINE cxios_set_gridgroup_mask3(gridgroup_hdl, mask3, extent) BIND(C)
+    SUBROUTINE cxios_set_gridgroup_mask_3d(gridgroup_hdl, mask_3d, extent) BIND(C)
       USE ISO_C_BINDING
       INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl
-      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask3
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_3d
       INTEGER (kind = C_INT), DIMENSION(*)     :: extent
-    END SUBROUTINE cxios_set_gridgroup_mask3
+    END SUBROUTINE cxios_set_gridgroup_mask_3d
 
-    SUBROUTINE cxios_get_gridgroup_mask3(gridgroup_hdl, mask3, extent) BIND(C)
+    SUBROUTINE cxios_get_gridgroup_mask_3d(gridgroup_hdl, mask_3d, extent) BIND(C)
       USE ISO_C_BINDING
       INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl
-      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask3
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_3d
       INTEGER (kind = C_INT), DIMENSION(*)     :: extent
-    END SUBROUTINE cxios_get_gridgroup_mask3
+    END SUBROUTINE cxios_get_gridgroup_mask_3d
 
-    FUNCTION cxios_is_defined_gridgroup_mask3(gridgroup_hdl) BIND(C)
+    FUNCTION cxios_is_defined_gridgroup_mask_3d(gridgroup_hdl) BIND(C)
       USE ISO_C_BINDING
-      LOGICAL(kind=C_BOOL) :: cxios_is_defined_gridgroup_mask3
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_gridgroup_mask_3d
       INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
-    END FUNCTION cxios_is_defined_gridgroup_mask3
+    END FUNCTION cxios_is_defined_gridgroup_mask_3d
 
 
Index: XIOS/trunk/src/interface/fortran_attr/iaxis_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/iaxis_attr.F90	(revision 802)
+++ XIOS/trunk/src/interface/fortran_attr/iaxis_attr.F90	(revision 817)
@@ -12,6 +12,6 @@
 
   SUBROUTINE xios(set_axis_attr)  &
-    ( axis_id, axis_ref, begin, bounds, data_begin, data_index, data_n, long_name, mask, n, n_distributed_partition  &
-    , n_glo, name, positive, standard_name, unit, value )
+    ( axis_id, axis_ref, begin, bounds, data_begin, data_index, data_n, index, long_name, mask, n  &
+    , n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
     IMPLICIT NONE
@@ -24,4 +24,5 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_n
+      INTEGER  , OPTIONAL, INTENT(IN) :: index(:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:)
@@ -38,12 +39,12 @@
       CALL xios(get_axis_handle)(axis_id,axis_hdl)
       CALL xios(set_axis_attr_hdl_)   &
-      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, long_name, mask, n, n_distributed_partition  &
-      , n_glo, name, positive, standard_name, unit, value )
+      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, long_name, mask  &
+      , n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
   END SUBROUTINE xios(set_axis_attr)
 
   SUBROUTINE xios(set_axis_attr_hdl)  &
-    ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, long_name, mask, n, n_distributed_partition  &
-    , n_glo, name, positive, standard_name, unit, value )
+    ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, long_name, mask  &
+    , n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
     IMPLICIT NONE
@@ -55,4 +56,5 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_n
+      INTEGER  , OPTIONAL, INTENT(IN) :: index(:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:)
@@ -68,12 +70,13 @@
 
       CALL xios(set_axis_attr_hdl_)  &
-      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, long_name, mask, n, n_distributed_partition  &
-      , n_glo, name, positive, standard_name, unit, value )
+      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, long_name, mask  &
+      , n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
   END SUBROUTINE xios(set_axis_attr_hdl)
 
   SUBROUTINE xios(set_axis_attr_hdl_)   &
-    ( axis_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, long_name_, mask_  &
-    , n_, n_distributed_partition_, n_glo_, name_, positive_, standard_name_, unit_, value_ )
+    ( axis_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, index_, long_name_  &
+    , mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, standard_name_, unit_, value_  &
+     )
 
     IMPLICIT NONE
@@ -85,4 +88,5 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index_(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_n_
+      INTEGER  , OPTIONAL, INTENT(IN) :: index_(:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
       LOGICAL  , OPTIONAL, INTENT(IN) :: mask_(:)
@@ -121,4 +125,8 @@
       ENDIF
 
+      IF (PRESENT(index_)) THEN
+        CALL cxios_set_axis_index(axis_hdl%daddr, index_, SHAPE(index_))
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         CALL cxios_set_axis_long_name(axis_hdl%daddr, long_name_, len(long_name_))
@@ -166,6 +174,6 @@
 
   SUBROUTINE xios(get_axis_attr)  &
-    ( axis_id, axis_ref, begin, bounds, data_begin, data_index, data_n, long_name, mask, n, n_distributed_partition  &
-    , n_glo, name, positive, standard_name, unit, value )
+    ( axis_id, axis_ref, begin, bounds, data_begin, data_index, data_n, index, long_name, mask, n  &
+    , n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
     IMPLICIT NONE
@@ -178,4 +186,5 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_n
+      INTEGER  , OPTIONAL, INTENT(OUT) :: index(:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:)
@@ -192,12 +201,12 @@
       CALL xios(get_axis_handle)(axis_id,axis_hdl)
       CALL xios(get_axis_attr_hdl_)   &
-      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, long_name, mask, n, n_distributed_partition  &
-      , n_glo, name, positive, standard_name, unit, value )
+      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, long_name, mask  &
+      , n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
   END SUBROUTINE xios(get_axis_attr)
 
   SUBROUTINE xios(get_axis_attr_hdl)  &
-    ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, long_name, mask, n, n_distributed_partition  &
-    , n_glo, name, positive, standard_name, unit, value )
+    ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, long_name, mask  &
+    , n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
     IMPLICIT NONE
@@ -209,4 +218,5 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_n
+      INTEGER  , OPTIONAL, INTENT(OUT) :: index(:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:)
@@ -222,12 +232,13 @@
 
       CALL xios(get_axis_attr_hdl_)  &
-      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, long_name, mask, n, n_distributed_partition  &
-      , n_glo, name, positive, standard_name, unit, value )
+      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, long_name, mask  &
+      , n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
   END SUBROUTINE xios(get_axis_attr_hdl)
 
   SUBROUTINE xios(get_axis_attr_hdl_)   &
-    ( axis_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, long_name_, mask_  &
-    , n_, n_distributed_partition_, n_glo_, name_, positive_, standard_name_, unit_, value_ )
+    ( axis_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, index_, long_name_  &
+    , mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, standard_name_, unit_, value_  &
+     )
 
     IMPLICIT NONE
@@ -239,4 +250,5 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index_(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_n_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: index_(:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_(:)
@@ -275,4 +287,8 @@
       ENDIF
 
+      IF (PRESENT(index_)) THEN
+        CALL cxios_get_axis_index(axis_hdl%daddr, index_, SHAPE(index_))
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         CALL cxios_get_axis_long_name(axis_hdl%daddr, long_name_, len(long_name_))
@@ -320,6 +336,6 @@
 
   SUBROUTINE xios(is_defined_axis_attr)  &
-    ( axis_id, axis_ref, begin, bounds, data_begin, data_index, data_n, long_name, mask, n, n_distributed_partition  &
-    , n_glo, name, positive, standard_name, unit, value )
+    ( axis_id, axis_ref, begin, bounds, data_begin, data_index, data_n, index, long_name, mask, n  &
+    , n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
     IMPLICIT NONE
@@ -338,4 +354,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_n
       LOGICAL(KIND=C_BOOL) :: data_n_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: index
+      LOGICAL(KIND=C_BOOL) :: index_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
@@ -361,12 +379,12 @@
       CALL xios(get_axis_handle)(axis_id,axis_hdl)
       CALL xios(is_defined_axis_attr_hdl_)   &
-      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, long_name, mask, n, n_distributed_partition  &
-      , n_glo, name, positive, standard_name, unit, value )
+      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, long_name, mask  &
+      , n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
   END SUBROUTINE xios(is_defined_axis_attr)
 
   SUBROUTINE xios(is_defined_axis_attr_hdl)  &
-    ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, long_name, mask, n, n_distributed_partition  &
-    , n_glo, name, positive, standard_name, unit, value )
+    ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, long_name, mask  &
+    , n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
     IMPLICIT NONE
@@ -384,4 +402,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_n
       LOGICAL(KIND=C_BOOL) :: data_n_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: index
+      LOGICAL(KIND=C_BOOL) :: index_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
@@ -406,12 +426,13 @@
 
       CALL xios(is_defined_axis_attr_hdl_)  &
-      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, long_name, mask, n, n_distributed_partition  &
-      , n_glo, name, positive, standard_name, unit, value )
+      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, long_name, mask  &
+      , n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
   END SUBROUTINE xios(is_defined_axis_attr_hdl)
 
   SUBROUTINE xios(is_defined_axis_attr_hdl_)   &
-    ( axis_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, long_name_, mask_  &
-    , n_, n_distributed_partition_, n_glo_, name_, positive_, standard_name_, unit_, value_ )
+    ( axis_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, index_, long_name_  &
+    , mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, standard_name_, unit_, value_  &
+     )
 
     IMPLICIT NONE
@@ -429,4 +450,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_n_
       LOGICAL(KIND=C_BOOL) :: data_n__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: index_
+      LOGICAL(KIND=C_BOOL) :: index__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name_
       LOGICAL(KIND=C_BOOL) :: long_name__tmp
@@ -480,4 +503,9 @@
       ENDIF
 
+      IF (PRESENT(index_)) THEN
+        index__tmp = cxios_is_defined_axis_index(axis_hdl%daddr)
+        index_ = index__tmp
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         long_name__tmp = cxios_is_defined_axis_long_name(axis_hdl%daddr)
Index: XIOS/trunk/src/interface/fortran_attr/iaxisgroup_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/iaxisgroup_attr.F90	(revision 802)
+++ XIOS/trunk/src/interface/fortran_attr/iaxisgroup_attr.F90	(revision 817)
@@ -12,5 +12,5 @@
 
   SUBROUTINE xios(set_axisgroup_attr)  &
-    ( axisgroup_id, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, long_name  &
+    ( axisgroup_id, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, long_name  &
     , mask, n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
@@ -25,4 +25,5 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: data_n
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      INTEGER  , OPTIONAL, INTENT(IN) :: index(:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:)
@@ -39,5 +40,5 @@
       CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl)
       CALL xios(set_axisgroup_attr_hdl_)   &
-      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, long_name  &
+      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, long_name  &
       , mask, n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
@@ -45,5 +46,5 @@
 
   SUBROUTINE xios(set_axisgroup_attr_hdl)  &
-    ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, long_name  &
+    ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, long_name  &
     , mask, n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
@@ -57,4 +58,5 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: data_n
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      INTEGER  , OPTIONAL, INTENT(IN) :: index(:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:)
@@ -70,5 +72,5 @@
 
       CALL xios(set_axisgroup_attr_hdl_)  &
-      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, long_name  &
+      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, long_name  &
       , mask, n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
@@ -76,7 +78,7 @@
 
   SUBROUTINE xios(set_axisgroup_attr_hdl_)   &
-    ( axisgroup_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, group_ref_, long_name_  &
-    , mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, standard_name_, unit_, value_  &
-     )
+    ( axisgroup_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, group_ref_, index_  &
+    , long_name_, mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, standard_name_  &
+    , unit_, value_ )
 
     IMPLICIT NONE
@@ -89,4 +91,5 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: data_n_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_
+      INTEGER  , OPTIONAL, INTENT(IN) :: index_(:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
       LOGICAL  , OPTIONAL, INTENT(IN) :: mask_(:)
@@ -129,4 +132,8 @@
       ENDIF
 
+      IF (PRESENT(index_)) THEN
+        CALL cxios_set_axisgroup_index(axisgroup_hdl%daddr, index_, SHAPE(index_))
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         CALL cxios_set_axisgroup_long_name(axisgroup_hdl%daddr, long_name_, len(long_name_))
@@ -174,5 +181,5 @@
 
   SUBROUTINE xios(get_axisgroup_attr)  &
-    ( axisgroup_id, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, long_name  &
+    ( axisgroup_id, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, long_name  &
     , mask, n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
@@ -187,4 +194,5 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_n
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      INTEGER  , OPTIONAL, INTENT(OUT) :: index(:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:)
@@ -201,5 +209,5 @@
       CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl)
       CALL xios(get_axisgroup_attr_hdl_)   &
-      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, long_name  &
+      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, long_name  &
       , mask, n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
@@ -207,5 +215,5 @@
 
   SUBROUTINE xios(get_axisgroup_attr_hdl)  &
-    ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, long_name  &
+    ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, long_name  &
     , mask, n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
@@ -219,4 +227,5 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_n
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      INTEGER  , OPTIONAL, INTENT(OUT) :: index(:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:)
@@ -232,5 +241,5 @@
 
       CALL xios(get_axisgroup_attr_hdl_)  &
-      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, long_name  &
+      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, long_name  &
       , mask, n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
@@ -238,7 +247,7 @@
 
   SUBROUTINE xios(get_axisgroup_attr_hdl_)   &
-    ( axisgroup_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, group_ref_, long_name_  &
-    , mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, standard_name_, unit_, value_  &
-     )
+    ( axisgroup_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, group_ref_, index_  &
+    , long_name_, mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, standard_name_  &
+    , unit_, value_ )
 
     IMPLICIT NONE
@@ -251,4 +260,5 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_n_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: index_(:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_(:)
@@ -291,4 +301,8 @@
       ENDIF
 
+      IF (PRESENT(index_)) THEN
+        CALL cxios_get_axisgroup_index(axisgroup_hdl%daddr, index_, SHAPE(index_))
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         CALL cxios_get_axisgroup_long_name(axisgroup_hdl%daddr, long_name_, len(long_name_))
@@ -336,5 +350,5 @@
 
   SUBROUTINE xios(is_defined_axisgroup_attr)  &
-    ( axisgroup_id, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, long_name  &
+    ( axisgroup_id, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, long_name  &
     , mask, n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
@@ -356,4 +370,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
       LOGICAL(KIND=C_BOOL) :: group_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: index
+      LOGICAL(KIND=C_BOOL) :: index_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
@@ -379,5 +395,5 @@
       CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl)
       CALL xios(is_defined_axisgroup_attr_hdl_)   &
-      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, long_name  &
+      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, long_name  &
       , mask, n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
@@ -385,5 +401,5 @@
 
   SUBROUTINE xios(is_defined_axisgroup_attr_hdl)  &
-    ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, long_name  &
+    ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, long_name  &
     , mask, n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
@@ -404,4 +420,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
       LOGICAL(KIND=C_BOOL) :: group_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: index
+      LOGICAL(KIND=C_BOOL) :: index_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
@@ -426,5 +444,5 @@
 
       CALL xios(is_defined_axisgroup_attr_hdl_)  &
-      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, long_name  &
+      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, long_name  &
       , mask, n, n_distributed_partition, n_glo, name, positive, standard_name, unit, value )
 
@@ -432,7 +450,7 @@
 
   SUBROUTINE xios(is_defined_axisgroup_attr_hdl_)   &
-    ( axisgroup_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, group_ref_, long_name_  &
-    , mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, standard_name_, unit_, value_  &
-     )
+    ( axisgroup_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, group_ref_, index_  &
+    , long_name_, mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, standard_name_  &
+    , unit_, value_ )
 
     IMPLICIT NONE
@@ -452,4 +470,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref_
       LOGICAL(KIND=C_BOOL) :: group_ref__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: index_
+      LOGICAL(KIND=C_BOOL) :: index__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name_
       LOGICAL(KIND=C_BOOL) :: long_name__tmp
@@ -508,4 +528,9 @@
       ENDIF
 
+      IF (PRESENT(index_)) THEN
+        index__tmp = cxios_is_defined_axisgroup_index(axisgroup_hdl%daddr)
+        index_ = index__tmp
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         long_name__tmp = cxios_is_defined_axisgroup_long_name(axisgroup_hdl%daddr)
Index: XIOS/trunk/src/interface/fortran_attr/igrid_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/igrid_attr.F90	(revision 802)
+++ XIOS/trunk/src/interface/fortran_attr/igrid_attr.F90	(revision 817)
@@ -12,5 +12,5 @@
 
   SUBROUTINE xios(set_grid_attr)  &
-    ( grid_id, description, mask1, mask2, mask3, name )
+    ( grid_id, description, mask_1d, mask_2d, mask_3d, name )
 
     IMPLICIT NONE
@@ -18,49 +18,49 @@
       CHARACTER(LEN=*), INTENT(IN) ::grid_id
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1(:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2(:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3(:,:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_1d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_2d(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_2d_tmp(:,:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_3d(:,:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_3d_tmp(:,:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
 
       CALL xios(get_grid_handle)(grid_id,grid_hdl)
       CALL xios(set_grid_attr_hdl_)   &
-      ( grid_hdl, description, mask1, mask2, mask3, name )
+      ( grid_hdl, description, mask_1d, mask_2d, mask_3d, name )
 
   END SUBROUTINE xios(set_grid_attr)
 
   SUBROUTINE xios(set_grid_attr_hdl)  &
-    ( grid_hdl, description, mask1, mask2, mask3, name )
+    ( grid_hdl, description, mask_1d, mask_2d, mask_3d, name )
 
     IMPLICIT NONE
       TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1(:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2(:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3(:,:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_1d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_2d(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_2d_tmp(:,:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_3d(:,:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_3d_tmp(:,:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
 
       CALL xios(set_grid_attr_hdl_)  &
-      ( grid_hdl, description, mask1, mask2, mask3, name )
+      ( grid_hdl, description, mask_1d, mask_2d, mask_3d, name )
 
   END SUBROUTINE xios(set_grid_attr_hdl)
 
   SUBROUTINE xios(set_grid_attr_hdl_)   &
-    ( grid_hdl, description_, mask1_, mask2_, mask3_, name_ )
+    ( grid_hdl, description_, mask_1d_, mask_2d_, mask_3d_, name_ )
 
     IMPLICIT NONE
       TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1_(:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1__tmp(:)
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2_(:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2__tmp(:,:)
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3_(:,:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3__tmp(:,:,:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_1d_(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d__tmp(:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_2d_(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_2d__tmp(:,:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_3d_(:,:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_3d__tmp(:,:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
 
@@ -69,20 +69,20 @@
       ENDIF
 
-      IF (PRESENT(mask1_)) THEN
-        ALLOCATE(mask1__tmp(SIZE(mask1_,1)))
-        mask1__tmp = mask1_
-        CALL cxios_set_grid_mask1(grid_hdl%daddr, mask1__tmp, SHAPE(mask1_))
-      ENDIF
-
-      IF (PRESENT(mask2_)) THEN
-        ALLOCATE(mask2__tmp(SIZE(mask2_,1), SIZE(mask2_,2)))
-        mask2__tmp = mask2_
-        CALL cxios_set_grid_mask2(grid_hdl%daddr, mask2__tmp, SHAPE(mask2_))
-      ENDIF
-
-      IF (PRESENT(mask3_)) THEN
-        ALLOCATE(mask3__tmp(SIZE(mask3_,1), SIZE(mask3_,2), SIZE(mask3_,3)))
-        mask3__tmp = mask3_
-        CALL cxios_set_grid_mask3(grid_hdl%daddr, mask3__tmp, SHAPE(mask3_))
+      IF (PRESENT(mask_1d_)) THEN
+        ALLOCATE(mask_1d__tmp(SIZE(mask_1d_,1)))
+        mask_1d__tmp = mask_1d_
+        CALL cxios_set_grid_mask_1d(grid_hdl%daddr, mask_1d__tmp, SHAPE(mask_1d_))
+      ENDIF
+
+      IF (PRESENT(mask_2d_)) THEN
+        ALLOCATE(mask_2d__tmp(SIZE(mask_2d_,1), SIZE(mask_2d_,2)))
+        mask_2d__tmp = mask_2d_
+        CALL cxios_set_grid_mask_2d(grid_hdl%daddr, mask_2d__tmp, SHAPE(mask_2d_))
+      ENDIF
+
+      IF (PRESENT(mask_3d_)) THEN
+        ALLOCATE(mask_3d__tmp(SIZE(mask_3d_,1), SIZE(mask_3d_,2), SIZE(mask_3d_,3)))
+        mask_3d__tmp = mask_3d_
+        CALL cxios_set_grid_mask_3d(grid_hdl%daddr, mask_3d__tmp, SHAPE(mask_3d_))
       ENDIF
 
@@ -94,5 +94,5 @@
 
   SUBROUTINE xios(get_grid_attr)  &
-    ( grid_id, description, mask1, mask2, mask3, name )
+    ( grid_id, description, mask_1d, mask_2d, mask_3d, name )
 
     IMPLICIT NONE
@@ -100,49 +100,49 @@
       CHARACTER(LEN=*), INTENT(IN) ::grid_id
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1(:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2(:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3(:,:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_1d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_2d(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_2d_tmp(:,:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_3d(:,:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_3d_tmp(:,:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
 
       CALL xios(get_grid_handle)(grid_id,grid_hdl)
       CALL xios(get_grid_attr_hdl_)   &
-      ( grid_hdl, description, mask1, mask2, mask3, name )
+      ( grid_hdl, description, mask_1d, mask_2d, mask_3d, name )
 
   END SUBROUTINE xios(get_grid_attr)
 
   SUBROUTINE xios(get_grid_attr_hdl)  &
-    ( grid_hdl, description, mask1, mask2, mask3, name )
+    ( grid_hdl, description, mask_1d, mask_2d, mask_3d, name )
 
     IMPLICIT NONE
       TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1(:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2(:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3(:,:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_1d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_2d(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_2d_tmp(:,:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_3d(:,:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_3d_tmp(:,:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
 
       CALL xios(get_grid_attr_hdl_)  &
-      ( grid_hdl, description, mask1, mask2, mask3, name )
+      ( grid_hdl, description, mask_1d, mask_2d, mask_3d, name )
 
   END SUBROUTINE xios(get_grid_attr_hdl)
 
   SUBROUTINE xios(get_grid_attr_hdl_)   &
-    ( grid_hdl, description_, mask1_, mask2_, mask3_, name_ )
+    ( grid_hdl, description_, mask_1d_, mask_2d_, mask_3d_, name_ )
 
     IMPLICIT NONE
       TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1_(:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1__tmp(:)
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2_(:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2__tmp(:,:)
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3_(:,:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3__tmp(:,:,:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_1d_(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d__tmp(:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_2d_(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_2d__tmp(:,:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_3d_(:,:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_3d__tmp(:,:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
 
@@ -151,20 +151,20 @@
       ENDIF
 
-      IF (PRESENT(mask1_)) THEN
-        ALLOCATE(mask1__tmp(SIZE(mask1_,1)))
-        CALL cxios_get_grid_mask1(grid_hdl%daddr, mask1__tmp, SHAPE(mask1_))
-        mask1_ = mask1__tmp
-      ENDIF
-
-      IF (PRESENT(mask2_)) THEN
-        ALLOCATE(mask2__tmp(SIZE(mask2_,1), SIZE(mask2_,2)))
-        CALL cxios_get_grid_mask2(grid_hdl%daddr, mask2__tmp, SHAPE(mask2_))
-        mask2_ = mask2__tmp
-      ENDIF
-
-      IF (PRESENT(mask3_)) THEN
-        ALLOCATE(mask3__tmp(SIZE(mask3_,1), SIZE(mask3_,2), SIZE(mask3_,3)))
-        CALL cxios_get_grid_mask3(grid_hdl%daddr, mask3__tmp, SHAPE(mask3_))
-        mask3_ = mask3__tmp
+      IF (PRESENT(mask_1d_)) THEN
+        ALLOCATE(mask_1d__tmp(SIZE(mask_1d_,1)))
+        CALL cxios_get_grid_mask_1d(grid_hdl%daddr, mask_1d__tmp, SHAPE(mask_1d_))
+        mask_1d_ = mask_1d__tmp
+      ENDIF
+
+      IF (PRESENT(mask_2d_)) THEN
+        ALLOCATE(mask_2d__tmp(SIZE(mask_2d_,1), SIZE(mask_2d_,2)))
+        CALL cxios_get_grid_mask_2d(grid_hdl%daddr, mask_2d__tmp, SHAPE(mask_2d_))
+        mask_2d_ = mask_2d__tmp
+      ENDIF
+
+      IF (PRESENT(mask_3d_)) THEN
+        ALLOCATE(mask_3d__tmp(SIZE(mask_3d_,1), SIZE(mask_3d_,2), SIZE(mask_3d_,3)))
+        CALL cxios_get_grid_mask_3d(grid_hdl%daddr, mask_3d__tmp, SHAPE(mask_3d_))
+        mask_3d_ = mask_3d__tmp
       ENDIF
 
@@ -176,5 +176,5 @@
 
   SUBROUTINE xios(is_defined_grid_attr)  &
-    ( grid_id, description, mask1, mask2, mask3, name )
+    ( grid_id, description, mask_1d, mask_2d, mask_3d, name )
 
     IMPLICIT NONE
@@ -183,10 +183,10 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: description
       LOGICAL(KIND=C_BOOL) :: description_tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1
-      LOGICAL(KIND=C_BOOL) :: mask1_tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2
-      LOGICAL(KIND=C_BOOL) :: mask2_tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3
-      LOGICAL(KIND=C_BOOL) :: mask3_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d
+      LOGICAL(KIND=C_BOOL) :: mask_1d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_2d
+      LOGICAL(KIND=C_BOOL) :: mask_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_3d
+      LOGICAL(KIND=C_BOOL) :: mask_3d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: name
       LOGICAL(KIND=C_BOOL) :: name_tmp
@@ -194,10 +194,10 @@
       CALL xios(get_grid_handle)(grid_id,grid_hdl)
       CALL xios(is_defined_grid_attr_hdl_)   &
-      ( grid_hdl, description, mask1, mask2, mask3, name )
+      ( grid_hdl, description, mask_1d, mask_2d, mask_3d, name )
 
   END SUBROUTINE xios(is_defined_grid_attr)
 
   SUBROUTINE xios(is_defined_grid_attr_hdl)  &
-    ( grid_hdl, description, mask1, mask2, mask3, name )
+    ( grid_hdl, description, mask_1d, mask_2d, mask_3d, name )
 
     IMPLICIT NONE
@@ -205,20 +205,20 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: description
       LOGICAL(KIND=C_BOOL) :: description_tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1
-      LOGICAL(KIND=C_BOOL) :: mask1_tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2
-      LOGICAL(KIND=C_BOOL) :: mask2_tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3
-      LOGICAL(KIND=C_BOOL) :: mask3_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d
+      LOGICAL(KIND=C_BOOL) :: mask_1d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_2d
+      LOGICAL(KIND=C_BOOL) :: mask_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_3d
+      LOGICAL(KIND=C_BOOL) :: mask_3d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: name
       LOGICAL(KIND=C_BOOL) :: name_tmp
 
       CALL xios(is_defined_grid_attr_hdl_)  &
-      ( grid_hdl, description, mask1, mask2, mask3, name )
+      ( grid_hdl, description, mask_1d, mask_2d, mask_3d, name )
 
   END SUBROUTINE xios(is_defined_grid_attr_hdl)
 
   SUBROUTINE xios(is_defined_grid_attr_hdl_)   &
-    ( grid_hdl, description_, mask1_, mask2_, mask3_, name_ )
+    ( grid_hdl, description_, mask_1d_, mask_2d_, mask_3d_, name_ )
 
     IMPLICIT NONE
@@ -226,10 +226,10 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: description_
       LOGICAL(KIND=C_BOOL) :: description__tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1_
-      LOGICAL(KIND=C_BOOL) :: mask1__tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2_
-      LOGICAL(KIND=C_BOOL) :: mask2__tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3_
-      LOGICAL(KIND=C_BOOL) :: mask3__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d_
+      LOGICAL(KIND=C_BOOL) :: mask_1d__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_2d_
+      LOGICAL(KIND=C_BOOL) :: mask_2d__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_3d_
+      LOGICAL(KIND=C_BOOL) :: mask_3d__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: name_
       LOGICAL(KIND=C_BOOL) :: name__tmp
@@ -240,17 +240,17 @@
       ENDIF
 
-      IF (PRESENT(mask1_)) THEN
-        mask1__tmp = cxios_is_defined_grid_mask1(grid_hdl%daddr)
-        mask1_ = mask1__tmp
-      ENDIF
-
-      IF (PRESENT(mask2_)) THEN
-        mask2__tmp = cxios_is_defined_grid_mask2(grid_hdl%daddr)
-        mask2_ = mask2__tmp
-      ENDIF
-
-      IF (PRESENT(mask3_)) THEN
-        mask3__tmp = cxios_is_defined_grid_mask3(grid_hdl%daddr)
-        mask3_ = mask3__tmp
+      IF (PRESENT(mask_1d_)) THEN
+        mask_1d__tmp = cxios_is_defined_grid_mask_1d(grid_hdl%daddr)
+        mask_1d_ = mask_1d__tmp
+      ENDIF
+
+      IF (PRESENT(mask_2d_)) THEN
+        mask_2d__tmp = cxios_is_defined_grid_mask_2d(grid_hdl%daddr)
+        mask_2d_ = mask_2d__tmp
+      ENDIF
+
+      IF (PRESENT(mask_3d_)) THEN
+        mask_3d__tmp = cxios_is_defined_grid_mask_3d(grid_hdl%daddr)
+        mask_3d_ = mask_3d__tmp
       ENDIF
 
Index: XIOS/trunk/src/interface/fortran_attr/igridgroup_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/igridgroup_attr.F90	(revision 802)
+++ XIOS/trunk/src/interface/fortran_attr/igridgroup_attr.F90	(revision 817)
@@ -12,5 +12,5 @@
 
   SUBROUTINE xios(set_gridgroup_attr)  &
-    ( gridgroup_id, description, group_ref, mask1, mask2, mask3, name )
+    ( gridgroup_id, description, group_ref, mask_1d, mask_2d, mask_3d, name )
 
     IMPLICIT NONE
@@ -19,20 +19,20 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1(:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2(:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3(:,:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_1d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_2d(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_2d_tmp(:,:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_3d(:,:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_3d_tmp(:,:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
 
       CALL xios(get_gridgroup_handle)(gridgroup_id,gridgroup_hdl)
       CALL xios(set_gridgroup_attr_hdl_)   &
-      ( gridgroup_hdl, description, group_ref, mask1, mask2, mask3, name )
+      ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, name )
 
   END SUBROUTINE xios(set_gridgroup_attr)
 
   SUBROUTINE xios(set_gridgroup_attr_hdl)  &
-    ( gridgroup_hdl, description, group_ref, mask1, mask2, mask3, name )
+    ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, name )
 
     IMPLICIT NONE
@@ -40,19 +40,19 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1(:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2(:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3(:,:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_1d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_2d(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_2d_tmp(:,:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_3d(:,:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_3d_tmp(:,:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
 
       CALL xios(set_gridgroup_attr_hdl_)  &
-      ( gridgroup_hdl, description, group_ref, mask1, mask2, mask3, name )
+      ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, name )
 
   END SUBROUTINE xios(set_gridgroup_attr_hdl)
 
   SUBROUTINE xios(set_gridgroup_attr_hdl_)   &
-    ( gridgroup_hdl, description_, group_ref_, mask1_, mask2_, mask3_, name_ )
+    ( gridgroup_hdl, description_, group_ref_, mask_1d_, mask_2d_, mask_3d_, name_ )
 
     IMPLICIT NONE
@@ -60,10 +60,10 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1_(:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1__tmp(:)
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2_(:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2__tmp(:,:)
-      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3_(:,:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3__tmp(:,:,:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_1d_(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d__tmp(:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_2d_(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_2d__tmp(:,:)
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_3d_(:,:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_3d__tmp(:,:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
 
@@ -76,20 +76,20 @@
       ENDIF
 
-      IF (PRESENT(mask1_)) THEN
-        ALLOCATE(mask1__tmp(SIZE(mask1_,1)))
-        mask1__tmp = mask1_
-        CALL cxios_set_gridgroup_mask1(gridgroup_hdl%daddr, mask1__tmp, SHAPE(mask1_))
-      ENDIF
-
-      IF (PRESENT(mask2_)) THEN
-        ALLOCATE(mask2__tmp(SIZE(mask2_,1), SIZE(mask2_,2)))
-        mask2__tmp = mask2_
-        CALL cxios_set_gridgroup_mask2(gridgroup_hdl%daddr, mask2__tmp, SHAPE(mask2_))
-      ENDIF
-
-      IF (PRESENT(mask3_)) THEN
-        ALLOCATE(mask3__tmp(SIZE(mask3_,1), SIZE(mask3_,2), SIZE(mask3_,3)))
-        mask3__tmp = mask3_
-        CALL cxios_set_gridgroup_mask3(gridgroup_hdl%daddr, mask3__tmp, SHAPE(mask3_))
+      IF (PRESENT(mask_1d_)) THEN
+        ALLOCATE(mask_1d__tmp(SIZE(mask_1d_,1)))
+        mask_1d__tmp = mask_1d_
+        CALL cxios_set_gridgroup_mask_1d(gridgroup_hdl%daddr, mask_1d__tmp, SHAPE(mask_1d_))
+      ENDIF
+
+      IF (PRESENT(mask_2d_)) THEN
+        ALLOCATE(mask_2d__tmp(SIZE(mask_2d_,1), SIZE(mask_2d_,2)))
+        mask_2d__tmp = mask_2d_
+        CALL cxios_set_gridgroup_mask_2d(gridgroup_hdl%daddr, mask_2d__tmp, SHAPE(mask_2d_))
+      ENDIF
+
+      IF (PRESENT(mask_3d_)) THEN
+        ALLOCATE(mask_3d__tmp(SIZE(mask_3d_,1), SIZE(mask_3d_,2), SIZE(mask_3d_,3)))
+        mask_3d__tmp = mask_3d_
+        CALL cxios_set_gridgroup_mask_3d(gridgroup_hdl%daddr, mask_3d__tmp, SHAPE(mask_3d_))
       ENDIF
 
@@ -101,5 +101,5 @@
 
   SUBROUTINE xios(get_gridgroup_attr)  &
-    ( gridgroup_id, description, group_ref, mask1, mask2, mask3, name )
+    ( gridgroup_id, description, group_ref, mask_1d, mask_2d, mask_3d, name )
 
     IMPLICIT NONE
@@ -108,20 +108,20 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1(:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2(:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3(:,:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_1d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_2d(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_2d_tmp(:,:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_3d(:,:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_3d_tmp(:,:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
 
       CALL xios(get_gridgroup_handle)(gridgroup_id,gridgroup_hdl)
       CALL xios(get_gridgroup_attr_hdl_)   &
-      ( gridgroup_hdl, description, group_ref, mask1, mask2, mask3, name )
+      ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, name )
 
   END SUBROUTINE xios(get_gridgroup_attr)
 
   SUBROUTINE xios(get_gridgroup_attr_hdl)  &
-    ( gridgroup_hdl, description, group_ref, mask1, mask2, mask3, name )
+    ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, name )
 
     IMPLICIT NONE
@@ -129,19 +129,19 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1(:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2(:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3(:,:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_1d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_2d(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_2d_tmp(:,:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_3d(:,:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_3d_tmp(:,:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
 
       CALL xios(get_gridgroup_attr_hdl_)  &
-      ( gridgroup_hdl, description, group_ref, mask1, mask2, mask3, name )
+      ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, name )
 
   END SUBROUTINE xios(get_gridgroup_attr_hdl)
 
   SUBROUTINE xios(get_gridgroup_attr_hdl_)   &
-    ( gridgroup_hdl, description_, group_ref_, mask1_, mask2_, mask3_, name_ )
+    ( gridgroup_hdl, description_, group_ref_, mask_1d_, mask_2d_, mask_3d_, name_ )
 
     IMPLICIT NONE
@@ -149,10 +149,10 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1_(:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1__tmp(:)
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2_(:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2__tmp(:,:)
-      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3_(:,:,:)
-      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3__tmp(:,:,:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_1d_(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d__tmp(:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_2d_(:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_2d__tmp(:,:)
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_3d_(:,:,:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_3d__tmp(:,:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
 
@@ -165,20 +165,20 @@
       ENDIF
 
-      IF (PRESENT(mask1_)) THEN
-        ALLOCATE(mask1__tmp(SIZE(mask1_,1)))
-        CALL cxios_get_gridgroup_mask1(gridgroup_hdl%daddr, mask1__tmp, SHAPE(mask1_))
-        mask1_ = mask1__tmp
-      ENDIF
-
-      IF (PRESENT(mask2_)) THEN
-        ALLOCATE(mask2__tmp(SIZE(mask2_,1), SIZE(mask2_,2)))
-        CALL cxios_get_gridgroup_mask2(gridgroup_hdl%daddr, mask2__tmp, SHAPE(mask2_))
-        mask2_ = mask2__tmp
-      ENDIF
-
-      IF (PRESENT(mask3_)) THEN
-        ALLOCATE(mask3__tmp(SIZE(mask3_,1), SIZE(mask3_,2), SIZE(mask3_,3)))
-        CALL cxios_get_gridgroup_mask3(gridgroup_hdl%daddr, mask3__tmp, SHAPE(mask3_))
-        mask3_ = mask3__tmp
+      IF (PRESENT(mask_1d_)) THEN
+        ALLOCATE(mask_1d__tmp(SIZE(mask_1d_,1)))
+        CALL cxios_get_gridgroup_mask_1d(gridgroup_hdl%daddr, mask_1d__tmp, SHAPE(mask_1d_))
+        mask_1d_ = mask_1d__tmp
+      ENDIF
+
+      IF (PRESENT(mask_2d_)) THEN
+        ALLOCATE(mask_2d__tmp(SIZE(mask_2d_,1), SIZE(mask_2d_,2)))
+        CALL cxios_get_gridgroup_mask_2d(gridgroup_hdl%daddr, mask_2d__tmp, SHAPE(mask_2d_))
+        mask_2d_ = mask_2d__tmp
+      ENDIF
+
+      IF (PRESENT(mask_3d_)) THEN
+        ALLOCATE(mask_3d__tmp(SIZE(mask_3d_,1), SIZE(mask_3d_,2), SIZE(mask_3d_,3)))
+        CALL cxios_get_gridgroup_mask_3d(gridgroup_hdl%daddr, mask_3d__tmp, SHAPE(mask_3d_))
+        mask_3d_ = mask_3d__tmp
       ENDIF
 
@@ -190,5 +190,5 @@
 
   SUBROUTINE xios(is_defined_gridgroup_attr)  &
-    ( gridgroup_id, description, group_ref, mask1, mask2, mask3, name )
+    ( gridgroup_id, description, group_ref, mask_1d, mask_2d, mask_3d, name )
 
     IMPLICIT NONE
@@ -199,10 +199,10 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
       LOGICAL(KIND=C_BOOL) :: group_ref_tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1
-      LOGICAL(KIND=C_BOOL) :: mask1_tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2
-      LOGICAL(KIND=C_BOOL) :: mask2_tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3
-      LOGICAL(KIND=C_BOOL) :: mask3_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d
+      LOGICAL(KIND=C_BOOL) :: mask_1d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_2d
+      LOGICAL(KIND=C_BOOL) :: mask_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_3d
+      LOGICAL(KIND=C_BOOL) :: mask_3d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: name
       LOGICAL(KIND=C_BOOL) :: name_tmp
@@ -210,10 +210,10 @@
       CALL xios(get_gridgroup_handle)(gridgroup_id,gridgroup_hdl)
       CALL xios(is_defined_gridgroup_attr_hdl_)   &
-      ( gridgroup_hdl, description, group_ref, mask1, mask2, mask3, name )
+      ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, name )
 
   END SUBROUTINE xios(is_defined_gridgroup_attr)
 
   SUBROUTINE xios(is_defined_gridgroup_attr_hdl)  &
-    ( gridgroup_hdl, description, group_ref, mask1, mask2, mask3, name )
+    ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, name )
 
     IMPLICIT NONE
@@ -223,20 +223,20 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
       LOGICAL(KIND=C_BOOL) :: group_ref_tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1
-      LOGICAL(KIND=C_BOOL) :: mask1_tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2
-      LOGICAL(KIND=C_BOOL) :: mask2_tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3
-      LOGICAL(KIND=C_BOOL) :: mask3_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d
+      LOGICAL(KIND=C_BOOL) :: mask_1d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_2d
+      LOGICAL(KIND=C_BOOL) :: mask_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_3d
+      LOGICAL(KIND=C_BOOL) :: mask_3d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: name
       LOGICAL(KIND=C_BOOL) :: name_tmp
 
       CALL xios(is_defined_gridgroup_attr_hdl_)  &
-      ( gridgroup_hdl, description, group_ref, mask1, mask2, mask3, name )
+      ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, name )
 
   END SUBROUTINE xios(is_defined_gridgroup_attr_hdl)
 
   SUBROUTINE xios(is_defined_gridgroup_attr_hdl_)   &
-    ( gridgroup_hdl, description_, group_ref_, mask1_, mask2_, mask3_, name_ )
+    ( gridgroup_hdl, description_, group_ref_, mask_1d_, mask_2d_, mask_3d_, name_ )
 
     IMPLICIT NONE
@@ -246,10 +246,10 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref_
       LOGICAL(KIND=C_BOOL) :: group_ref__tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1_
-      LOGICAL(KIND=C_BOOL) :: mask1__tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2_
-      LOGICAL(KIND=C_BOOL) :: mask2__tmp
-      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3_
-      LOGICAL(KIND=C_BOOL) :: mask3__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d_
+      LOGICAL(KIND=C_BOOL) :: mask_1d__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_2d_
+      LOGICAL(KIND=C_BOOL) :: mask_2d__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_3d_
+      LOGICAL(KIND=C_BOOL) :: mask_3d__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: name_
       LOGICAL(KIND=C_BOOL) :: name__tmp
@@ -265,17 +265,17 @@
       ENDIF
 
-      IF (PRESENT(mask1_)) THEN
-        mask1__tmp = cxios_is_defined_gridgroup_mask1(gridgroup_hdl%daddr)
-        mask1_ = mask1__tmp
-      ENDIF
-
-      IF (PRESENT(mask2_)) THEN
-        mask2__tmp = cxios_is_defined_gridgroup_mask2(gridgroup_hdl%daddr)
-        mask2_ = mask2__tmp
-      ENDIF
-
-      IF (PRESENT(mask3_)) THEN
-        mask3__tmp = cxios_is_defined_gridgroup_mask3(gridgroup_hdl%daddr)
-        mask3_ = mask3__tmp
+      IF (PRESENT(mask_1d_)) THEN
+        mask_1d__tmp = cxios_is_defined_gridgroup_mask_1d(gridgroup_hdl%daddr)
+        mask_1d_ = mask_1d__tmp
+      ENDIF
+
+      IF (PRESENT(mask_2d_)) THEN
+        mask_2d__tmp = cxios_is_defined_gridgroup_mask_2d(gridgroup_hdl%daddr)
+        mask_2d_ = mask_2d__tmp
+      ENDIF
+
+      IF (PRESENT(mask_3d_)) THEN
+        mask_3d__tmp = cxios_is_defined_gridgroup_mask_3d(gridgroup_hdl%daddr)
+        mask_3d_ = mask_3d__tmp
       ENDIF
 
