Index: XMLIO_SERVER/trunk/src/IOSERVER/mod_iomanager.f90
===================================================================
--- XMLIO_SERVER/trunk/src/IOSERVER/mod_iomanager.f90	(revision 41)
+++ XMLIO_SERVER/trunk/src/IOSERVER/mod_iomanager.f90	(revision 42)
@@ -389,23 +389,31 @@
   USE mod_object
   USE mod_field
+  USE mod_field_group
   USE mod_file
+  USE mod_file_group
   USE mod_axis
+  USE mod_axis_group
   USE mod_grid
+  USE mod_grid_group
   USE mod_zoom
   IMPLICIT NONE
     CHARACTER(LEN=*) :: id
     TYPE(attribut)   :: attrib  
-
+    LOGICAL          :: success
     IF (current_rank==nb_client) THEN
     
       SELECT CASE(attrib%object)
         CASE(field_object)
-          CALL field__set_attribut(id,attrib)
+          CALL field_group__set_attribut(id,attrib,success)
+          IF (.NOT. success) CALL field__set_attribut(id,attrib)         
         CASE(file_object)
-          CALL file__set_attribut(id,attrib)
+          CALL file_group__set_attribut(id,attrib,success)
+          IF (.NOT. success) CALL file__set_attribut(id,attrib)         
         CASE(axis_object)
-          CALL axis__set_attribut(id,attrib)
+          CALL axis_group__set_attribut(id,attrib,success)
+          IF (.NOT. success) CALL axis__set_attribut(id,attrib)         
         CASE(grid_object)
-          CALL grid__set_attribut(id,attrib)
+          CALL grid_group__set_attribut(id,attrib,success)
+          IF (.NOT. success) CALL grid__set_attribut(id,attrib)         
         CASE(zoom_object)
           CALL zoom__set_attribut(id,attrib)
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_axis.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_axis.f90	(revision 41)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_axis.f90	(revision 42)
@@ -29,4 +29,8 @@
   TYPE(vector_axis),POINTER,SAVE             :: axis_Ids
   TYPE(sorted_list),POINTER,SAVE,PRIVATE     :: Ids 
+
+  INTERFACE axis__set_attribut
+    MODULE PROCEDURE axis__set_attribut_id,axis__set_attribut_pt
+  END INTERFACE
 
 CONTAINS
@@ -137,23 +141,39 @@
   END SUBROUTINE axis__set
 
-  SUBROUTINE axis__set_attribut(id,attrib)
+  SUBROUTINE axis__set_attribut_id(id,attrib,ok)
+  USE mod_attribut
+  USE error_msg
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN)   :: id
+    TYPE(attribut),INTENT(IN)     :: attrib
+    LOGICAL,OPTIONAL,INTENT(OUT)  :: ok
+    
+    TYPE(axis),POINTER              :: Pt_axis
+    INTEGER                         :: Pos
+    LOGICAL                         :: success
+    
+    CALL sorted_list__find(Ids,hash(Id),Pos,success)
+    IF (success) THEN
+      Pt_axis=>axis_ids%at(Pos)%Pt
+      CALL axis__set_attribut_pt(Pt_axis,attrib)
+      IF (PRESENT(OK)) OK=.TRUE.
+    ELSE
+      IF (.NOT.PRESENT(OK)) THEN
+        WRITE(message,*) 'axis id :',id,'is undefined'
+        CALL error('mod_axis::axis__set_attribut')
+      ELSE
+        OK=.FALSE.
+      ENDIF
+    ENDIF  
+  
+  END SUBROUTINE axis__set_attribut_id
+      
+  SUBROUTINE axis__set_attribut_pt(Pt_axis,attrib)
   USE mod_attribut
   USE mod_axis_attribut
   USE error_msg
   IMPLICIT NONE
-    CHARACTER(LEN=*),INTENT(IN) :: id
+    TYPE(axis),POINTER        :: Pt_axis
     TYPE(attribut),INTENT(IN) :: attrib
-
-    TYPE(axis),POINTER              :: Pt_axis
-    INTEGER                         :: Pos
-    LOGICAL                         :: success
-    
-    CALL sorted_list__find(Ids,hash(Id),Pos,success)
-    IF (success) THEN
-      Pt_axis=>axis_ids%at(Pos)%Pt
-    ELSE
-      WRITE(message,*) 'axis id :',id,'is undefined'
-      CALL error('mod_axis::axis__set_attribut')
-    ENDIF  
     
     SELECT CASE(attrib%name)
@@ -172,8 +192,8 @@
        END SELECT
 
-     WRITE(message,*) 'axis id ',id,' : Attribute type is incompatible with the provided value'
+     WRITE(message,*) 'axis attribut ',attrib%name,' : type :',attrib%type,' : Attribute type is incompatible with the provided value'
      CALL error('mod_axis::axis__set_attribut')
     
-  END SUBROUTINE axis__set_attribut
+  END SUBROUTINE axis__set_attribut_pt
   
   SUBROUTINE axis__print(pt_axis)
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_axis_group.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_axis_group.f90	(revision 41)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_axis_group.f90	(revision 42)
@@ -18,4 +18,8 @@
   TYPE(sorted_list),POINTER,PRIVATE     :: Ids 
 
+  INTERFACE axis_group__set_attribut
+    MODULE PROCEDURE axis_group__set_attribut_id,axis_group__set_attribut_pt
+  END INTERFACE
+
 CONTAINS
 
@@ -57,5 +61,47 @@
     
   END SUBROUTINE axis_group__get
-    
+
+
+  SUBROUTINE axis_group__set_attribut_id(id,attrib,Ok)
+  USE mod_attribut
+  USE error_msg
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN) :: id
+    TYPE(attribut),INTENT(IN) :: attrib
+    LOGICAL,OPTIONAL,INTENT(out)  :: Ok
+    
+    TYPE(axis_group),POINTER             :: Pt_ag
+    INTEGER                         :: Pos
+    LOGICAL                         :: success
+    
+    CALL sorted_list__find(Ids,hash(Id),Pos,success)
+    IF (success) THEN
+      Pt_ag=>axis_group_ids%at(Pos)%Pt
+      CALL axis_group__set_attribut(Pt_ag,attrib)
+      IF (PRESENT(OK)) ok=.TRUE.
+    ELSE
+      IF (.NOT.PRESENT(OK)) THEN
+        WRITE(message,*) 'axis group id :',id,'is undefined'
+        CALL error('mod_axis_group::axis_group__set_attribut')
+      ELSE
+        OK=.FALSE.
+      ENDIF
+    ENDIF 
+    
+  END SUBROUTINE axis_group__set_attribut_id
+  
+  SUBROUTINE axis_group__set_attribut_pt(pt_ag,attrib)
+  USE mod_attribut
+  USE mod_object
+  IMPLICIT NONE
+    TYPE(axis_group),POINTER :: Pt_ag
+    TYPE(attribut),INTENT(IN) :: attrib
+     
+    IF (attrib%object==axis_object) THEN
+      CALL axis__set_attribut(pt_ag%default_attribut,attrib)
+    ENDIF
+    
+  END SUBROUTINE axis_group__set_attribut_pt
+      
   RECURSIVE SUBROUTINE axis_group__new(Pt_ag,Id)
   USE string_function
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_field.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_field.f90	(revision 41)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_field.f90	(revision 42)
@@ -50,4 +50,8 @@
   END TYPE field
   
+  INTERFACE field__set_attribut
+    MODULE PROCEDURE field__set_attribut_id,field__set_attribut_pt
+  END INTERFACE
+  
   INCLUDE 'vector_field_def.inc'
   
@@ -206,12 +210,13 @@
   END SUBROUTINE field__set
 
-  SUBROUTINE field__set_attribut(id,attrib)
+  SUBROUTINE field__set_attribut_id(id,attrib,Ok)
   USE mod_attribut
   USE mod_field_attribut
   USE error_msg
   IMPLICIT NONE
-    CHARACTER(LEN=*),INTENT(IN) :: id
-    TYPE(attribut),INTENT(IN) :: attrib
-
+    CHARACTER(LEN=*),INTENT(IN)   :: id
+    TYPE(attribut),INTENT(IN)     :: attrib
+    LOGICAL,OPTIONAL,INTENT(out)  :: Ok
+    
     TYPE(field),POINTER             :: Pt_field
     INTEGER                         :: Pos
@@ -221,9 +226,25 @@
     IF (success) THEN
       Pt_field=>field_ids%at(Pos)%Pt
-    ELSE
-      WRITE(message,*) 'Field id :',id,'is undefined'
-      CALL error('mod_field::field__set_attribut')
+      CALL field__set_attribut(Pt_field,attrib)
+      IF (PRESENT(OK)) ok=.TRUE.
+    ELSE
+      IF (.NOT.PRESENT(OK)) THEN
+        WRITE(message,*) 'Field id :',id,'is undefined'
+        CALL error('mod_field::field__set_attribut')
+      ELSE
+        OK=.FALSE.
+      ENDIF
     ENDIF  
-    
+  END SUBROUTINE field__set_attribut_id
+
+    
+  SUBROUTINE field__set_attribut_pt(pt_field,attrib)
+  USE mod_attribut
+  USE mod_field_attribut
+  USE error_msg
+  IMPLICIT NONE
+    TYPE(field),POINTER             :: Pt_field
+    TYPE(attribut),INTENT(IN) :: attrib
+
     SELECT CASE(attrib%name)
       CASE (field__name)
@@ -253,8 +274,8 @@
      END SELECT
 
-     WRITE(message,*) 'field id ',id,' : Attribute type is incompatible with the provided value'
+     WRITE(message,*) 'field attribut ',attrib%name,' : type :',attrib%type,' : Attribute type is incompatible with the provided value'
      CALL error('mod_field::field__set_attribut')
     
-  END SUBROUTINE field__set_attribut    
+  END SUBROUTINE field__set_attribut_pt    
 
   SUBROUTINE field__print(pt_field)
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_field_group.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_field_group.f90	(revision 41)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_field_group.f90	(revision 42)
@@ -19,4 +19,8 @@
   TYPE(sorted_list),POINTER,SAVE,PRIVATE     :: Ids 
 
+  INTERFACE field_group__set_attribut
+    MODULE PROCEDURE field_group__set_attribut_id,field_group__set_attribut_pt
+  END INTERFACE
+
 CONTAINS
 
@@ -59,5 +63,47 @@
     
   END SUBROUTINE field_group__get
-    
+
+  SUBROUTINE field_group__set_attribut_id(id,attrib,Ok)
+  USE mod_attribut
+  USE error_msg
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN) :: id
+    TYPE(attribut),INTENT(IN) :: attrib
+    LOGICAL,OPTIONAL,INTENT(out)  :: Ok
+    
+    TYPE(field_group),POINTER             :: Pt_fg
+    INTEGER                         :: Pos
+    LOGICAL                         :: success
+    
+    CALL sorted_list__find(Ids,hash(Id),Pos,success)
+    IF (success) THEN
+      Pt_fg=>field_group_ids%at(Pos)%Pt
+      CALL field_group__set_attribut(Pt_fg,attrib)
+      IF (PRESENT(OK)) ok=.TRUE.
+    ELSE
+      IF (.NOT.PRESENT(OK)) THEN
+        WRITE(message,*) 'Field group id :',id,'is undefined'
+        CALL error('mod_field_group::field_group__set_attribut')
+      ELSE
+        OK=.FALSE.
+      ENDIF
+    ENDIF 
+    
+  END SUBROUTINE field_group__set_attribut_id
+  
+  SUBROUTINE field_group__set_attribut_pt(pt_fg,attrib)
+  USE mod_attribut
+  USE mod_object
+  IMPLICIT NONE
+    TYPE(field_group),POINTER :: Pt_fg
+    TYPE(attribut),INTENT(IN) :: attrib
+     
+    IF (attrib%object==field_object) THEN
+      CALL field__set_attribut(Pt_fg%default_attribut,attrib)
+    ENDIF
+    
+  END SUBROUTINE field_group__set_attribut_pt
+    
+      
   RECURSIVE SUBROUTINE field_group__new(Pt_fg,Id)
   USE string_function
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_file.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_file.f90	(revision 41)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_file.f90	(revision 42)
@@ -29,4 +29,8 @@
   TYPE(sorted_list),POINTER,SAVE,PRIVATE     :: Ids 
 
+  INTERFACE file__set_attribut
+    MODULE PROCEDURE file__set_attribut_id,file__set_attribut_pt
+  END INTERFACE
+
 CONTAINS
   INCLUDE 'vector_file_contains.inc'
@@ -138,23 +142,40 @@
   END SUBROUTINE file__set
 
-  SUBROUTINE file__set_attribut(id,attrib)
+  SUBROUTINE file__set_attribut_id(id,attrib,ok)
+  USE mod_attribut
+  USE error_msg
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN)   :: id
+    TYPE(attribut),INTENT(IN)     :: attrib
+    LOGICAL,OPTIONAL,INTENT(OUT)  :: ok
+    
+    TYPE(file),POINTER              :: Pt_file
+    INTEGER                         :: Pos
+    LOGICAL                         :: success
+    
+    CALL sorted_list__find(Ids,hash(Id),Pos,success)
+    IF (success) THEN
+      Pt_file=>file_ids%at(Pos)%Pt
+      CALL file__set_attribut_pt(Pt_file,attrib)
+      IF (PRESENT(OK)) OK=.TRUE.
+    ELSE
+      IF (.NOT.PRESENT(OK)) THEN
+        WRITE(message,*) 'File id : ',id,' is undefined'
+        CALL error('mod_file::file__set_attribut')
+      ELSE
+        OK=.FALSE.
+      ENDIF
+    ENDIF  
+  
+  END SUBROUTINE file__set_attribut_id
+      
+  SUBROUTINE file__set_attribut_pt(Pt_file,attrib)
   USE mod_attribut
   USE mod_file_attribut
   USE error_msg
   IMPLICIT NONE
-    CHARACTER(LEN=*),INTENT(IN) :: id
+    TYPE(file),POINTER        :: Pt_file
     TYPE(attribut),INTENT(IN) :: attrib
 
-    TYPE(file),POINTER              :: Pt_file
-    INTEGER                         :: Pos
-    LOGICAL                         :: success
-    
-    CALL sorted_list__find(Ids,hash(Id),Pos,success)
-    IF (success) THEN
-      Pt_file=>file_ids%at(Pos)%Pt
-    ELSE
-      WRITE(message,*) 'File id :',id,'is undefined'
-      CALL error('mod_file::file__set_attribut')
-    ENDIF  
     
     SELECT CASE(attrib%name)
@@ -173,8 +194,8 @@
      END SELECT
 
-     WRITE(message,*) 'file id ',id,' : Attribute type is incompatible with the provided value'
+     WRITE(message,*) 'file attribut ',attrib%name,' : type : ',attrib%type,' : Attribute type is incompatible with the provided value'
      CALL error('mod_file::file__set_attribut')
     
-  END SUBROUTINE file__set_attribut
+  END SUBROUTINE file__set_attribut_pt
   
      
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_file_group.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_file_group.f90	(revision 41)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_file_group.f90	(revision 42)
@@ -18,4 +18,8 @@
   TYPE(sorted_list),POINTER,PRIVATE,SAVE     :: Ids 
 
+  INTERFACE file_group__set_attribut
+    MODULE PROCEDURE file_group__set_attribut_id,file_group__set_attribut_pt
+  END INTERFACE
+
 CONTAINS
 
@@ -57,5 +61,47 @@
     
   END SUBROUTINE file_group__get
-    
+
+  SUBROUTINE file_group__set_attribut_id(id,attrib,Ok)
+  USE mod_attribut
+  USE error_msg
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN) :: id
+    TYPE(attribut),INTENT(IN) :: attrib
+    LOGICAL,OPTIONAL,INTENT(out)  :: Ok
+    
+    TYPE(file_group),POINTER             :: Pt_fg
+    INTEGER                         :: Pos
+    LOGICAL                         :: success
+    
+    CALL sorted_list__find(Ids,hash(Id),Pos,success)
+    IF (success) THEN
+      Pt_fg=>file_group_ids%at(Pos)%Pt
+      CALL file_group__set_attribut(Pt_fg,attrib)
+      IF (PRESENT(OK)) ok=.TRUE.
+    ELSE
+      IF (.NOT.PRESENT(OK)) THEN
+        WRITE(message,*) 'file group id :',id,' is undefined'
+        CALL error('mod_file_group::file_group__set_attribut')
+      ELSE
+        OK=.FALSE.
+      ENDIF
+    ENDIF 
+    
+  END SUBROUTINE file_group__set_attribut_id
+  
+  SUBROUTINE file_group__set_attribut_pt(pt_fg,attrib)
+  USE mod_attribut
+  USE mod_object
+  IMPLICIT NONE
+    TYPE(file_group),POINTER :: Pt_fg
+    TYPE(attribut),INTENT(IN) :: attrib
+     
+    IF (attrib%object==file_object) THEN
+      CALL file__set_attribut(Pt_fg%default_attribut,attrib)
+    ENDIF
+    
+  END SUBROUTINE file_group__set_attribut_pt
+  
+      
   RECURSIVE SUBROUTINE file_group__new(Pt_fg,Id)
   USE string_function
@@ -89,5 +135,5 @@
     TYPE(file_group),POINTER             :: Pt_fg
     TYPE(file_group),POINTER             :: Pt_fg_out
-    CHARACTER(LEN=str_len),OPTIONAL      :: Id
+    CHARACTER(LEN=*),OPTIONAL      :: Id
     
     CALL vector_file_group__get_new(Pt_fg%groups,Pt_fg_out)
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_grid.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_grid.f90	(revision 41)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_grid.f90	(revision 42)
@@ -30,4 +30,8 @@
   TYPE(sorted_list),POINTER,SAVE,PRIVATE     :: Ids 
 
+  INTERFACE grid__set_attribut
+    MODULE PROCEDURE grid__set_attribut_id,grid__set_attribut_pt
+  END INTERFACE
+
 CONTAINS
   INCLUDE 'vector_grid_contains.inc'
@@ -121,23 +125,39 @@
 
 
-  SUBROUTINE grid__set_attribut(id,attrib)
+  SUBROUTINE grid__set_attribut_id(id,attrib,ok)
+  USE mod_attribut
+  USE error_msg
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN)   :: id
+    TYPE(attribut),INTENT(IN)     :: attrib
+    LOGICAL,OPTIONAL,INTENT(OUT)  :: ok
+    
+    TYPE(grid),POINTER              :: Pt_grid
+    INTEGER                         :: Pos
+    LOGICAL                         :: success
+    
+    CALL sorted_list__find(Ids,hash(Id),Pos,success)
+    IF (success) THEN
+      Pt_grid=>grid_ids%at(Pos)%Pt
+      CALL grid__set_attribut_pt(Pt_grid,attrib)
+      IF (PRESENT(OK)) OK=.TRUE.
+    ELSE
+      IF (.NOT.PRESENT(OK)) THEN
+        WRITE(message,*) 'grid id :',id,'is undefined'
+        CALL error('mod_grid::grid__set_attribut')
+      ELSE
+        OK=.FALSE.
+      ENDIF
+    ENDIF  
+  
+  END SUBROUTINE grid__set_attribut_id
+      
+  SUBROUTINE grid__set_attribut_pt(Pt_grid,attrib)
   USE mod_attribut
   USE mod_grid_attribut
   USE error_msg
   IMPLICIT NONE
-    CHARACTER(LEN=*),INTENT(IN) :: id
+    TYPE(grid),POINTER        :: Pt_grid
     TYPE(attribut),INTENT(IN) :: attrib
-
-    TYPE(grid),POINTER              :: Pt_grid
-    INTEGER                         :: Pos
-    LOGICAL                         :: success
-    
-    CALL sorted_list__find(Ids,hash(Id),Pos,success)
-    IF (success) THEN
-      Pt_grid=>grid_ids%at(Pos)%Pt
-    ELSE
-      WRITE(message,*) 'grid id :',id,'is undefined'
-      CALL error('mod_grid::grid__set_attribut')
-    ENDIF  
     
     SELECT CASE(attrib%name)
@@ -148,8 +168,8 @@
      END SELECT
 
-     WRITE(message,*) 'grid id ',id,' : Attribute type is incompatible with the provided value'
+     WRITE(message,*) 'grid attribut ',attrib%name,' : type :',attrib%type,' : Attribute type is incompatible with the provided value'
      CALL error('mod_grid::grid__set_attribut')
     
-  END SUBROUTINE grid__set_attribut
+  END SUBROUTINE grid__set_attribut_pt
   
   SUBROUTINE grid__set_dimension(pt_grid, ni, nj)
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_grid_group.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_grid_group.f90	(revision 41)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_grid_group.f90	(revision 42)
@@ -18,4 +18,8 @@
   TYPE(sorted_list),POINTER,SAVE,PRIVATE     :: Ids 
 
+  INTERFACE grid_group__set_attribut
+    MODULE PROCEDURE grid_group__set_attribut_id,grid_group__set_attribut_pt
+  END INTERFACE
+
 CONTAINS
 
@@ -57,5 +61,49 @@
     
   END SUBROUTINE grid_group__get
-    
+
+
+  SUBROUTINE grid_group__set_attribut_id(id,attrib,Ok)
+  USE mod_attribut
+  USE error_msg
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN) :: id
+    TYPE(attribut),INTENT(IN) :: attrib
+    LOGICAL,OPTIONAL,INTENT(out)  :: Ok
+    
+    TYPE(grid_group),POINTER             :: Pt_gg
+    INTEGER                         :: Pos
+    LOGICAL                         :: success
+    
+    CALL sorted_list__find(Ids,hash(Id),Pos,success)
+    IF (success) THEN
+      Pt_gg=>grid_group_ids%at(Pos)%Pt
+      CALL grid_group__set_attribut(Pt_gg,attrib)
+      IF (PRESENT(OK)) ok=.TRUE.
+    ELSE
+      IF (.NOT.PRESENT(OK)) THEN
+        WRITE(message,*) 'grid group id :',id,'is undefined'
+        CALL error('mod_grid_group::grid_group__set_attribut')
+      ELSE
+        OK=.FALSE.
+      ENDIF
+    ENDIF 
+    
+  END SUBROUTINE grid_group__set_attribut_id
+  
+  SUBROUTINE grid_group__set_attribut_pt(pt_gg,attrib)
+  USE mod_attribut
+  USE mod_object
+  IMPLICIT NONE
+    TYPE(grid_group),POINTER :: Pt_gg
+    TYPE(attribut),INTENT(IN) :: attrib
+     
+    IF (attrib%object==grid_object) THEN
+      CALL grid__set_attribut(pt_gg%default_attribut,attrib)
+    ENDIF
+    
+  END SUBROUTINE grid_group__set_attribut_pt    
+
+
+
   RECURSIVE SUBROUTINE grid_group__new(Pt_gg,Id)
   USE string_function
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_zoom.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_zoom.f90	(revision 41)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_zoom.f90	(revision 42)
@@ -30,4 +30,8 @@
   TYPE(vector_zoom),POINTER,SAVE             :: zoom_Ids
   TYPE(sorted_list),POINTER,SAVE,PRIVATE     :: Ids 
+
+  INTERFACE zoom__set_attribut
+    MODULE PROCEDURE zoom__set_attribut_id,zoom__set_attribut_pt
+  END INTERFACE
   
 CONTAINS
@@ -120,23 +124,39 @@
    END SUBROUTINE zoom__set   
 
- SUBROUTINE zoom__set_attribut(id,attrib)
+  SUBROUTINE zoom__set_attribut_id(id,attrib,ok)
+  USE mod_attribut
+  USE error_msg
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN)   :: id
+    TYPE(attribut),INTENT(IN)     :: attrib
+    LOGICAL,OPTIONAL,INTENT(OUT)  :: ok
+    
+    TYPE(zoom),POINTER              :: Pt_zoom
+    INTEGER                         :: Pos
+    LOGICAL                         :: success
+    
+    CALL sorted_list__find(Ids,hash(Id),Pos,success)
+    IF (success) THEN
+      Pt_zoom=>zoom_ids%at(Pos)%Pt
+      CALL zoom__set_attribut_pt(Pt_zoom,attrib)
+      IF (PRESENT(OK)) OK=.TRUE.
+    ELSE
+      IF (.NOT.PRESENT(OK)) THEN
+        WRITE(message,*) 'zoom id :',id,'is undefined'
+        CALL error('mod_zoom::zoom__set_attribut')
+      ELSE
+        OK=.FALSE.
+      ENDIF
+    ENDIF  
+  
+  END SUBROUTINE zoom__set_attribut_id
+      
+  SUBROUTINE zoom__set_attribut_pt(Pt_zoom,attrib)
   USE mod_attribut
   USE mod_zoom_attribut
   USE error_msg
   IMPLICIT NONE
-    CHARACTER(LEN=*),INTENT(IN) :: id
+    TYPE(zoom),POINTER        :: Pt_zoom
     TYPE(attribut),INTENT(IN) :: attrib
-
-    TYPE(zoom),POINTER             :: Pt_zoom
-    INTEGER                         :: Pos
-    LOGICAL                         :: success
-    
-    CALL sorted_list__find(Ids,hash(Id),Pos,success)
-    IF (success) THEN
-      Pt_zoom=>zoom_ids%at(Pos)%Pt
-    ELSE
-      WRITE(message,*) 'zoom id :',id,'is undefined'
-      CALL error('mod_zoom::zoom__set_attribut')
-    ENDIF  
     
     SELECT CASE(attrib%name)
@@ -155,8 +175,8 @@
      END SELECT
 
-     WRITE(message,*) 'zoom id ',id,' : Attribute type is incompatible with the provided value'
+     WRITE(message,*) 'zoom attribut ',attrib%name,' : type :',attrib%type,' : Attribute type is incompatible with the provided value'
      CALL error('mod_zoom::zoom__set_attribut')
     
-  END SUBROUTINE zoom__set_attribut
+  END SUBROUTINE zoom__set_attribut_pt
 
   SUBROUTINE zoom__get(Id,pt_zoom)
