Index: XMLIO_SERVER/trunk/src/IOSERVER/mod_event_client.f90
===================================================================
--- XMLIO_SERVER/trunk/src/IOSERVER/mod_event_client.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/IOSERVER/mod_event_client.f90	(revision 40)
@@ -287,4 +287,23 @@
 
   
+  SUBROUTINE event__set_attribut(id,attrib)
+  USE iomanager
+  USE mod_attribut
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN) :: id
+    TYPE(attribut),INTENT(IN)   :: attrib
+ 
+    IF (using_server) THEN
+      CALL create_request(event_id_set_attribut)
+      CALL pack(len(id))
+      CALL pack(id)
+      CALL pack(attrib)
+      CALL Finalize_request
+    ELSE
+      CALL iom__set_attribut(id,attrib)
+    ENDIF
+ 
+  END SUBROUTINE event__set_attribut  
+
   SUBROUTINE event__stop_ioserver
   USE iomanager
Index: XMLIO_SERVER/trunk/src/IOSERVER/mod_event_parameters.f90
===================================================================
--- XMLIO_SERVER/trunk/src/IOSERVER/mod_event_parameters.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/IOSERVER/mod_event_parameters.f90	(revision 40)
@@ -16,4 +16,5 @@
   INTEGER, PARAMETER :: event_id_set_grid_type_lmdz    = 114
   INTEGER, PARAMETER :: event_id_write_field1d         = 115
+  INTEGER, PARAMETER :: event_id_set_attribut          = 116
   INTEGER, PARAMETER :: event_id_stop_ioserver         = 999
 END MODULE mod_event_parameters
Index: XMLIO_SERVER/trunk/src/IOSERVER/mod_event_server.f90
===================================================================
--- XMLIO_SERVER/trunk/src/IOSERVER/mod_event_server.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/IOSERVER/mod_event_server.f90	(revision 40)
@@ -64,4 +64,7 @@
       CASE (event_id_write_Field3d)
         CALL event__write_Field3d
+
+      CASE (event_id_set_attribut)
+        CALL event__set_attribut
 
       CASE (event_id_stop_ioserver)
@@ -414,5 +417,24 @@
     
   END SUBROUTINE event__close_io_definition
-    
-    
+  
+  SUBROUTINE event__set_attribut
+   USE mod_attribut
+   IMPLICIT NONE
+     TYPE(attribut) :: attrib
+     INTEGER        :: len_id
+     
+     CALL unpack(len_id)
+     CALL sub_internal
+   CONTAINS
+      
+     SUBROUTINE sub_internal
+       CHARACTER(LEN=len_id) :: id
+       
+       CALL unpack(id)
+       CALL unpack(attrib)
+       CALL iom__set_attribut(id,attrib)
+       CALL attr_deallocate(attrib)
+     END SUBROUTINE sub_internal
+  END SUBROUTINE event__set_attribut    
+
 END MODULE mod_event_server   
Index: XMLIO_SERVER/trunk/src/IOSERVER/mod_interface_ioipsl.f90
===================================================================
--- XMLIO_SERVER/trunk/src/IOSERVER/mod_interface_ioipsl.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/IOSERVER/mod_interface_ioipsl.f90	(revision 40)
@@ -50,5 +50,5 @@
     INTEGER :: i,j
     CHARACTER(LEN=20) :: direction
-     
+    CHARACTER(LEN=255) :: full_name
     CALL xmlio__close_definition 
     
@@ -70,7 +70,9 @@
       IF (pt_zoom%ni_loc*pt_zoom%nj_loc > 0) THEN
         
+        full_name=TRIM(pt_file%name)
+        IF (pt_file%has_name_suffix) full_name=TRIM(full_name)//TRIM(pt_file%name_suffix) 
         IF ( (pt_zoom%ni_loc == pt_zoom%ni_glo) .AND. (pt_zoom%nj_loc == pt_zoom%nj_glo) ) THEN 
 
-          CALL histbeg(TRIM(pt_file%name),pt_domain%ni,pt_domain%lon, pt_domain%nj, pt_domain%lat, & 
+          CALL histbeg(TRIM(full_name),pt_domain%ni,pt_domain%lon, pt_domain%nj, pt_domain%lat, & 
                      pt_zoom%ibegin_loc, pt_zoom%ni_loc,pt_zoom%jbegin_loc,pt_zoom%nj_loc,         &
                      initial_timestep, initial_date, timestep_value,                               &
@@ -79,5 +81,5 @@
 
           CALL set_ioipsl_domain_id(pt_grid,nb_server,server_rank,ioipsl_domain_id)
-          CALL histbeg(TRIM(pt_file%name),pt_domain%ni,pt_domain%lon, pt_domain%nj, pt_domain%lat,  &
+          CALL histbeg(TRIM(full_name),pt_domain%ni,pt_domain%lon, pt_domain%nj, pt_domain%lat,  &
                      pt_zoom%ibegin_loc, pt_zoom%ni_loc,pt_zoom%jbegin_loc,pt_zoom%nj_loc,          &
                      initial_timestep, initial_date, timestep_value,                                &
Index: XMLIO_SERVER/trunk/src/IOSERVER/mod_iomanager.f90
===================================================================
--- XMLIO_SERVER/trunk/src/IOSERVER/mod_iomanager.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/IOSERVER/mod_iomanager.f90	(revision 40)
@@ -383,5 +383,36 @@
     
   END SUBROUTINE iom__Finalize
- 
+
+
+  SUBROUTINE iom__set_attribut(id,attrib)
+  USE mod_attribut
+  USE mod_object
+  USE mod_field
+  USE mod_file
+  USE mod_axis
+  USE mod_grid
+  USE mod_zoom
+  IMPLICIT NONE
+    CHARACTER(LEN=*) :: id
+    TYPE(attribut)   :: attrib  
+
+    IF (current_rank==nb_client) THEN
+    
+      SELECT CASE(attrib%object)
+        CASE(field_object)
+          CALL field__set_attribut(id,attrib)
+        CASE(file_object)
+          CALL file__set_attribut(id,attrib)
+        CASE(axis_object)
+          CALL axis__set_attribut(id,attrib)
+        CASE(grid_object)
+          CALL grid__set_attribut(id,attrib)
+        CASE(zoom_object)
+          CALL zoom__set_attribut(id,attrib)
+      END SELECT
+    ENDIF
+    
+  END SUBROUTINE iom__set_attribut
+   
 END MODULE iomanager 
  
Index: XMLIO_SERVER/trunk/src/IOSERVER/mod_pack.f90
===================================================================
--- XMLIO_SERVER/trunk/src/IOSERVER/mod_pack.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/IOSERVER/mod_pack.f90	(revision 40)
@@ -9,5 +9,6 @@
                        pack_i,pack_i1,pack_i2,pack_i3,pack_i4,                 &
                        pack_l,pack_l1,pack_l2,pack_l3,pack_l4,                 &
-                       pack_c,pack_c1,pack_c2,pack_c3,pack_c4
+                       pack_c,pack_c1,pack_c2,pack_c3,pack_c4,                 &
+                       pack_attr
     END INTERFACE pack
 
@@ -16,5 +17,6 @@
                        unpack_i,unpack_i1,unpack_i2,unpack_i3,unpack_i4,       &
                        unpack_l,unpack_l1,unpack_l2,unpack_l3,unpack_l4,       &
-                       unpack_c,unpack_c1,unpack_c2,unpack_c3,unpack_c4
+                       unpack_c,unpack_c1,unpack_c2,unpack_c3,unpack_c4,       &
+                       unpack_attr
     END INTERFACE unpack
 
@@ -466,3 +468,136 @@
      END SUBROUTINE unpack_field4
       
+     SUBROUTINE pack_attr(attrib)
+     USE mod_attribut
+     USE mod_stdtype
+     IMPLICIT NONE
+       TYPE(attribut) :: attrib
+
+       CALL pack(attrib%object)
+       CALL pack(attrib%name)
+       CALL pack(attrib%type)
+       CALL pack(attrib%dim)
+       CALL pack(attrib%ndim)
+       CALL pack(attrib%string_len)
+              
+       SELECT CASE(attrib%type)
+         CASE (integer0)
+           CALL pack(attrib%integer0_ptr)
+         CASE (integer1)
+           CALL pack(attrib%integer1_ptr)
+         CASE (integer2)
+           CALL pack(attrib%integer2_ptr)
+         CASE (real0)
+           CALL pack(attrib%real0_ptr)
+         CASE (real1)
+           CALL pack(attrib%real1_ptr)
+         CASE (real2)
+           CALL pack(attrib%real2_ptr)
+         CASE (logical0)
+           CALL pack(attrib%logical0_ptr)
+         CASE (logical1)
+           CALL pack(attrib%logical1_ptr)
+         CASE (logical2)
+           CALL pack(attrib%logical2_ptr)
+         CASE (string0)
+           CALL pack_string0(attrib%string0_ptr)
+         CASE (string1)
+           CALL pack_string1(attrib%string1_ptr)
+         CASE (string2)
+           CALL pack(attrib%string2_ptr)
+       END SELECT
+
+     CONTAINS
+
+       SUBROUTINE pack_string0(str)
+         CHARACTER(LEN=attrib%string_len) ::str
+           CALL pack(str)
+       END SUBROUTINE
+
+       SUBROUTINE pack_string1(str)
+         CHARACTER(LEN=attrib%string_len) ::str(:)
+           CALL pack(str)
+       END SUBROUTINE
+       
+       SUBROUTINE pack_string2(str)
+         CHARACTER(LEN=attrib%string_len) ::str(:,:)
+           CALL pack(str)
+       END SUBROUTINE
+
+     END SUBROUTINE pack_attr  
+
+     SUBROUTINE unpack_attr(attrib)
+     USE mod_attribut
+     USE mod_stdtype
+     IMPLICIT NONE
+       TYPE(attribut) :: attrib
+
+       CALL unpack(attrib%object)
+       CALL unpack(attrib%name)
+       CALL unpack(attrib%type)
+       CALL unpack(attrib%dim)
+       CALL unpack(attrib%ndim)
+       CALL unpack(attrib%string_len)
+              
+       SELECT CASE(attrib%type)
+         CASE (integer0)
+           ALLOCATE(attrib%integer0_ptr)
+           CALL unpack(attrib%integer0_ptr)
+         CASE (integer1)
+           ALLOCATE(attrib%integer1_ptr(attrib%dim(1)))
+           CALL unpack(attrib%integer1_ptr)
+         CASE (integer2)
+           ALLOCATE(attrib%integer2_ptr(attrib%dim(1),attrib%dim(2)))
+           CALL unpack(attrib%integer2_ptr)
+         CASE (real0)
+           ALLOCATE(attrib%real0_ptr)
+           CALL unpack(attrib%real0_ptr)
+         CASE (real1)
+           ALLOCATE(attrib%real1_ptr(attrib%dim(1)))
+           CALL unpack(attrib%real1_ptr)
+         CASE (real2)
+           ALLOCATE(attrib%real2_ptr(attrib%dim(1),attrib%dim(2)))
+         CASE (logical0)
+           ALLOCATE(attrib%logical0_ptr)
+           CALL unpack(attrib%logical0_ptr)
+         CASE (logical1)
+           ALLOCATE(attrib%logical1_ptr(attrib%dim(1)))
+           CALL unpack(attrib%logical1_ptr)
+         CASE (logical2)
+           ALLOCATE(attrib%logical2_ptr(attrib%dim(1),attrib%dim(2)))
+           CALL unpack(attrib%logical2_ptr)
+         CASE (string0)
+           ALLOCATE(attrib%string0_ptr)
+           CALL unpack_string0
+         CASE (string1)
+           ALLOCATE(attrib%string1_ptr(attrib%dim(1)))
+           CALL unpack_string1
+         CASE (string2)
+           ALLOCATE(attrib%string2_ptr(attrib%dim(1),attrib%dim(2)))
+           CALL unpack_string2
+       END SELECT
+
+     CONTAINS
+
+       SUBROUTINE unpack_string0
+         CHARACTER(LEN=attrib%string_len) ::str
+           CALL unpack(str)
+           attrib%string0_ptr=str
+       END SUBROUTINE
+
+       SUBROUTINE unpack_string1
+         CHARACTER(LEN=attrib%string_len) ::str(attrib%dim(1))
+           CALL unpack(str)
+           attrib%string1_ptr=str
+       END SUBROUTINE
+       
+       SUBROUTINE unpack_string2
+         CHARACTER(LEN=attrib%string_len) ::str(attrib%dim(1),attrib%dim(2))
+           CALL unpack(str)
+           attrib%string2_ptr=str
+       END SUBROUTINE
+
+     END SUBROUTINE unpack_attr              
+
+     
   END MODULE mod_pack
Index: XMLIO_SERVER/trunk/src/IOSERVER/server.f90
===================================================================
--- XMLIO_SERVER/trunk/src/IOSERVER/server.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/IOSERVER/server.f90	(revision 40)
@@ -8,4 +8,5 @@
   USE mod_interface_ioipsl
   USE mod_ioserver_namelist
+  
   IMPLICIT NONE
   INCLUDE 'mpif.h'
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_attribut.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_attribut.f90	(revision 40)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_attribut.f90	(revision 40)
@@ -0,0 +1,283 @@
+MODULE mod_attribut
+  USE mod_xmlio_parameters
+  USE mod_attribut_list
+  USE mod_stdtype
+  USE string_function  
+  
+  TYPE, PUBLIC :: attribut
+    INTEGER :: object
+    INTEGER :: name
+    INTEGER :: type
+    INTEGER :: dim(7)
+    INTEGER :: ndim
+    INTEGER,POINTER :: integer0_ptr
+    INTEGER,POINTER :: integer1_ptr(:)
+    INTEGER,POINTER :: integer2_ptr(:,:)
+    REAL,POINTER    :: real0_ptr
+    REAL,POINTER    :: real1_ptr(:)
+    REAL,POINTER    :: real2_ptr(:,:)
+    LOGICAL,POINTER :: logical0_ptr
+    LOGICAL,POINTER :: logical1_ptr(:)
+    LOGICAL,POINTER :: logical2_ptr(:,:)
+    
+    CHARACTER(LEN=str_len),POINTER :: string0_ptr
+    CHARACTER(LEN=str_len),POINTER :: string1_ptr(:)
+    CHARACTER(LEN=str_len),POINTER :: string2_ptr(:,:)
+    INTEGER                        :: string_len
+    
+  END TYPE attribut
+  
+  INTERFACE attr
+    MODULE PROCEDURE attr_int0,attr_int1,attr_int2,              &
+                     attr_real0,attr_real1,attr_real2,           &
+                     attr_logical0,attr_logical1,attr_logical2,  &
+                     attr_string0,attr_string1,attr_string2
+  END INTERFACE
+                     
+CONTAINS
+  
+  FUNCTION attr_get_object(attr_name)
+  USE mod_attribut_list
+  USE mod_object
+  USE error_msg
+  IMPLICIT NONE
+    INTEGER, INTENT(IN) :: attr_name
+    INTEGER             :: attr_get_object
+    
+    IF (attr_name > field__begin .AND. attr_name < field__end) THEN
+      attr_get_object=field_object
+      RETURN
+    ENDIF
+    
+    IF (attr_name > file__begin .AND. attr_name < file__end) THEN
+      attr_get_object=file_object
+      RETURN
+    ENDIF
+
+    IF (attr_name > grid__begin .AND. attr_name < grid__end) THEN
+      attr_get_object=grid_object
+      RETURN
+    ENDIF
+
+    IF (attr_name > axis__begin .AND. attr_name < axis__end) THEN
+      attr_get_object=axis_object
+      RETURN
+    ENDIF
+    
+    IF (attr_name > zoom__begin .AND. attr_name < zoom__end) THEN
+      attr_get_object=zoom_object
+      RETURN
+    ENDIF
+
+    WRITE (message,*) 'Attribut name value :',attr_name,'is undefined'
+    CALL error("mod_attributd::attr_get_object") 
+   
+  END FUNCTION attr_get_object 
+
+  SUBROUTINE attr_deallocate(attrib)
+  IMPLICIT NONE
+  TYPE(attribut) :: attrib
+
+    SELECT CASE(attrib%type)
+       CASE (integer0)
+         DEALLOCATE(attrib%integer0_ptr)
+       CASE (integer1)
+         DEALLOCATE(attrib%integer1_ptr)
+       CASE (integer2)
+         DEALLOCATE(attrib%integer2_ptr)
+       CASE (real0)
+         DEALLOCATE(attrib%real0_ptr)
+       CASE (real1)
+         DEALLOCATE(attrib%real1_ptr)
+       CASE (real2)
+         DEALLOCATE(attrib%real2_ptr)
+       CASE (logical0)
+         DEALLOCATE(attrib%logical0_ptr)
+       CASE (logical1)
+         DEALLOCATE(attrib%logical1_ptr)
+       CASE (logical2)
+         DEALLOCATE(attrib%logical2_ptr)
+       CASE (string0)
+         DEALLOCATE(attrib%string0_ptr)
+       CASE (string1)
+         DEALLOCATE(attrib%string1_ptr)
+       CASE (string2)
+         DEALLOCATE(attrib%string2_ptr)
+    END SELECT         
+  
+  END SUBROUTINE attr_deallocate
+
+  FUNCTION attr_int0(attr_name,value) 
+  USE mod_stdtype
+    IMPLICIT NONE
+    INTEGER :: attr_name
+    INTEGER,TARGET :: value
+    
+    TYPE(attribut) :: attr_int0
+    attr_int0%object=attr_get_object(attr_name) 
+    attr_int0%name=attr_name
+    attr_int0%type=integer0
+    attr_int0%integer0_ptr=>value
+    
+  END FUNCTION attr_int0
+
+  FUNCTION attr_int1(attr_name,value) 
+  USE mod_stdtype
+    IMPLICIT NONE
+    INTEGER :: attr_name
+    INTEGER,TARGET :: value(:)
+    
+    TYPE(attribut) :: attr_int1
+    attr_int1%object=attr_get_object(attr_name) 
+    attr_int1%name=attr_name
+    attr_int1%type=integer1
+    attr_int1%integer1_ptr=>value
+    
+  END FUNCTION attr_int1    
+
+  FUNCTION attr_int2(attr_name,value) 
+  USE mod_stdtype
+    IMPLICIT NONE
+    INTEGER :: attr_name
+    INTEGER,TARGET :: value(:,:)
+    
+    TYPE(attribut) :: attr_int2
+    attr_int2%object=attr_get_object(attr_name) 
+    attr_int2%name=attr_name
+    attr_int2%type=integer2
+    attr_int2%integer2_ptr=>value
+    
+  END FUNCTION attr_int2
+          
+
+  FUNCTION attr_real0(attr_name,value) 
+  USE mod_stdtype
+    IMPLICIT NONE
+    INTEGER :: attr_name
+    REAL,TARGET :: value
+    
+    TYPE(attribut) :: attr_real0
+    attr_real0%object=attr_get_object(attr_name) 
+    attr_real0%name=attr_name
+    attr_real0%type=real0
+    attr_real0%real0_ptr=>value
+    
+  END FUNCTION attr_real0
+
+  FUNCTION attr_real1(attr_name,value) 
+  USE mod_stdtype
+    IMPLICIT NONE
+    INTEGER :: attr_name
+    REAL,TARGET :: value(:)
+    
+    TYPE(attribut) :: attr_real1
+    attr_real1%object=attr_get_object(attr_name) 
+    attr_real1%name=attr_name
+    attr_real1%type=real1
+    attr_real1%real1_ptr=>value
+    
+  END FUNCTION attr_real1    
+
+  FUNCTION attr_real2(attr_name,value) 
+  USE mod_stdtype
+    IMPLICIT NONE
+    INTEGER :: attr_name
+    REAL,TARGET :: value(:,:)
+    
+    TYPE(attribut) :: attr_real2
+    attr_real2%object=attr_get_object(attr_name) 
+    attr_real2%name=attr_name
+    attr_real2%type=REAL2
+    attr_real2%real2_ptr=>value
+    
+  END FUNCTION attr_real2
+  
+    FUNCTION attr_logical0(attr_name,value) 
+  USE mod_stdtype
+    IMPLICIT NONE
+    INTEGER :: attr_name
+    LOGICAL,TARGET :: value
+    
+    TYPE(attribut) :: attr_logical0
+    attr_logical0%object=attr_get_object(attr_name) 
+    attr_logical0%name=attr_name
+    attr_logical0%type=logical0
+    attr_logical0%logical0_ptr=>value
+    
+  END FUNCTION attr_logical0
+
+  FUNCTION attr_logical1(attr_name,value) 
+  USE mod_stdtype
+    IMPLICIT NONE
+    INTEGER :: attr_name
+    LOGICAL,TARGET :: value(:)
+    
+    TYPE(attribut) :: attr_logical1
+    attr_logical1%object=attr_get_object(attr_name) 
+    attr_logical1%name=attr_name
+    attr_logical1%type=logical1
+    attr_logical1%logical1_ptr=>value
+    
+  END FUNCTION attr_logical1    
+
+  FUNCTION attr_logical2(attr_name,value) 
+  USE mod_stdtype
+    IMPLICIT NONE
+    INTEGER :: attr_name
+    LOGICAL,TARGET :: value(:,:)
+    
+    TYPE(attribut) :: attr_logical2
+    attr_logical2%object=attr_get_object(attr_name) 
+    attr_logical2%name=attr_name
+    attr_logical2%type=logical2
+    attr_logical2%logical2_ptr=>value
+    
+  END FUNCTION attr_logical2
+  
+
+  FUNCTION attr_string0(attr_name,value) 
+  USE mod_stdtype
+    IMPLICIT NONE
+    INTEGER :: attr_name
+    CHARACTER(LEN=*),TARGET :: value
+    TYPE(attribut) :: attr_string0
+
+      attr_string0%object=attr_get_object(attr_name) 
+      attr_string0%name=attr_name
+      attr_string0%type=string0
+      attr_string0%string_len=LEN(value)
+      attr_string0%string0_ptr=>value
+    
+  END FUNCTION attr_string0
+
+  FUNCTION attr_string1(attr_name,value) 
+  USE mod_stdtype
+    IMPLICIT NONE
+    INTEGER :: attr_name
+    CHARACTER(LEN=*),TARGET :: value(:)
+    
+    TYPE(attribut) :: attr_string1
+    attr_string1%object=attr_get_object(attr_name) 
+    attr_string1%name=attr_name
+    attr_string1%type=string1
+    attr_string1%string_len=LEN(value)
+    attr_string1%string1_ptr=>value
+    
+  END FUNCTION attr_string1    
+
+  FUNCTION attr_string2(attr_name,value) 
+  USE mod_stdtype
+    IMPLICIT NONE
+    INTEGER :: attr_name
+    CHARACTER(LEN=*),TARGET :: value(:,:)
+    
+    TYPE(attribut) :: attr_string2
+    attr_string2%object=attr_get_object(attr_name) 
+    attr_string2%name=attr_name
+    attr_string2%type=string2
+    attr_string2%string_len=LEN(value)
+    attr_string2%string2_ptr=>value
+    
+  END FUNCTION attr_string2
+ 
+END MODULE mod_attribut
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_attribut_list.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_attribut_list.f90	(revision 40)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_attribut_list.f90	(revision 40)
@@ -0,0 +1,7 @@
+MODULE mod_attribut_list
+  USE mod_field_attribut
+  USE mod_file_attribut
+  USE mod_axis_attribut
+  USE mod_grid_attribut
+  USE mod_zoom_attribut
+END MODULE mod_attribut_list
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_axis.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_axis.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_axis.f90	(revision 40)
@@ -137,4 +137,44 @@
   END SUBROUTINE axis__set
 
+  SUBROUTINE axis__set_attribut(id,attrib)
+  USE mod_attribut
+  USE mod_axis_attribut
+  USE error_msg
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN) :: id
+    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)
+      CASE (axis__name)
+        IF (attrib%type==string0) CALL  axis__set(pt_axis,name=attrib%string0_ptr) ; RETURN
+      CASE (axis__description)
+        IF (attrib%type==string0) CALL  axis__set(pt_axis,description=attrib%string0_ptr) ; RETURN
+      CASE (axis__unit)
+        IF (attrib%type==string0) CALL  axis__set(pt_axis,unit=attrib%string0_ptr) ; RETURN
+      CASE (axis__size)
+        IF (attrib%type==integer0) CALL  axis__set(pt_axis,a_size=attrib%integer0_ptr) ; RETURN
+      CASE (axis__values)
+        IF (attrib%type==real1) CALL  axis__set(pt_axis,values=attrib%real1_ptr) ; RETURN
+      CASE (axis__positive)
+        IF (attrib%type==logical0) CALL  axis__set(pt_axis,positive=attrib%logical0_ptr) ; RETURN
+       END SELECT
+
+     WRITE(message,*) 'axis id ',id,' : Attribute type is incompatible with the provided value'
+     CALL error('mod_axis::axis__set_attribut')
+    
+  END SUBROUTINE axis__set_attribut
+  
   SUBROUTINE axis__print(pt_axis)
   IMPLICIT NONE
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_axis_attribut.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_axis_attribut.f90	(revision 40)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_axis_attribut.f90	(revision 40)
@@ -0,0 +1,15 @@
+MODULE mod_axis_attribut
+  USE mod_object
+  
+  INTEGER,PARAMETER :: axis__begin = axis_object + 10
+  
+  INTEGER,PARAMETER :: axis__name = axis_object + 11
+  INTEGER,PARAMETER :: axis__description = axis_object + 12
+  INTEGER,PARAMETER :: axis__unit = axis_object + 13
+  INTEGER,PARAMETER :: axis__size = axis_object + 14
+  INTEGER,PARAMETER :: axis__positive = axis_object + 15
+  INTEGER,PARAMETER :: axis__values = axis_object + 16
+
+  INTEGER,PARAMETER :: axis__end = axis_object + 17
+  
+END MODULE mod_axis_attribut
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_field.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_field.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_field.f90	(revision 40)
@@ -206,4 +206,55 @@
   END SUBROUTINE field__set
 
+  SUBROUTINE field__set_attribut(id,attrib)
+  USE mod_attribut
+  USE mod_field_attribut
+  USE error_msg
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN) :: id
+    TYPE(attribut),INTENT(IN) :: attrib
+
+    TYPE(field),POINTER             :: Pt_field
+    INTEGER                         :: Pos
+    LOGICAL                         :: success
+    
+    CALL sorted_list__find(Ids,hash(Id),Pos,success)
+    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')
+    ENDIF  
+    
+    SELECT CASE(attrib%name)
+      CASE (field__name)
+        IF (attrib%type==string0) CALL  field__set(pt_field,name=attrib%string0_ptr) ; RETURN
+      CASE (field__field_ref)
+        IF (attrib%type==string0) CALL  field__set(pt_field,ref=attrib%string0_ptr) ; RETURN
+      CASE (field__description)
+        IF (attrib%type==string0) CALL  field__set(pt_field,description=attrib%string0_ptr) ; RETURN
+      CASE (field__unit)
+        IF (attrib%type==string0) CALL  field__set(pt_field,unit=attrib%string0_ptr) ; RETURN
+      CASE (field__operation)
+        IF (attrib%type==string0) CALL  field__set(pt_field,operation=attrib%string0_ptr) ; RETURN
+      CASE (field__freq_op)
+        IF (attrib%type==integer0) CALL  field__set(pt_field,freq_op=attrib%integer0_ptr) ; RETURN
+      CASE (field__axis_ref)
+        IF (attrib%type==string0) CALL  field__set(pt_field,axis_ref=attrib%string0_ptr) ; RETURN
+      CASE (field__grid_ref)
+        IF (attrib%type==string0) CALL  field__set(pt_field,grid_ref=attrib%string0_ptr) ; RETURN
+      CASE (field__zoom_ref)
+        IF (attrib%type==string0) CALL  field__set(pt_field,zoom_ref=attrib%string0_ptr) ; RETURN
+      CASE (field__prec)
+        IF (attrib%type==integer0) CALL  field__set(pt_field,prec=attrib%integer0_ptr) ; RETURN
+      CASE (field__level)
+        IF (attrib%type==integer0) CALL  field__set(pt_field,level=attrib%integer0_ptr) ; RETURN
+      CASE (field__enabled)
+        IF (attrib%type==logical0) CALL  field__set(pt_field,enabled=attrib%logical0_ptr) ; RETURN
+     END SELECT
+
+     WRITE(message,*) 'field id ',id,' : Attribute type is incompatible with the provided value'
+     CALL error('mod_field::field__set_attribut')
+    
+  END SUBROUTINE field__set_attribut    
 
   SUBROUTINE field__print(pt_field)
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_field_attribute.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_field_attribute.f90	(revision 40)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_field_attribute.f90	(revision 40)
@@ -0,0 +1,21 @@
+MODULE mod_field_attribut
+  USE mod_object
+
+  INTEGER,PARAMETER :: field__begin = field_object + 10
+  
+  INTEGER,PARAMETER :: field__name = field_object + 11
+  INTEGER,PARAMETER :: field__description = field_object + 12
+  INTEGER,PARAMETER :: field__unit = field_object + 13
+  INTEGER,PARAMETER :: field__operation = field_object + 14
+  INTEGER,PARAMETER :: field__freq_op = field_object + 15
+  INTEGER,PARAMETER :: field__axis_ref = field_object + 16
+  INTEGER,PARAMETER :: field__grid_ref = field_object + 17
+  INTEGER,PARAMETER :: field__zoom_ref = field_object + 18
+  INTEGER,PARAMETER :: field__level = field_object + 19
+  INTEGER,PARAMETER :: field__prec = field_object + 20
+  INTEGER,PARAMETER :: field__field_ref = field_object + 21
+  INTEGER,PARAMETER :: field__enabled = field_object + 22
+
+  INTEGER,PARAMETER :: field__end = field_object + 23
+  
+END MODULE mod_field_attribut
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_file.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_file.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_file.f90	(revision 40)
@@ -10,4 +10,6 @@
     CHARACTER(len=str_len)           :: name
     LOGICAL                          :: has_name
+    CHARACTER(len=str_len)           :: name_suffix
+    LOGICAL                          :: has_name_suffix
     CHARACTER(len=str_len)           :: description
     LOGICAL                          :: has_description
@@ -79,4 +81,5 @@
    pt_file%has_id           = .FALSE.
    pt_file%has_name         = .FALSE.
+   pt_file%has_name_suffix  = .FALSE.
    pt_file%has_description  = .FALSE.
    pt_file%has_output_freq  = .FALSE.
@@ -93,8 +96,9 @@
   END SUBROUTINE file__new
 
-  SUBROUTINE file__set(pt_file, name, description, output_freq, output_level,enabled)
+  SUBROUTINE file__set(pt_file, name, name_suffix, description, output_freq, output_level,enabled)
   IMPLICIT NONE
     TYPE(file), POINTER         :: pt_file
     CHARACTER(len=*)  ,OPTIONAL :: name
+    CHARACTER(len=*)  ,OPTIONAL :: name_suffix
     CHARACTER(len=*)  ,OPTIONAL :: description
     INTEGER           ,OPTIONAL :: output_freq
@@ -107,4 +111,9 @@
     ENDIF
 
+    IF (PRESENT(name_suffix)) THEN
+        pt_file%name_suffix=TRIM(ADJUSTL(name_suffix))
+        pt_file%has_name_suffix = .TRUE.
+    ENDIF
+
     IF (PRESENT(description)) THEN
         pt_file%description=TRIM(ADJUSTL(description))
@@ -129,4 +138,45 @@
   END SUBROUTINE file__set
 
+  SUBROUTINE file__set_attribut(id,attrib)
+  USE mod_attribut
+  USE mod_file_attribut
+  USE error_msg
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN) :: id
+    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)
+      CASE (file__name)
+        IF (attrib%type==string0) CALL  file__set(pt_file,name=attrib%string0_ptr) ; RETURN
+      CASE (file__name_suffix)
+        IF (attrib%type==string0) CALL  file__set(pt_file,name_suffix=attrib%string0_ptr) ; RETURN
+      CASE (file__description)
+        IF (attrib%type==string0) CALL  file__set(pt_file,description=attrib%string0_ptr) ; RETURN
+      CASE (file__output_freq)
+        IF (attrib%type==integer0) CALL  file__set(pt_file,output_freq=attrib%integer0_ptr) ; RETURN
+      CASE (file__output_level)
+        IF (attrib%type==integer0) CALL  file__set(pt_file,output_level=attrib%integer0_ptr) ; RETURN
+      CASE (file__enabled)
+        IF (attrib%type==logical0) CALL  file__set(pt_file,enabled=attrib%logical0_ptr) ; RETURN
+     END SELECT
+
+     WRITE(message,*) 'file id ',id,' : Attribute type is incompatible with the provided value'
+     CALL error('mod_file::file__set_attribut')
+    
+  END SUBROUTINE file__set_attribut
+  
+     
   SUBROUTINE file__get_field_list(pt_file,pt_field_list)
   IMPLICIT NONE
@@ -153,4 +203,10 @@
     ELSE
       PRINT *,"name undefined"
+    ENDIF
+
+    IF (pt_file%has_name_suffix) THEN
+      PRINT *,"name_suffix = ",TRIM(pt_file%name_suffix)
+    ELSE
+      PRINT *,"name_suffix undefined"
     ENDIF
     
@@ -199,4 +255,14 @@
     ELSE
         pt_file_out%has_name=.FALSE.
+    ENDIF
+
+    IF (pt_file_in%has_name_suffix) THEN
+        pt_file_out%name_suffix=pt_file_in%name_suffix
+        pt_file_out%has_name_suffix=.TRUE.
+    ELSE IF ( pt_file_default%has_name_suffix) THEN
+        pt_file_out%name_suffix=pt_file_default%name_suffix
+        pt_file_out%has_name_suffix=.TRUE.
+    ELSE
+        pt_file_out%has_name_suffix=.FALSE.
     ENDIF
         
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_file_attribut.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_file_attribut.f90	(revision 40)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_file_attribut.f90	(revision 40)
@@ -0,0 +1,16 @@
+MODULE mod_file_attribut
+  USE mod_object
+  
+  INTEGER,PARAMETER :: file__begin = file_object + 10
+    
+  INTEGER,PARAMETER :: file__name = file_object + 11
+  INTEGER,PARAMETER :: file__description = file_object + 12
+  INTEGER,PARAMETER :: file__output_freq = file_object + 13
+  INTEGER,PARAMETER :: file__output_level = file_object + 14
+  INTEGER,PARAMETER :: file__enabled = file_object + 15
+  INTEGER,PARAMETER :: file__name_suffix = file_object + 16
+
+  INTEGER,PARAMETER :: file__end = file_object + 17
+
+END MODULE mod_file_attribut
+  
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_grid.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_grid.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_grid.f90	(revision 40)
@@ -120,4 +120,37 @@
   END SUBROUTINE grid__set
 
+
+  SUBROUTINE grid__set_attribut(id,attrib)
+  USE mod_attribut
+  USE mod_grid_attribut
+  USE error_msg
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN) :: id
+    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)
+      CASE (grid__name)
+        IF (attrib%type==string0) CALL  grid__set(pt_grid,name=attrib%string0_ptr) ; RETURN
+      CASE (grid__description)
+        IF (attrib%type==string0) CALL  grid__set(pt_grid,description=attrib%string0_ptr) ; RETURN
+     END SELECT
+
+     WRITE(message,*) 'grid id ',id,' : Attribute type is incompatible with the provided value'
+     CALL error('mod_grid::grid__set_attribut')
+    
+  END SUBROUTINE grid__set_attribut
+  
   SUBROUTINE grid__set_dimension(pt_grid, ni, nj)
   IMPLICIT NONE
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_grid_attribut.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_grid_attribut.f90	(revision 40)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_grid_attribut.f90	(revision 40)
@@ -0,0 +1,13 @@
+MODULE mod_grid_attribut
+  USE mod_object
+  
+  INTEGER,PARAMETER :: grid__begin = grid_object + 10
+
+  INTEGER,PARAMETER :: grid__name = grid_object + 11
+  INTEGER,PARAMETER :: grid__description = grid_object + 12
+
+  INTEGER,PARAMETER :: grid__end = grid_object + 13
+
+  
+END MODULE mod_grid_attribut
+  
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_object.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_object.f90	(revision 40)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_object.f90	(revision 40)
@@ -0,0 +1,14 @@
+MODULE mod_object
+
+  INTEGER,PARAMETER :: field_object=100
+  INTEGER,PARAMETER :: field_group_object=200
+  INTEGER,PARAMETER :: file_object=300
+  INTEGER,PARAMETER :: file_group_object=400
+  INTEGER,PARAMETER :: axis_object=500
+  INTEGER,PARAMETER :: axis_group_object=600
+  INTEGER,PARAMETER :: grid_object=700
+  INTEGER,PARAMETER :: grid_group_object=800
+  INTEGER,PARAMETER :: zoom_object=900
+  INTEGER,PARAMETER :: zoom_group_object=1000
+  
+END MODULE mod_object
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_parse_xml.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_parse_xml.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_parse_xml.f90	(revision 40)
@@ -750,4 +750,9 @@
     ENDIF
 
+    IF (is_attribute_exist(node,"name_suffix")) THEN
+      value =  getAttribute(node,"name_suffix")
+      CALL file__set(pt_file,name_suffix=TRIM(value))
+    ENDIF
+
     IF (is_attribute_exist(node,"description")) THEN
       value =  getAttribute(node,"description")
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_stdtype.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_stdtype.f90	(revision 40)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_stdtype.f90	(revision 40)
@@ -0,0 +1,48 @@
+MODULE mod_stdtype
+
+  INTEGER,PARAMETER :: integer0 = 0
+  INTEGER,PARAMETER :: integer1 = 1
+  INTEGER,PARAMETER :: integer2 = 2
+  INTEGER,PARAMETER :: integer3 = 3
+  INTEGER,PARAMETER :: integer4 = 4
+  INTEGER,PARAMETER :: integer5 = 5
+  INTEGER,PARAMETER :: integer6 = 6
+  INTEGER,PARAMETER :: integer7 = 7
+  
+  INTEGER,PARAMETER :: real0    = 8
+  INTEGER,PARAMETER :: real1    = 9
+  INTEGER,PARAMETER :: real2    = 10
+  INTEGER,PARAMETER :: real3    = 11
+  INTEGER,PARAMETER :: real4    = 12
+  INTEGER,PARAMETER :: real5    = 13
+  INTEGER,PARAMETER :: real6    = 14
+  INTEGER,PARAMETER :: real7    = 15
+
+  INTEGER,PARAMETER :: logical0 = 16
+  INTEGER,PARAMETER :: logical1 = 17
+  INTEGER,PARAMETER :: logical2 = 18
+  INTEGER,PARAMETER :: logical3 = 19
+  INTEGER,PARAMETER :: logical4 = 20
+  INTEGER,PARAMETER :: logical5 = 21
+  INTEGER,PARAMETER :: logical6 = 22
+  INTEGER,PARAMETER :: logical7 = 23
+  
+  INTEGER,PARAMETER :: string0  = 24
+  INTEGER,PARAMETER :: string1  = 25
+  INTEGER,PARAMETER :: string2  = 26
+  INTEGER,PARAMETER :: string3  = 27
+  INTEGER,PARAMETER :: string4  = 28
+  INTEGER,PARAMETER :: string5  = 29
+  INTEGER,PARAMETER :: string6  = 30
+  INTEGER,PARAMETER :: string7  = 31
+
+  INTEGER,PARAMETER :: char0   = 32
+  INTEGER,PARAMETER :: char1   = 33
+  INTEGER,PARAMETER :: char2   = 34
+  INTEGER,PARAMETER :: char3   = 35
+  INTEGER,PARAMETER :: char4   = 36
+  INTEGER,PARAMETER :: char5   = 37
+  INTEGER,PARAMETER :: char6   = 38
+  INTEGER,PARAMETER :: char7   = 39
+ 
+END MODULE mod_stdtype
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_zoom.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_zoom.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_zoom.f90	(revision 40)
@@ -120,4 +120,43 @@
    END SUBROUTINE zoom__set   
 
+ SUBROUTINE zoom__set_attribut(id,attrib)
+  USE mod_attribut
+  USE mod_zoom_attribut
+  USE error_msg
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN) :: id
+    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)
+      CASE (zoom__name)
+        IF (attrib%type==string0) CALL  zoom__set(pt_zoom,name=attrib%string0_ptr) ; RETURN
+      CASE (zoom__description)
+        IF (attrib%type==string0) CALL  zoom__set(pt_zoom,description=attrib%string0_ptr) ; RETURN
+      CASE (zoom__ni)
+        IF (attrib%type==integer0) CALL  zoom__set(pt_zoom,ni_glo=attrib%integer0_ptr) ; RETURN
+      CASE (zoom__nj)
+        IF (attrib%type==integer0) CALL  zoom__set(pt_zoom,nj_glo=attrib%integer0_ptr) ; RETURN
+      CASE (zoom__ibegin)
+        IF (attrib%type==integer0) CALL  zoom__set(pt_zoom,ibegin_glo=attrib%integer0_ptr) ; RETURN
+      CASE (zoom__jbegin)
+        IF (attrib%type==integer0) CALL  zoom__set(pt_zoom,jbegin_glo=attrib%integer0_ptr) ; RETURN
+     END SELECT
+
+     WRITE(message,*) 'zoom id ',id,' : Attribute type is incompatible with the provided value'
+     CALL error('mod_zoom::zoom__set_attribut')
+    
+  END SUBROUTINE zoom__set_attribut
 
   SUBROUTINE zoom__get(Id,pt_zoom)
Index: XMLIO_SERVER/trunk/src/XMLIO/mod_zoom_attribut.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/mod_zoom_attribut.f90	(revision 40)
+++ XMLIO_SERVER/trunk/src/XMLIO/mod_zoom_attribut.f90	(revision 40)
@@ -0,0 +1,17 @@
+MODULE mod_zoom_attribut
+  USE mod_object
+   
+  INTEGER,PARAMETER :: zoom__begin = zoom_object + 10
+
+  INTEGER,PARAMETER :: zoom__name = zoom_object + 11
+  INTEGER,PARAMETER :: zoom__description = zoom_object + 12
+  INTEGER,PARAMETER :: zoom__ni = zoom_object + 13
+  INTEGER,PARAMETER :: zoom__nj = zoom_object + 14
+  INTEGER,PARAMETER :: zoom__ibegin = zoom_object + 15
+  INTEGER,PARAMETER :: zoom__jbegin = zoom_object + 16
+  
+  INTEGER,PARAMETER :: zoom__end = zoom_object + 17
+
+END MODULE mod_zoom_attribut
+
+
Index: XMLIO_SERVER/trunk/src/XMLIO/string_function.f90
===================================================================
--- XMLIO_SERVER/trunk/src/XMLIO/string_function.f90	(revision 39)
+++ XMLIO_SERVER/trunk/src/XMLIO/string_function.f90	(revision 40)
@@ -6,4 +6,14 @@
 CONTAINS
 
+  FUNCTION stdstr(string)
+  USE mod_xmlio_parameters
+  IMPLICIT NONE
+    CHARACTER(LEN=*),INTENT(IN) :: string
+    CHARACTER(LEN=str_len) :: stdstr
+    
+    stdstr=string
+  END FUNCTION stdstr
+    
+  
   FUNCTION Hash(Str)
   IMPLICIT NONE  
