From 5b6c08e68e94cab82653dff0c74d1725fd2852f4 Mon Sep 17 00:00:00 2001
From: Pedro Vicente Nunes <pvn@hdfgroup.org>
Date: Mon, 16 May 2005 14:08:41 -0500
Subject: [svn-r10747] Purpose: bug fix

Description:
the fortran type integer*1 has become not portable.
define the image fortran datatype as "integer" and make special save, read, and palette functions
that use native integer for a memory type and UCHAR as disk type for the image data
added some more tests with new palette definitions

Solution:

Platforms tested:
linux
solaris

Misc. update:
---
 hl/fortran/src/H5IMfc.c       |   25 +-
 hl/fortran/src/H5IMff.f90     |  214 ++++----
 hl/fortran/src/H5LTf90proto.h |   13 +-
 hl/fortran/src/H5LTfc.c       |    3 +-
 hl/fortran/src/H5LTff.f90     | 1115 ++++++++++++++++++++---------------------
 hl/fortran/src/H5TBfc.c       |    1 -
 hl/fortran/src/H5TBff.f90     |  705 +++++++++++++-------------
 hl/fortran/test/tstimage.f90  |  140 +++---
 hl/fortran/test/tstlite.f90   |   10 +-
 hl/src/H5IM.c                 |  573 +++++++++++++++++++--
 hl/src/H5IM.h                 |   32 +-
 hl/test/pal_rgb.h             |    2 +-
 hl/test/test_image.c          |   95 +++-
 13 files changed, 1742 insertions(+), 1186 deletions(-)

diff --git a/hl/fortran/src/H5IMfc.c b/hl/fortran/src/H5IMfc.c
index fed4111..f4c71cb 100755
--- a/hl/fortran/src/H5IMfc.c
+++ b/hl/fortran/src/H5IMfc.c
@@ -16,7 +16,6 @@
 
 #include "H5IM.h"
 #include "H5LTf90proto.h"
-#include <stdlib.h> 
 
 
 /*-------------------------------------------------------------------------
@@ -44,7 +43,7 @@ nh5immake_image_8bit_c (hid_t_f *loc_id,
                        _fcd name, 
                        hsize_t_f *width,
                        hsize_t_f *height, 
-                       unsigned char *buf)
+                       void *buf)
 {
  int     ret_value = -1;
  herr_t  ret;
@@ -60,11 +59,11 @@ nh5immake_image_8bit_c (hid_t_f *loc_id,
  if (c_name == NULL) return ret_value;
 
 /*
- * Call H5IMmake_image_8bit function.
+ * Call H5IMmake_image_8bitf function.
  */
  c_loc_id = (hid_t)*loc_id;
 
- ret = H5IMmake_image_8bit(c_loc_id,c_name,*width,*height,buf);
+ ret = H5IMmake_image_8bitf(c_loc_id,c_name,*width,*height,buf);
 
  if (ret < 0) return ret_value;
  ret_value = 0;
@@ -94,7 +93,7 @@ int_f
 nh5imread_image_c (hid_t_f *loc_id, 
                    int_f *namelen,
                    _fcd name, 
-                   unsigned char *buf)
+                   void *buf)
 {
  int     ret_value = -1;
  herr_t  ret;
@@ -115,7 +114,7 @@ nh5imread_image_c (hid_t_f *loc_id,
  */
  c_loc_id = (hid_t)*loc_id;
 
- ret = H5IMread_image(c_loc_id,c_name,buf);
+ ret = H5IMread_imagef(c_loc_id,c_name,buf);
 
  if (ret < 0) return ret_value;
  ret_value = 0;
@@ -149,7 +148,7 @@ nh5immake_image_24bit_c (hid_t_f *loc_id,
                          _fcd il, 
                          hsize_t_f *width,
                          hsize_t_f *height,
-                         unsigned char *buf)
+                         void *buf)
 {
  int     ret_value = -1;
  herr_t  ret;
@@ -171,11 +170,11 @@ nh5immake_image_24bit_c (hid_t_f *loc_id,
  if (c_il == NULL) return ret_value;
 
 /*
- * Call H5IMmake_image_24bit function.
+ * Call H5IMmake_image_24bitf function.
  */
  c_loc_id = (hid_t)*loc_id;
 
- ret = H5IMmake_image_24bit(c_loc_id,c_name,*width,*height,c_il,buf);
+ ret = H5IMmake_image_24bitf(c_loc_id,c_name,*width,*height,c_il,buf);
 
  if (ret < 0) return ret_value;
  ret_value = 0;
@@ -331,7 +330,7 @@ nh5immake_palette_c (hid_t_f *loc_id,
                      int_f *namelen,
                      _fcd name, 
                      hsize_t_f *dims,
-                     unsigned char *buf)
+                     void *buf)
 {
  int     ret_value = -1;
  herr_t  ret;
@@ -361,7 +360,7 @@ nh5immake_palette_c (hid_t_f *loc_id,
  */
  c_loc_id = (hid_t)*loc_id;
 
- ret = H5IMmake_palette(c_loc_id,c_name,c_dims,buf);
+ ret = H5IMmake_palettef(c_loc_id,c_name,c_dims,buf);
 
  free (c_dims);
 
@@ -632,7 +631,7 @@ nh5imget_palette_c(hid_t_f *loc_id,
                         int_f *namelen,
                         _fcd name,
                         int_f *pal_number,
-                        unsigned char *buf)
+                        void *buf)
 {
  int          ret_value = -1;
  herr_t       ret;
@@ -652,7 +651,7 @@ nh5imget_palette_c(hid_t_f *loc_id,
  */
  c_loc_id = (hid_t)*loc_id;
 
- ret = H5IMget_palette(c_loc_id,c_name,*pal_number,buf);
+ ret = H5IMget_palettef(c_loc_id,c_name,*pal_number,buf);
   
  if (ret < 0) return ret_value;
  ret_value = 0;
diff --git a/hl/fortran/src/H5IMff.f90 b/hl/fortran/src/H5IMff.f90
index 276b302..b5f1e2b 100755
--- a/hl/fortran/src/H5IMff.f90
+++ b/hl/fortran/src/H5IMff.f90
@@ -16,9 +16,9 @@
 ! This file contains FORTRAN90 interfaces for H5IM functions
 !
       
-module H5IM
-use H5FORTRAN_TYPES
-use HDF5 
+module h5im
+use h5fortran_types
+use hdf5 
 contains
 
 
@@ -47,27 +47,27 @@ subroutine h5immake_image_8bit_f(loc_id,&
                                  errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), intent(IN) :: width              ! width of image  
- integer(HSIZE_T), intent(IN) :: height             ! height of image
- integer*1, intent(IN), dimension(*) :: buf         ! 1 byte integer data buffer 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), intent(in) :: width              ! width of image  
+ integer(hsize_t), intent(in) :: height             ! height of image
+ integer, intent(in), dimension(*) :: buf           ! buffer 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
  
  interface
   integer function h5immake_image_8bit_c(loc_id,namelen,dset_name,width,height,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5IMMAKE_IMAGE_8BIT_C'::h5immake_image_8bit_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), intent(IN) :: width                   ! width of image  
-  integer(HSIZE_T), intent(IN) :: height                  ! height of image
-  integer*1, intent(IN), dimension(*) :: buf              ! 1 byte integer data buffer  
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), intent(in) :: width                   ! width of image  
+  integer(hsize_t), intent(in) :: height                  ! height of image
+  integer , intent(in), dimension(*) :: buf               ! buffer  
   end function h5immake_image_8bit_c
  end interface
 
@@ -102,23 +102,23 @@ subroutine h5imread_image_f(loc_id,&
                             errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer*1, intent(INOUT), dimension(*) :: buf      ! 1 byte integer data buffer 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer, intent(inout), dimension(*) :: buf        ! buffer 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
  
  interface
   integer function h5imread_image_c(loc_id,namelen,dset_name,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5IMREAD_IMAGE_C'::h5imread_image_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer*1, intent(INOUT), dimension(*) :: buf           ! 1 byte integer data buffer  
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer, intent(inout), dimension(*) :: buf             ! buffer  
   end function h5imread_image_c
  end interface
 
@@ -154,30 +154,30 @@ subroutine h5immake_image_24bit_f(loc_id,&
                                  errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), intent(IN) :: width              ! width of image  
- integer(HSIZE_T), intent(IN) :: height             ! height of image
- character(LEN=*), intent(IN) :: il                 ! interlace
- integer*1, intent(IN), dimension(*) :: buf         ! 1 byte integer data buffer 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), intent(in) :: width              ! width of image  
+ integer(hsize_t), intent(in) :: height             ! height of image
+ character(len=*), intent(in) :: il                 ! interlace
+ integer, intent(in), dimension(*) :: buf           ! buffer 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
  integer :: ilen                                    ! name length
  
  interface
   integer function h5immake_image_24bit_c(loc_id,namelen,dset_name,ilen,il,width,height,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5IMMAKE_IMAGE_24BIT_C'::h5immake_image_24bit_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: il
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), intent(IN) :: width                   ! width of image  
-  integer(HSIZE_T), intent(IN) :: height                  ! height of image
-  character(LEN=*), intent(IN) :: il                      ! interlace
-  integer*1, intent(IN), dimension(*) :: buf              ! 1 byte integer data buffer 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), intent(in) :: width                   ! width of image  
+  integer(hsize_t), intent(in) :: height                  ! height of image
+  character(len=*), intent(in) :: il                      ! interlace
+  integer, intent(in), dimension(*) :: buf                ! buffer 
   integer :: namelen                                      ! lenght of name buffer
   integer :: ilen                                         ! name length
  
@@ -219,32 +219,32 @@ subroutine h5imget_image_info_f(loc_id,&
                                 errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), intent(INOUT) :: width           ! width of image  
- integer(HSIZE_T), intent(INOUT) :: height          ! height of image
- integer(HSIZE_T), intent(INOUT) :: planes          ! color planes
- integer(HSIZE_T), intent(INOUT) :: npals           ! palettes
- character(LEN=*), intent(INOUT) :: interlace       ! interlace 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), intent(inout) :: width           ! width of image  
+ integer(hsize_t), intent(inout) :: height          ! height of image
+ integer(hsize_t), intent(inout) :: planes          ! color planes
+ integer(hsize_t), intent(inout) :: npals           ! palettes
+ character(len=*), intent(inout) :: interlace       ! interlace 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
  integer :: ilen                                    ! name length
 
  interface
   integer function h5imget_image_info_c(loc_id,namelen,dset_name,width,height,planes,npals,ilen,interlace)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5IMGET_IMAGE_INFO_C'::h5imget_image_info_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: interlace
-  integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
-  integer(HSIZE_T), intent(INOUT) :: width           ! width of image  
-  integer(HSIZE_T), intent(INOUT) :: height          ! height of image
-  integer(HSIZE_T), intent(INOUT) :: planes          ! color planes
-  integer(HSIZE_T), intent(INOUT) :: npals           ! palettes
-  character(LEN=*), intent(INOUT) :: interlace       ! interlace 
+  integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+  character(len=*), intent(in) :: dset_name          ! name of the dataset 
+  integer(hsize_t), intent(inout) :: width           ! width of image  
+  integer(hsize_t), intent(inout) :: height          ! height of image
+  integer(hsize_t), intent(inout) :: planes          ! color planes
+  integer(hsize_t), intent(inout) :: npals           ! palettes
+  character(len=*), intent(inout) :: interlace       ! interlace 
   integer :: namelen                                 ! name length
   integer :: ilen                                    ! name length
   end function h5imget_image_info_c
@@ -278,21 +278,21 @@ integer function h5imis_image_f(loc_id,&
                                 dset_name) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
 
  interface
   integer function h5imis_image_c(loc_id,namelen,dset_name)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5IMIS_IMAGE_C'::h5imis_image_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
   end function h5imis_image_c
  end interface
 
@@ -327,25 +327,25 @@ subroutine h5immake_palette_f(loc_id,&
                               errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                 ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name              ! name of the dataset 
- integer(HSIZE_T), intent(IN), dimension(*) :: pal_dims ! dimensions  
- integer*1, intent(IN), dimension(*) :: buf             ! 1 byte integer data buffer 
+ integer(hid_t),   intent(in) :: loc_id                 ! file or group identifier 
+ character(len=*), intent(in) :: dset_name              ! name of the dataset 
+ integer(hsize_t), intent(in), dimension(*) :: pal_dims ! dimensions  
+ integer, intent(in), dimension(*) :: buf               ! buffer 
  integer :: errcode                                     ! error code
  integer :: namelen                                     ! name length
  
  interface
   integer function h5immake_palette_c(loc_id,namelen,dset_name,pal_dims,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5IMMAKE_PALETTE_C'::h5immake_palette_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), intent(IN), dimension(*) :: pal_dims  ! dimensions
-  integer*1, intent(IN), dimension(*) :: buf              ! 1 byte integer data buffer  
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), intent(in), dimension(*) :: pal_dims  ! dimensions
+  integer, intent(in), dimension(*) :: buf                ! buffer  
   end function h5immake_palette_c
  end interface
 
@@ -379,24 +379,24 @@ subroutine h5imlink_palette_f(loc_id,&
                               errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(IN) :: pal_name           ! palette name 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(in) :: pal_name           ! palette name 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
  integer :: ilen                                    ! name length
 
  interface
   integer function h5imlink_palette_c(loc_id,namelen,dset_name,ilen,pal_name)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5IMLINK_PALETTE_C'::h5imlink_palette_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: pal_name
-  integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
-  character(LEN=*), intent(IN) :: pal_name           ! palette name 
+  integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+  character(len=*), intent(in) :: dset_name          ! name of the dataset 
+  character(len=*), intent(in) :: pal_name           ! palette name 
   integer :: namelen                                 ! name length
   integer :: ilen                                    ! name length
   end function h5imlink_palette_c
@@ -432,24 +432,24 @@ subroutine h5imunlink_palette_f(loc_id,&
                               errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(IN) :: pal_name           ! palette name 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(in) :: pal_name           ! palette name 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
  integer :: ilen                                    ! name length
 
  interface
   integer function h5imunlink_palette_c(loc_id,namelen,dset_name,ilen,pal_name)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5IMUNLINK_PALETTE_C'::h5imunlink_palette_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: pal_name
-  integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
-  character(LEN=*), intent(IN) :: pal_name           ! palette name 
+  integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+  character(len=*), intent(in) :: dset_name          ! name of the dataset 
+  character(len=*), intent(in) :: pal_name           ! palette name 
   integer :: namelen                                 ! name length
   integer :: ilen                                    ! name length
   end function h5imunlink_palette_c
@@ -486,22 +486,22 @@ subroutine h5imget_npalettes_f(loc_id,&
                                errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), intent(INOUT) :: npals           ! palettes
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), intent(inout) :: npals           ! palettes
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
 
  interface
   integer function h5imget_npalettes_c(loc_id,namelen,dset_name,npals)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5IMGET_NPALETTES_C'::h5imget_npalettes_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
-  integer(HSIZE_T), intent(INOUT) :: npals           ! palettes
+  integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+  character(len=*), intent(in) :: dset_name          ! name of the dataset 
+  integer(hsize_t), intent(inout) :: npals           ! palettes
   integer :: namelen                                 ! name length
   end function h5imget_npalettes_c
  end interface
@@ -536,24 +536,24 @@ subroutine h5imget_palette_info_f(loc_id,&
                                   errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name             ! name of the dataset 
- integer, intent(IN) :: pal_number                     ! palette number
- integer(HSIZE_T), dimension(*), intent(INOUT) :: dims ! dimensions 
+ integer(hid_t),   intent(in) :: loc_id                ! file or group identifier 
+ character(len=*), intent(in) :: dset_name             ! name of the dataset 
+ integer, intent(in) :: pal_number                     ! palette number
+ integer(hsize_t), dimension(*), intent(inout) :: dims ! dimensions 
  integer :: errcode                                    ! error code
  integer :: namelen                                    ! name length
 
  interface
   integer function h5imget_palette_info_c(loc_id,namelen,dset_name,pal_number,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5IMGET_PALETTE_INFO_C'::h5imget_palette_info_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name             ! name of the dataset 
-  integer, intent(IN) :: pal_number                     ! palette number
-  integer(HSIZE_T), dimension(*), intent(INOUT) :: dims ! dimensions 
+  integer(hid_t),   intent(in) :: loc_id                ! file or group identifier 
+  character(len=*), intent(in) :: dset_name             ! name of the dataset 
+  integer, intent(in) :: pal_number                     ! palette number
+  integer(hsize_t), dimension(*), intent(inout) :: dims ! dimensions 
   integer :: namelen                                    ! name length
   end function h5imget_palette_info_c
  end interface
@@ -590,25 +590,25 @@ subroutine h5imget_palette_f(loc_id,&
                              errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer, intent(IN) :: pal_number                  ! palette number
- integer*1, intent(INOUT), dimension(*) :: buf      ! 1 byte integer data buffer 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer, intent(in) :: pal_number                  ! palette number
+ integer, intent(inout), dimension(*) :: buf        ! buffer 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
  
  interface
   integer function h5imget_palette_c(loc_id,namelen,dset_name,pal_number,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5IMGET_PALETTE_C'::h5imget_palette_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer, intent(IN) :: pal_number                       ! palette number
-  integer*1, intent(INOUT), dimension(*) :: buf           ! 1 byte integer data buffer  
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer, intent(in) :: pal_number                       ! palette number
+  integer, intent(inout), dimension(*) :: buf             ! buffer  
   end function h5imget_palette_c
  end interface
 
@@ -639,21 +639,21 @@ integer function h5imis_palette_f(loc_id,&
                                   dset_name) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
 
  interface
   integer function h5imis_palette_c(loc_id,namelen,dset_name)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5IMIS_PALETTE_C'::h5imis_palette_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
   end function h5imis_palette_c
  end interface
 
diff --git a/hl/fortran/src/H5LTf90proto.h b/hl/fortran/src/H5LTf90proto.h
index 0805a1d..2b8e932 100755
--- a/hl/fortran/src/H5LTf90proto.h
+++ b/hl/fortran/src/H5LTf90proto.h
@@ -18,6 +18,9 @@
 
 #include "H5pubconf.h"
 #include "H5f90i.h"
+#include <stdlib.h>  
+#include <string.h>
+
 
 H5_DLL char*  HD5f2cstring (_fcd fdesc, int len);
 H5_DLL void HD5packFstring (char *src, char *dest, size_t len);
@@ -242,13 +245,13 @@ nh5immake_image_8bit_c (hid_t_f *loc_id,
                        _fcd name, 
                        hsize_t_f *width,
                        hsize_t_f *height, 
-                       unsigned char *buf);
+                       void *buf);
 H5_DLL
 int_f
 nh5imread_image_c (hid_t_f *loc_id, 
                    int_f *namelen,
                    _fcd name, 
-                   unsigned char *buf);
+                   void *buf);
 
 H5_DLL
 int_f
@@ -259,7 +262,7 @@ nh5immake_image_24bit_c (hid_t_f *loc_id,
                          _fcd il, 
                          hsize_t_f *width,
                          hsize_t_f *height,
-																								 unsigned char *buf);
+																								 void *buf);
 H5_DLL
 int_f
 nh5imget_image_info_c(hid_t_f *loc_id, 
@@ -286,7 +289,7 @@ nh5immake_palette_c (hid_t_f *loc_id,
                      int_f *namelen,
                      _fcd name, 
                      hsize_t_f *dims,
-                     unsigned char *buf);
+                     void *buf);
 
 H5_DLL
 int_f
@@ -326,7 +329,7 @@ nh5imget_palette_c(hid_t_f *loc_id,
                         int_f *namelen,
                         _fcd name,
 																							 int_f *pal_number,
-																					   unsigned char *buf);
+																					   void *buf);
 
 H5_DLL
 int_f
diff --git a/hl/fortran/src/H5LTfc.c b/hl/fortran/src/H5LTfc.c
index 494a8c2..d36128f 100755
--- a/hl/fortran/src/H5LTfc.c
+++ b/hl/fortran/src/H5LTfc.c
@@ -16,8 +16,7 @@
 
 #include "H5LT.h"
 #include "H5LTf90proto.h"
-#include <stdlib.h> 
-#include <string.h>
+
 
 
 /*-------------------------------------------------------------------------
diff --git a/hl/fortran/src/H5LTff.f90 b/hl/fortran/src/H5LTff.f90
index 712f6d2..2714d9f 100755
--- a/hl/fortran/src/H5LTff.f90
+++ b/hl/fortran/src/H5LTff.f90
@@ -16,9 +16,9 @@
 ! This file contains FORTRAN90 interfaces for H5LT functions
 !
       
-module H5LT
-use H5FORTRAN_TYPES
-use HDF5 
+module h5lt
+use h5fortran_types
+use hdf5 
 
 
 interface h5ltmake_dataset_f
@@ -82,19 +82,10 @@ interface h5ltread_dataset_double_f
 end interface
 
 contains
-
-
-
-
-
-
-
 !-------------------------------------------------------------------------
 ! Make/Read dataset functions
 !-------------------------------------------------------------------------
 
-
-
 !-------------------------------------------------------------------------
 ! Function: h5ltmake_dataset_f_int1
 !
@@ -121,29 +112,29 @@ subroutine h5ltmake_dataset_f_int1(loc_id,&
                                 errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
- integer, intent(IN), dimension(*) :: buf           ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
+ integer, intent(in), dimension(*) :: buf           ! data buffer 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
  
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  integer, intent(IN), dimension(*) :: buf                ! data buffer 
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  integer, intent(in), dimension(*) :: buf                ! data buffer 
   end function h5ltmake_dataset_c
  end interface
 
@@ -178,30 +169,30 @@ subroutine h5ltmake_dataset_f_int2(loc_id,&
                                 errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- integer, intent(IN), &
+ integer, intent(in), &
  dimension(dims(1),dims(2)) :: buf                  ! data buffer 
  
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  integer, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  integer, intent(in), &
   dimension(dims(1),dims(2)) :: buf                       ! data buffer  
   end function h5ltmake_dataset_c
  end interface
@@ -237,30 +228,30 @@ subroutine h5ltmake_dataset_f_int3(loc_id,&
                                 errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- integer, intent(IN), &
+ integer, intent(in), &
  dimension(dims(1),dims(2),dims(3)) :: buf          ! data buffer 
  
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  integer, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  integer, intent(in), &
   dimension(dims(1),dims(2),dims(3)) :: buf               ! data buffer 
   end function h5ltmake_dataset_c
  end interface
@@ -297,29 +288,29 @@ subroutine h5ltmake_dataset_f_float1(loc_id,&
                                 errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
- real, intent(IN), dimension(*) :: buf              ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
+ real, intent(in), dimension(*) :: buf              ! data buffer 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
  
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  real, intent(IN), dimension(*) :: buf                   ! data buffer 
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  real, intent(in), dimension(*) :: buf                   ! data buffer 
   end function h5ltmake_dataset_c
  end interface
 
@@ -354,30 +345,30 @@ subroutine h5ltmake_dataset_f_float2(loc_id,&
                                 errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- real, intent(IN), &
+ real, intent(in), &
  dimension(dims(1),dims(2)) :: buf                  ! data buffer 
  
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  real, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  real, intent(in), &
   dimension(dims(1),dims(2)) :: buf                       ! data buffer  
   end function h5ltmake_dataset_c
  end interface
@@ -413,30 +404,30 @@ subroutine h5ltmake_dataset_f_float3(loc_id,&
                                 errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- real, intent(IN), &
+ real, intent(in), &
  dimension(dims(1),dims(2),dims(3)) :: buf          ! data buffer 
  
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  real, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  real, intent(in), &
   dimension(dims(1),dims(2),dims(3)) :: buf               ! data buffer 
   end function h5ltmake_dataset_c
  end interface
@@ -472,29 +463,29 @@ subroutine h5ltmake_dataset_f_double1(loc_id,&
                                 errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
- double precision, intent(IN), dimension(*) :: buf  ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
+ double precision, intent(in), dimension(*) :: buf  ! data buffer 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
  
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  double precision, intent(IN), dimension(*) :: buf       ! data buffer 
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  double precision, intent(in), dimension(*) :: buf       ! data buffer 
   end function h5ltmake_dataset_c
  end interface
 
@@ -529,30 +520,30 @@ subroutine h5ltmake_dataset_f_double2(loc_id,&
                                 errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- double precision, intent(IN), &
+ double precision, intent(in), &
  dimension(dims(1),dims(2)) :: buf                  ! data buffer 
  
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  double precision, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  double precision, intent(in), &
   dimension(dims(1),dims(2)) :: buf                       ! data buffer  
   end function h5ltmake_dataset_c
  end interface
@@ -588,30 +579,30 @@ subroutine h5ltmake_dataset_f_double3(loc_id,&
                                 errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- double precision, intent(IN), &
+ double precision, intent(in), &
  dimension(dims(1),dims(2),dims(3)) :: buf          ! data buffer 
  
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  double precision, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  double precision, intent(in), &
   dimension(dims(1),dims(2),dims(3)) :: buf               ! data buffer 
   end function h5ltmake_dataset_c
  end interface
@@ -648,17 +639,17 @@ subroutine h5ltread_dataset_f_int1(loc_id,&
                                 errcode )  
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
- integer, intent(INOUT), dimension(*) :: buf        ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
+ integer, intent(inout), dimension(*) :: buf        ! data buffer 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
@@ -702,28 +693,28 @@ subroutine h5ltread_dataset_f_int2(loc_id,&
                                  errcode )  
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- integer, intent(INOUT), &
+ integer, intent(inout), &
  dimension(dims(1),dims(2)) :: buf                  ! data buffer 
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  integer, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  integer, intent(in), &
   dimension(dims(1),dims(2)) :: buf                       ! data buffer 
   end function h5ltread_dataset_c
  end interface
@@ -758,28 +749,28 @@ subroutine h5ltread_dataset_f_int3(loc_id,&
                                 errcode )  
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- integer, intent(INOUT), &
+ integer, intent(inout), &
  dimension(dims(1),dims(2),dims(3)) :: buf          ! data buffer  
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  integer, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  integer, intent(in), &
   dimension(dims(1),dims(2),dims(3)) :: buf               ! data buffer  
   end function h5ltread_dataset_c
  end interface
@@ -817,27 +808,27 @@ subroutine h5ltread_dataset_f_float1(loc_id,&
                                 errcode )  
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
- real, intent(INOUT), dimension(*) :: buf           ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
+ real, intent(inout), dimension(*) :: buf           ! data buffer 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  real, intent(IN), dimension(*) :: buf                   ! data buffer 
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  real, intent(in), dimension(*) :: buf                   ! data buffer 
   end function h5ltread_dataset_c
  end interface
 
@@ -871,28 +862,28 @@ subroutine h5ltread_dataset_f_float2(loc_id,&
                                  errcode )  
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- real, intent(INOUT), &
+ real, intent(inout), &
  dimension(dims(1),dims(2)) :: buf                  ! data buffer 
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  real, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  real, intent(in), &
   dimension(dims(1),dims(2)) :: buf                       ! data buffer 
   end function h5ltread_dataset_c
  end interface
@@ -927,28 +918,28 @@ subroutine h5ltread_dataset_f_float3(loc_id,&
                                 errcode )  
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- real, intent(INOUT), &
+ real, intent(inout), &
  dimension(dims(1),dims(2),dims(3)) :: buf          ! data buffer  
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  real, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  real, intent(in), &
   dimension(dims(1),dims(2),dims(3)) :: buf               ! data buffer  
   end function h5ltread_dataset_c
  end interface
@@ -984,27 +975,27 @@ subroutine h5ltread_dataset_f_double1(loc_id,&
                                 errcode )  
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
- double precision, intent(INOUT), dimension(*) :: buf ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
+ double precision, intent(inout), dimension(*) :: buf ! data buffer 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  double precision, intent(IN), dimension(*) :: buf       ! data buffer 
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  double precision, intent(in), dimension(*) :: buf       ! data buffer 
   end function h5ltread_dataset_c
  end interface
 
@@ -1038,28 +1029,28 @@ subroutine h5ltread_dataset_f_double2(loc_id,&
                                  errcode )  
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- double precision, intent(INOUT), &
+ double precision, intent(inout), &
  dimension(dims(1),dims(2)) :: buf                  ! data buffer 
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  double precision, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  double precision, intent(in), &
   dimension(dims(1),dims(2)) :: buf                       ! data buffer 
   end function h5ltread_dataset_c
  end interface
@@ -1094,28 +1085,28 @@ subroutine h5ltread_dataset_f_double3(loc_id,&
                                 errcode )  
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HID_T),   intent(IN) :: type_id            ! datatype identifier 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hid_t),   intent(in) :: type_id            ! datatype identifier 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- double precision, intent(INOUT), &
+ double precision, intent(inout), &
  dimension(dims(1),dims(2),dims(3)) :: buf          ! data buffer  
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  double precision, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  double precision, intent(in), &
   dimension(dims(1),dims(2),dims(3)) :: buf               ! data buffer  
   end function h5ltread_dataset_c
  end interface
@@ -1126,8 +1117,6 @@ subroutine h5ltread_dataset_f_double3(loc_id,&
 end subroutine h5ltread_dataset_f_double3
 
 
-
-
 !-------------------------------------------------------------------------
 ! Function: h5ltmake_dataset_int_f_1
 !
@@ -1153,33 +1142,33 @@ subroutine h5ltmake_dataset_int_f_1 (loc_id,&
                                    errcode )   
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
- integer, intent(IN), dimension(*) :: buf           ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
+ integer, intent(in), dimension(*) :: buf           ! data buffer 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
             
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  integer, intent(IN), dimension(*) :: buf                ! data buffer  
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  integer, intent(in), dimension(*) :: buf                ! data buffer  
   end function h5ltmake_dataset_c
  end interface
 
  namelen = len(dset_name)
- errcode = h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,H5T_NATIVE_INTEGER,buf)
+ errcode = h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,h5t_native_integer,buf)
 
 end subroutine h5ltmake_dataset_int_f_1
 
@@ -1208,30 +1197,30 @@ subroutine h5ltmake_dataset_int_f_2 (loc_id,&
                                    errcode )   
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- integer, intent(IN), &
+ integer, intent(in), &
  dimension(dims(1),dims(2)) :: buf                  ! data buffer 
  
             
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  integer, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  integer, intent(in), &
   dimension(dims(1),dims(2)) :: buf                  ! data buffer 
   end function h5ltmake_dataset_c
  end interface
@@ -1267,30 +1256,30 @@ subroutine h5ltmake_dataset_int_f_3 (loc_id,&
                                    errcode )   
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- integer, intent(IN), &
+ integer, intent(in), &
  dimension(dims(1),dims(2),dims(3)) :: buf          ! data buffer 
  
             
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  integer, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  integer, intent(in), &
   dimension(dims(1),dims(2),dims(3)) :: buf               ! data buffer 
   end function h5ltmake_dataset_c
  end interface
@@ -1327,28 +1316,28 @@ subroutine h5ltmake_dataset_float_f_1 (loc_id,&
                                    errcode )   
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
- real, intent(IN), dimension(*) :: buf              ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
+ real, intent(in), dimension(*) :: buf              ! data buffer 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
             
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  real, intent(IN), dimension(*) :: buf                   ! data buffer  
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  real, intent(in), dimension(*) :: buf                   ! data buffer  
   end function h5ltmake_dataset_c
  end interface
 
@@ -1382,29 +1371,29 @@ subroutine h5ltmake_dataset_float_f_2 (loc_id,&
                                    errcode )   
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- real, intent(IN), &
+ real, intent(in), &
  dimension(dims(1),dims(2)) :: buf                  ! data buffer
             
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  real, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  real, intent(in), &
   dimension(dims(1),dims(2)) :: buf                  ! data buffer  
   end function h5ltmake_dataset_c
  end interface
@@ -1439,29 +1428,29 @@ subroutine h5ltmake_dataset_float_f_3 (loc_id,&
                                    errcode )   
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- real, intent(IN), &
+ real, intent(in), &
  dimension(dims(1),dims(2),dims(3)) :: buf          ! data buffer
             
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  real, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  real, intent(in), &
   dimension(dims(1),dims(2),dims(3)) :: buf               ! data buffer 
   end function h5ltmake_dataset_c
  end interface
@@ -1499,29 +1488,29 @@ subroutine h5ltmake_dataset_double_f_1 (loc_id,&
                                    errcode )   
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- double precision, intent(IN), &
+ double precision, intent(in), &
  dimension(dims(1)) :: buf                          ! data buffer 
             
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  double precision, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  double precision, intent(in), &
   dimension(dims(1)) :: buf                               ! data buffer   
   end function h5ltmake_dataset_c
  end interface
@@ -1557,29 +1546,29 @@ subroutine h5ltmake_dataset_double_f_2 (loc_id,&
                                    errcode )   
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- double precision, intent(IN), &
+ double precision, intent(in), &
  dimension(dims(1),dims(2)) :: buf                  ! data buffer 
             
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  double precision, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  double precision, intent(in), &
   dimension(dims(1),dims(2)) :: buf                       ! data buffer   
   end function h5ltmake_dataset_c
  end interface
@@ -1614,29 +1603,29 @@ subroutine h5ltmake_dataset_double_f_3 (loc_id,&
                                    errcode )   
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(IN) :: rank               ! rank 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf  
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(in) :: rank               ! rank 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf  
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- double precision, intent(IN), &
+ double precision, intent(in), &
  dimension(dims(1),dims(2),dims(3)) :: buf          ! data buffer 
             
  interface
   integer function h5ltmake_dataset_c(loc_id,namelen,dset_name,rank,dims,type_id,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_C'::h5ltmake_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(IN) :: rank                    ! rank 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  double precision, intent(IN), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(in) :: rank                    ! rank 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  double precision, intent(in), &
   dimension(dims(1),dims(2),dims(3)) :: buf               ! data buffer    
   end function h5ltmake_dataset_c
  end interface
@@ -1673,26 +1662,26 @@ subroutine h5ltread_dataset_int_f_1(loc_id,&
 
  implicit none
  integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- integer, intent(INOUT), &
+ integer, intent(inout), &
  dimension(dims(1)) :: buf                          ! data buffer  
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  integer, intent(INOUT), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  integer, intent(inout), &
   dimension(dims(1)) :: buf                               ! data buffer   
   end function h5ltread_dataset_c
  end interface
@@ -1727,27 +1716,27 @@ subroutine h5ltread_dataset_int_f_2(loc_id,&
                                    errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- integer, intent(INOUT), &
+ integer, intent(inout), &
  dimension(dims(1),dims(2)) :: buf                  ! data buffer  
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  integer, intent(INOUT), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  integer, intent(inout), &
   dimension(dims(1),dims(2)) :: buf                       ! data buffer    
   end function h5ltread_dataset_c
  end interface
@@ -1781,27 +1770,27 @@ subroutine h5ltread_dataset_int_f_3(loc_id,&
                                    errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- integer, intent(INOUT), &
+ integer, intent(inout), &
  dimension(dims(1),dims(2),dims(3)) :: buf          ! data buffer  
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  integer, intent(INOUT), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  integer, intent(inout), &
   dimension(dims(1),dims(2),dims(3)) :: buf               ! data buffer   
   end function h5ltread_dataset_c
  end interface
@@ -1836,27 +1825,27 @@ subroutine h5ltread_dataset_float_f_1(loc_id,&
                                    errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- real, intent(INOUT), &
+ real, intent(inout), &
  dimension(dims(1)) :: buf                          ! data buffer  
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  real, intent(INOUT), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  real, intent(inout), &
   dimension(dims(1)) :: buf                               ! data buffer   
   end function h5ltread_dataset_c
  end interface
@@ -1891,27 +1880,27 @@ subroutine h5ltread_dataset_float_f_2(loc_id,&
                                    errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- real, intent(INOUT), &
+ real, intent(inout), &
  dimension(dims(1),dims(2)) :: buf                  ! data buffer  
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  real, intent(INOUT), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  real, intent(inout), &
   dimension(dims(1),dims(2)) :: buf                       ! data buffer    
   end function h5ltread_dataset_c
  end interface
@@ -1945,27 +1934,27 @@ subroutine h5ltread_dataset_float_f_3(loc_id,&
                                    errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- real, intent(INOUT), &
+ real, intent(inout), &
  dimension(dims(1),dims(2),dims(3)) :: buf          ! data buffer  
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  real, intent(INOUT), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  real, intent(inout), &
   dimension(dims(1),dims(2),dims(3)) :: buf               ! data buffer   
   end function h5ltread_dataset_c
  end interface
@@ -1999,27 +1988,27 @@ subroutine h5ltread_dataset_double_f_1(loc_id,&
                                    errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- double precision, intent(INOUT), &
+ double precision, intent(inout), &
  dimension(dims(1)) :: buf                          ! data buffer  
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  double precision, intent(INOUT), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  double precision, intent(inout), &
   dimension(dims(1)) :: buf                               ! data buffer   
   end function h5ltread_dataset_c
  end interface
@@ -2054,27 +2043,27 @@ subroutine h5ltread_dataset_double_f_2(loc_id,&
                                    errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- double precision, intent(INOUT), &
+ double precision, intent(inout), &
  dimension(dims(1),dims(2)) :: buf                  ! data buffer  
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  double precision, intent(INOUT), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  double precision, intent(inout), &
   dimension(dims(1),dims(2)) :: buf                       ! data buffer    
   end function h5ltread_dataset_c
  end interface
@@ -2108,27 +2097,27 @@ subroutine h5ltread_dataset_double_f_3(loc_id,&
                                    errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), dimension(*), intent(IN) :: dims ! size of the bufffer buf 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), dimension(*), intent(in) :: dims ! size of the bufffer buf 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
- double precision, intent(INOUT), &
+ double precision, intent(inout), &
  dimension(dims(1),dims(2),dims(3)) :: buf          ! data buffer  
 
  interface
   integer function h5ltread_dataset_c(loc_id,namelen,dset_name,type_id,buf,dims)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_C'::h5ltread_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
-  integer(HID_T),   intent(IN) :: type_id                 ! datatype identifier 
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: type_id                 ! datatype identifier 
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T), dimension(*), intent(IN) :: dims      ! size of the bufffer buf  
-  double precision, intent(INOUT), &
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t), dimension(*), intent(in) :: dims      ! size of the bufffer buf  
+  double precision, intent(inout), &
   dimension(dims(1),dims(2),dims(3)) :: buf               ! data buffer   
   end function h5ltread_dataset_c
  end interface
@@ -2162,23 +2151,23 @@ subroutine h5ltmake_dataset_string_f(loc_id,&
                                      errcode )   
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(IN) :: buf                ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(in) :: buf                ! data buffer 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
             
  interface
   integer function h5ltmake_dataset_string_c(loc_id,namelen,dset_name,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTMAKE_DATASET_STRING_C'::h5ltmake_dataset_string_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  character(LEN=*), intent(IN) :: buf                     ! data buffer  
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: buf                     ! data buffer  
   end function h5ltmake_dataset_string_c
  end interface
 
@@ -2210,23 +2199,23 @@ subroutine h5ltread_dataset_string_f(loc_id,&
                                      errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(INOUT) :: buf             ! data buffer
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(inout) :: buf             ! data buffer
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
 
  interface
   integer function h5ltread_dataset_string_c(loc_id,namelen,dset_name,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTREAD_DATASET_STRING_C'::h5ltread_dataset_string_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  character(LEN=*), intent(INOUT) :: buf                  ! data buffer
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  character(len=*), intent(inout) :: buf                  ! data buffer
   end function h5ltread_dataset_string_c
  end interface
 
@@ -2268,30 +2257,30 @@ subroutine h5ltset_attribute_int_f(loc_id,&
                                     errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(IN) :: attr_name          ! name of the attribute
- integer(SIZE_T),  intent(IN) :: size               ! size of attribute array
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(in) :: attr_name          ! name of the attribute
+ integer(size_t),  intent(in) :: size               ! size of attribute array
  integer :: errcode                                 ! error code
- integer, intent(IN), dimension(*) :: buf           ! data buffer
+ integer, intent(in), dimension(*) :: buf           ! data buffer
  integer :: namelen                                 ! name length
  integer :: attrlen                                 ! name length
 
  interface
   integer function h5ltset_attribute_int_c(loc_id,namelen,dset_name,attrlen,attr_name,size,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTSET_ATTRIBUTE_INT_C'::h5ltset_attribute_int_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: attr_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
   integer :: attrlen                                      ! lenght of attr name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  character(LEN=*), intent(IN) :: attr_name               ! name of the attribute
-  integer(SIZE_T),  intent(IN) :: size                    ! size of attribute array
-  integer, intent(IN), dimension(*) :: buf                ! data buffer
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: attr_name               ! name of the attribute
+  integer(size_t),  intent(in) :: size                    ! size of attribute array
+  integer, intent(in), dimension(*) :: buf                ! data buffer
   end function h5ltset_attribute_int_c
  end interface
 
@@ -2326,30 +2315,30 @@ subroutine h5ltset_attribute_float_f(loc_id,&
                                     errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(IN) :: attr_name          ! name of the attribute
- integer(SIZE_T),  intent(IN) :: size               ! size of attribute array
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(in) :: attr_name          ! name of the attribute
+ integer(size_t),  intent(in) :: size               ! size of attribute array
  integer :: errcode                                 ! error code
- real, intent(IN), dimension(*) :: buf              ! data buffer
+ real, intent(in), dimension(*) :: buf              ! data buffer
  integer :: namelen                                 ! name length
  integer :: attrlen                                 ! name length
 
  interface
   integer function h5ltset_attribute_float_c(loc_id,namelen,dset_name,attrlen,attr_name,size,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTSET_ATTRIBUTE_FLOAT_C'::h5ltset_attribute_float_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: attr_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
   integer :: attrlen                                      ! lenght of attr name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  character(LEN=*), intent(IN) :: attr_name               ! name of the attribute
-  integer(SIZE_T),  intent(IN) :: size                    ! size of attribute array
-  real, intent(IN), dimension(*) :: buf                   ! data buffer
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: attr_name               ! name of the attribute
+  integer(size_t),  intent(in) :: size                    ! size of attribute array
+  real, intent(in), dimension(*) :: buf                   ! data buffer
   end function h5ltset_attribute_float_c
  end interface
 
@@ -2384,30 +2373,30 @@ subroutine h5ltset_attribute_double_f(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(IN) :: attr_name          ! name of the attribute
- integer(SIZE_T),  intent(IN) :: size               ! size of attribute array
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(in) :: attr_name          ! name of the attribute
+ integer(size_t),  intent(in) :: size               ! size of attribute array
  integer :: errcode                                 ! error code
- double precision, intent(IN), dimension(*) :: buf  ! data buffer
+ double precision, intent(in), dimension(*) :: buf  ! data buffer
  integer :: namelen                                 ! name length
  integer :: attrlen                                 ! name length
 
  interface
   integer function h5ltset_attribute_double_c(loc_id,namelen,dset_name,attrlen,attr_name,size,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTSET_ATTRIBUTE_DOUBLE_C'::h5ltset_attribute_double_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: attr_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
   integer :: attrlen                                      ! lenght of attr name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  character(LEN=*), intent(IN) :: attr_name               ! name of the attribute
-  integer(SIZE_T),  intent(IN) :: size                    ! size of attribute array
-  double precision, intent(IN), dimension(*) :: buf       ! data buffer
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: attr_name               ! name of the attribute
+  integer(size_t),  intent(in) :: size                    ! size of attribute array
+  double precision, intent(in), dimension(*) :: buf       ! data buffer
   end function h5ltset_attribute_double_c
  end interface
 
@@ -2442,28 +2431,28 @@ subroutine h5ltset_attribute_string_f(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(IN) :: attr_name          ! name of the attribute
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(in) :: attr_name          ! name of the attribute
  integer :: errcode                                 ! error code
- character(LEN=*), intent(IN) :: buf                ! data buffer
+ character(len=*), intent(in) :: buf                ! data buffer
  integer :: namelen                                 ! name length
  integer :: attrlen                                 ! name length
 
  interface
   integer function h5ltset_attribute_string_c(loc_id,namelen,dset_name,attrlen,attr_name,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTSET_ATTRIBUTE_STRING_C'::h5ltset_attribute_string_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: attr_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
   integer :: attrlen                                      ! lenght of attr name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  character(LEN=*), intent(IN) :: attr_name               ! name of the attribute
-  character(LEN=*), intent(IN) :: buf                     ! data buffer
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: attr_name               ! name of the attribute
+  character(len=*), intent(in) :: buf                     ! data buffer
   end function h5ltset_attribute_string_c
  end interface
 
@@ -2499,28 +2488,28 @@ subroutine h5ltget_attribute_int_f(loc_id,&
                                     errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(IN) :: attr_name          ! name of the attribute
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(in) :: attr_name          ! name of the attribute
  integer :: errcode                                 ! error code
- integer, intent(INOUT), dimension(*) :: buf        ! data buffer
+ integer, intent(inout), dimension(*) :: buf        ! data buffer
  integer :: namelen                                 ! name length
  integer :: attrlen                                 ! name length
 
  interface
   integer function h5ltget_attribute_int_c(loc_id,namelen,dset_name,attrlen,attr_name,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTGET_ATTRIBUTE_INT_C'::h5ltget_attribute_int_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: attr_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
   integer :: attrlen                                      ! lenght of attr name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  character(LEN=*), intent(IN) :: attr_name               ! name of the attribute
-  integer, intent(INOUT), dimension(*) :: buf             ! data buffer
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: attr_name               ! name of the attribute
+  integer, intent(inout), dimension(*) :: buf             ! data buffer
   end function h5ltget_attribute_int_c
  end interface
 
@@ -2555,28 +2544,28 @@ subroutine h5ltget_attribute_float_f(loc_id,&
                                     errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(IN) :: attr_name          ! name of the attribute
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(in) :: attr_name          ! name of the attribute
  integer :: errcode                                 ! error code
- real, intent(INOUT), dimension(*) :: buf           ! data buffer
+ real, intent(inout), dimension(*) :: buf           ! data buffer
  integer :: namelen                                 ! name length
  integer :: attrlen                                 ! name length
 
  interface
   integer function h5ltget_attribute_float_c(loc_id,namelen,dset_name,attrlen,attr_name,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTGET_ATTRIBUTE_FLOAT_C'::h5ltget_attribute_float_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: attr_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
   integer :: attrlen                                      ! lenght of attr name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  character(LEN=*), intent(IN) :: attr_name               ! name of the attribute
-  real, intent(INOUT), dimension(*) :: buf                ! data buffer
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: attr_name               ! name of the attribute
+  real, intent(inout), dimension(*) :: buf                ! data buffer
   end function h5ltget_attribute_float_c
  end interface
 
@@ -2610,28 +2599,28 @@ subroutine h5ltget_attribute_double_f(loc_id,&
                                     errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(IN) :: attr_name          ! name of the attribute
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(in) :: attr_name          ! name of the attribute
  integer :: errcode                                 ! error code
- double precision,intent(INOUT),dimension(*) :: buf ! data buffer
+ double precision,intent(inout),dimension(*) :: buf ! data buffer
  integer :: namelen                                 ! name length
  integer :: attrlen                                 ! name length
 
  interface
   integer function h5ltget_attribute_double_c(loc_id,namelen,dset_name,attrlen,attr_name,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTGET_ATTRIBUTE_DOUBLE_C'::h5ltget_attribute_double_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: attr_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
   integer :: attrlen                                      ! lenght of attr name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  character(LEN=*), intent(IN) :: attr_name               ! name of the attribute
-  double precision, intent(INOUT), dimension(*) :: buf    ! data buffer
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: attr_name               ! name of the attribute
+  double precision, intent(inout), dimension(*) :: buf    ! data buffer
   end function h5ltget_attribute_double_c
  end interface
 
@@ -2665,28 +2654,28 @@ subroutine h5ltget_attribute_string_f(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(IN) :: attr_name          ! name of the attribute
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(in) :: attr_name          ! name of the attribute
  integer :: errcode                                 ! error code
- character(LEN=*), intent(INOUT) :: buf             ! data buffer
+ character(len=*), intent(inout) :: buf             ! data buffer
  integer :: namelen                                 ! name length
  integer :: attrlen                                 ! name length
 
  interface
   integer function h5ltget_attribute_string_c(loc_id,namelen,dset_name,attrlen,attr_name,buf)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTGET_ATTRIBUTE_STRING_C'::h5ltget_attribute_string_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: attr_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
   integer :: attrlen                                      ! lenght of attr name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  character(LEN=*), intent(IN) :: attr_name               ! name of the attribute
-  character(LEN=*), intent(INOUT) :: buf                  ! data buffer
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: attr_name               ! name of the attribute
+  character(len=*), intent(inout) :: buf                  ! data buffer
   end function h5ltget_attribute_string_c
  end interface
 
@@ -2696,16 +2685,10 @@ subroutine h5ltget_attribute_string_f(loc_id,&
 
 end subroutine h5ltget_attribute_string_f
 
-
-
-
-
 !-------------------------------------------------------------------------
 ! Query dataset functions
 !-------------------------------------------------------------------------
 
-
-
 !-------------------------------------------------------------------------
 ! Function: h5ltget_dataset_ndims_f
 !
@@ -2729,23 +2712,23 @@ subroutine h5ltget_dataset_ndims_f(loc_id,&
                                    errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer,          intent(INOUT) :: rank            ! rank 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer,          intent(inout) :: rank            ! rank 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
 
  interface
   integer function h5ltget_dataset_ndims_c(loc_id,namelen,dset_name,rank)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTGET_DATASET_NDIMS_C'::h5ltget_dataset_ndims_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer,          intent(INOUT) :: rank                 ! rank 
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer,          intent(inout) :: rank                 ! rank 
   end function h5ltget_dataset_ndims_c
  end interface
 
@@ -2777,21 +2760,21 @@ integer function h5ltfind_dataset_f(loc_id,&
                                     dset_name) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
 
  interface
   integer function h5ltfind_dataset_c(loc_id,namelen,dset_name)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTFIND_DATASET_C'::h5ltfind_dataset_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
   end function h5ltfind_dataset_c
  end interface
 
@@ -2826,27 +2809,27 @@ subroutine h5ltget_dataset_info_f(loc_id,&
                                    errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T),dimension(*),intent(INOUT):: dims ! dimensions 
- integer, intent(INOUT)         :: type_class       ! type class
- integer(SIZE_T), intent(INOUT) :: type_size        ! type size
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t),dimension(*),intent(inout):: dims ! dimensions 
+ integer, intent(inout)         :: type_class       ! type class
+ integer(size_t), intent(inout) :: type_size        ! type size
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
 
  interface
   integer function h5ltget_dataset_info_c(loc_id,namelen,dset_name,dims,type_class,type_size)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTGET_DATASET_INFO_C'::h5ltget_dataset_info_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  integer(HSIZE_T),dimension(*),intent(INOUT):: dims      ! dimensions 
-  integer, intent(INOUT)         :: type_class            ! type class
-  integer(SIZE_T), intent(INOUT) :: type_size             ! type size 
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  integer(hsize_t),dimension(*),intent(inout):: dims      ! dimensions 
+  integer, intent(inout)         :: type_class            ! type class
+  integer(size_t), intent(inout) :: type_size             ! type size 
   end function h5ltget_dataset_info_c
  end interface
 
@@ -2885,28 +2868,28 @@ subroutine h5ltget_attribute_ndims_f(loc_id,&
                                     errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(IN) :: attr_name          ! name of the attribute
- integer,          intent(INOUT) :: rank            ! rank 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(in) :: attr_name          ! name of the attribute
+ integer,          intent(inout) :: rank            ! rank 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
  integer :: attrlen                                 ! name length
 
  interface
   integer function h5ltget_attribute_ndims_c(loc_id,namelen,dset_name,attrlen,attr_name,rank)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTGET_ATTRIBUTE_NDIMS_C'::h5ltget_attribute_ndims_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: attr_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
   integer :: attrlen                                      ! lenght of attr name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  character(LEN=*), intent(IN) :: attr_name               ! name of the attribute
-  integer,          intent(INOUT) :: rank                 ! rank 
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: attr_name               ! name of the attribute
+  integer,          intent(inout) :: rank                 ! rank 
   end function h5ltget_attribute_ndims_c
  end interface
 
@@ -2943,32 +2926,32 @@ subroutine h5ltget_attribute_info_f(loc_id,&
                                    errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- character(LEN=*), intent(IN) :: attr_name          ! name of the attribute
- integer(HSIZE_T),dimension(*),intent(INOUT):: dims ! dimensions 
- integer, intent(INOUT)         :: type_class       ! type class
- integer(SIZE_T), intent(INOUT) :: type_size        ! type size
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ character(len=*), intent(in) :: attr_name          ! name of the attribute
+ integer(hsize_t),dimension(*),intent(inout):: dims ! dimensions 
+ integer, intent(inout)         :: type_class       ! type class
+ integer(size_t), intent(inout) :: type_size        ! type size
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
  integer :: attrlen                                 ! name length
 
  interface
   integer function h5ltget_attribute_info_c(loc_id,namelen,dset_name,attrlen,attr_name,dims,type_class,type_size)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5LTGET_ATTRIBUTE_INFO_C'::h5ltget_attribute_info_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: attr_name
-  integer(HID_T),   intent(IN) :: loc_id                  ! file or group identifier
+  integer(hid_t),   intent(in) :: loc_id                  ! file or group identifier
   integer :: namelen                                      ! lenght of name buffer
   integer :: attrlen                                      ! lenght of attr name buffer
-  character(LEN=*), intent(IN) :: dset_name               ! name of the dataset 
-  character(LEN=*), intent(IN) :: attr_name               ! name of the attribute
-  integer(HSIZE_T),dimension(*),intent(INOUT):: dims      ! dimensions 
-  integer, intent(INOUT)         :: type_class            ! type class
-  integer(SIZE_T), intent(INOUT) :: type_size             ! type size 
+  character(len=*), intent(in) :: dset_name               ! name of the dataset 
+  character(len=*), intent(in) :: attr_name               ! name of the attribute
+  integer(hsize_t),dimension(*),intent(inout):: dims      ! dimensions 
+  integer, intent(inout)         :: type_class            ! type class
+  integer(size_t), intent(inout) :: type_size             ! type size 
   end function h5ltget_attribute_info_c
  end interface
 
diff --git a/hl/fortran/src/H5TBfc.c b/hl/fortran/src/H5TBfc.c
index bd84314..6af79db 100755
--- a/hl/fortran/src/H5TBfc.c
+++ b/hl/fortran/src/H5TBfc.c
@@ -16,7 +16,6 @@
 
 #include "H5TB.h"
 #include "H5LTf90proto.h"
-#include <stdlib.h> 
 
 /*-------------------------------------------------------------------------
  * Function: h5tbmake_table_c
diff --git a/hl/fortran/src/H5TBff.f90 b/hl/fortran/src/H5TBff.f90
index 4d91aee..5d435e2 100755
--- a/hl/fortran/src/H5TBff.f90
+++ b/hl/fortran/src/H5TBff.f90
@@ -16,9 +16,9 @@
 ! This file contains FORTRAN90 interfaces for H5TB functions
 !
       
-module H5TB
-use H5FORTRAN_TYPES
-use HDF5 
+module h5tb
+use h5fortran_types
+use hdf5 
 
 
 interface h5tbwrite_field_name_f
@@ -58,9 +58,6 @@ interface h5tbinsert_field_f
 end interface
 
 
-
-
-
 contains
 
 
@@ -95,17 +92,17 @@ subroutine h5tbmake_table_f(table_title,&
                             errcode ) 
 
  implicit none
- character(LEN=*), intent(IN) :: table_title                      ! name of the dataset 
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- integer(HSIZE_T), intent(IN) :: nfields                          ! fields 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- character(LEN=*), dimension(nfields), intent(IN) :: field_names  ! field names
- integer(SIZE_T),  dimension(nfields), intent(IN) :: field_offset ! field offset
- integer(HID_T),   dimension(nfields), intent(IN) :: field_types  ! field types
- integer(HSIZE_T), intent(IN) :: chunk_size                       ! chunk size
- integer,          intent(IN) :: compress                         ! compress
+ character(len=*), intent(in) :: table_title                      ! name of the dataset 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ integer(hsize_t), intent(in) :: nfields                          ! fields 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ character(len=*), dimension(nfields), intent(in) :: field_names  ! field names
+ integer(size_t),  dimension(nfields), intent(in) :: field_offset ! field offset
+ integer(hid_t),   dimension(nfields), intent(in) :: field_types  ! field types
+ integer(hsize_t), intent(in) :: chunk_size                       ! chunk size
+ integer,          intent(in) :: compress                         ! compress
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
  integer :: errcode                                               ! error code
@@ -129,23 +126,23 @@ subroutine h5tbmake_table_f(table_title,&
   namelen2,&
   field_names)
 
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBMAKE_TABLE_C'::h5tbmake_table_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: table_title
-  character(LEN=*), intent(IN) :: table_title                      ! name of the dataset 
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  integer(HSIZE_T), intent(IN) :: nfields                          ! fields 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  character(LEN=*), dimension(nfields), intent(IN) :: field_names  ! field names
-  integer(SIZE_T),  dimension(nfields), intent(IN) :: field_offset ! field offset
-  integer(HID_T),   dimension(nfields), intent(IN) :: field_types  ! field types
-  integer(HSIZE_T), intent(IN) :: chunk_size                       ! chunk size
-  integer,          intent(IN) :: compress                         ! compress
+  character(len=*), intent(in) :: table_title                      ! name of the dataset 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  integer(hsize_t), intent(in) :: nfields                          ! fields 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  character(len=*), dimension(nfields), intent(in) :: field_names  ! field names
+  integer(size_t),  dimension(nfields), intent(in) :: field_offset ! field offset
+  integer(hid_t),   dimension(nfields), intent(in) :: field_types  ! field types
+  integer(hsize_t), intent(in) :: chunk_size                       ! chunk size
+  integer,          intent(in) :: compress                         ! compress
   integer :: namelen                                               ! name length
   integer :: namelen1                                              ! name length
   integer, dimension(nfields) :: namelen2                          ! name lengths
@@ -201,13 +198,13 @@ subroutine h5tbwrite_field_name_f_int(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- character(LEN=*), intent(IN) :: field_name                       ! name of the field
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- integer, intent(IN), dimension(*) :: buf                         ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ character(len=*), intent(in) :: field_name                       ! name of the field
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ integer, intent(in), dimension(*) :: buf                         ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
@@ -216,19 +213,19 @@ subroutine h5tbwrite_field_name_f_int(loc_id,&
   integer function h5tbwrite_field_name_c(loc_id,namelen,dset_name,namelen1,field_name,&
   start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBWRITE_FIELD_NAME_C'::h5tbwrite_field_name_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: field_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  character(LEN=*), intent(IN) :: field_name                       ! name of the field
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  integer, intent(IN), dimension(*) :: buf                         ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  character(len=*), intent(in) :: field_name                       ! name of the field
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  integer, intent(in), dimension(*) :: buf                         ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   integer :: namelen1                                              ! name length
@@ -268,13 +265,13 @@ subroutine h5tbwrite_field_name_f_float(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- character(LEN=*), intent(IN) :: field_name                       ! name of the field
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- real, intent(IN), dimension(*) :: buf                            ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ character(len=*), intent(in) :: field_name                       ! name of the field
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ real, intent(in), dimension(*) :: buf                            ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
@@ -283,19 +280,19 @@ subroutine h5tbwrite_field_name_f_float(loc_id,&
   integer function h5tbwrite_field_name_c(loc_id,namelen,dset_name,namelen1,field_name,&
   start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBWRITE_FIELD_NAME_C'::h5tbwrite_field_name_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: field_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  character(LEN=*), intent(IN) :: field_name                       ! name of the field
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  real, intent(IN), dimension(*) :: buf                            ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  character(len=*), intent(in) :: field_name                       ! name of the field
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  real, intent(in), dimension(*) :: buf                            ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   integer :: namelen1                                              ! name length
@@ -337,13 +334,13 @@ subroutine h5tbwrite_field_name_f_double(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- character(LEN=*), intent(IN) :: field_name                       ! name of the field
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- double precision, intent(IN), dimension(*) :: buf                ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ character(len=*), intent(in) :: field_name                       ! name of the field
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ double precision, intent(in), dimension(*) :: buf                ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
@@ -352,19 +349,19 @@ subroutine h5tbwrite_field_name_f_double(loc_id,&
   integer function h5tbwrite_field_name_c(loc_id,namelen,dset_name,namelen1,field_name,&
   start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBWRITE_FIELD_NAME_C'::h5tbwrite_field_name_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: field_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  character(LEN=*), intent(IN) :: field_name                       ! name of the field
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  double precision, intent(IN), dimension(*) :: buf                ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  character(len=*), intent(in) :: field_name                       ! name of the field
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  double precision, intent(in), dimension(*) :: buf                ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   integer :: namelen1                                              ! name length
@@ -404,13 +401,13 @@ subroutine h5tbwrite_field_name_f_string(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- character(LEN=*), intent(IN) :: field_name                       ! name of the field
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- character(LEN=*), intent(IN), dimension(*) :: buf                ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ character(len=*), intent(in) :: field_name                       ! name of the field
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ character(len=*), intent(in), dimension(*) :: buf                ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
@@ -419,19 +416,19 @@ subroutine h5tbwrite_field_name_f_string(loc_id,&
   integer function h5tbwrite_field_name_c(loc_id,namelen,dset_name,namelen1,field_name,&
   start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBWRITE_FIELD_NAME_C'::h5tbwrite_field_name_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: field_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  character(LEN=*), intent(IN) :: field_name                       ! name of the field
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  character(LEN=*), intent(IN), dimension(*) :: buf                ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  character(len=*), intent(in) :: field_name                       ! name of the field
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  character(len=*), intent(in), dimension(*) :: buf                ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   integer :: namelen1                                              ! name length
@@ -472,13 +469,13 @@ subroutine h5tbread_field_name_f_int(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- character(LEN=*), intent(IN) :: field_name                       ! name of the field
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- integer, intent(IN), dimension(*) :: buf                         ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ character(len=*), intent(in) :: field_name                       ! name of the field
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ integer, intent(in), dimension(*) :: buf                         ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
@@ -487,19 +484,19 @@ subroutine h5tbread_field_name_f_int(loc_id,&
   integer function h5tbread_field_name_c(loc_id,namelen,dset_name,namelen1,field_name,&
   start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBREAD_FIELD_NAME_C'::h5tbread_field_name_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: field_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  character(LEN=*), intent(IN) :: field_name                       ! name of the field
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  integer, intent(IN), dimension(*) :: buf                         ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  character(len=*), intent(in) :: field_name                       ! name of the field
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  integer, intent(in), dimension(*) :: buf                         ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   integer :: namelen1                                              ! name length
@@ -539,13 +536,13 @@ subroutine h5tbread_field_name_f_float(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- character(LEN=*), intent(IN) :: field_name                       ! name of the field
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- real, intent(IN), dimension(*) :: buf                            ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ character(len=*), intent(in) :: field_name                       ! name of the field
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ real, intent(in), dimension(*) :: buf                            ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
@@ -554,19 +551,19 @@ subroutine h5tbread_field_name_f_float(loc_id,&
   integer function h5tbread_field_name_c(loc_id,namelen,dset_name,namelen1,field_name,&
   start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBREAD_FIELD_NAME_C'::h5tbread_field_name_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: field_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  character(LEN=*), intent(IN) :: field_name                       ! name of the field
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  real, intent(IN), dimension(*) :: buf                            ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  character(len=*), intent(in) :: field_name                       ! name of the field
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  real, intent(in), dimension(*) :: buf                            ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   integer :: namelen1                                              ! name length
@@ -606,13 +603,13 @@ subroutine h5tbread_field_name_f_double(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- character(LEN=*), intent(IN) :: field_name                       ! name of the field
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- double precision, intent(IN), dimension(*) :: buf                ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ character(len=*), intent(in) :: field_name                       ! name of the field
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ double precision, intent(in), dimension(*) :: buf                ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
@@ -621,19 +618,19 @@ subroutine h5tbread_field_name_f_double(loc_id,&
   integer function h5tbread_field_name_c(loc_id,namelen,dset_name,namelen1,field_name,&
   start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBREAD_FIELD_NAME_C'::h5tbread_field_name_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: field_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  character(LEN=*), intent(IN) :: field_name                       ! name of the field
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  double precision, intent(IN), dimension(*) :: buf                ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  character(len=*), intent(in) :: field_name                       ! name of the field
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  double precision, intent(in), dimension(*) :: buf                ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   integer :: namelen1                                              ! name length
@@ -673,13 +670,13 @@ subroutine h5tbread_field_name_f_string(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- character(LEN=*), intent(IN) :: field_name                       ! name of the field
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- character(LEN=*), intent(IN), dimension(*) :: buf                ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ character(len=*), intent(in) :: field_name                       ! name of the field
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ character(len=*), intent(in), dimension(*) :: buf                ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
@@ -688,19 +685,19 @@ subroutine h5tbread_field_name_f_string(loc_id,&
   integer function h5tbread_field_name_c(loc_id,namelen,dset_name,namelen1,field_name,&
   start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBREAD_FIELD_NAME_C'::h5tbread_field_name_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: field_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  character(LEN=*), intent(IN) :: field_name                       ! name of the field
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  character(LEN=*), intent(IN), dimension(*) :: buf                ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  character(len=*), intent(in) :: field_name                       ! name of the field
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  character(len=*), intent(in), dimension(*) :: buf                ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   integer :: namelen1                                              ! name length
@@ -716,9 +713,6 @@ subroutine h5tbread_field_name_f_string(loc_id,&
 end subroutine h5tbread_field_name_f_string
 
 
-
-
-
 !-------------------------------------------------------------------------
 ! Function: h5tbwrite_field_index_f_int
 !
@@ -744,13 +738,13 @@ subroutine h5tbwrite_field_index_f_int(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- integer, intent(IN) :: field_index                               ! index
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- integer, intent(IN), dimension(*) :: buf                         ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ integer, intent(in) :: field_index                               ! index
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ integer, intent(in), dimension(*) :: buf                         ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
 
@@ -758,18 +752,18 @@ subroutine h5tbwrite_field_index_f_int(loc_id,&
   integer function h5tbwrite_field_index_c(loc_id,namelen,dset_name,field_index,&
   start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBWRITE_FIELD_INDEX_C'::h5tbwrite_field_index_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  integer, intent(IN) :: field_index                               ! index
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  integer, intent(IN), dimension(*) :: buf                         ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  integer, intent(in) :: field_index                               ! index
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  integer, intent(in), dimension(*) :: buf                         ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   end function h5tbwrite_field_index_c
@@ -807,13 +801,13 @@ subroutine h5tbwrite_field_index_f_float(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- integer, intent(IN) :: field_index                               ! index
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- real, intent(IN), dimension(*) :: buf                            ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ integer, intent(in) :: field_index                               ! index
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ real, intent(in), dimension(*) :: buf                            ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
 
@@ -821,18 +815,18 @@ subroutine h5tbwrite_field_index_f_float(loc_id,&
   integer function h5tbwrite_field_index_c(loc_id,namelen,dset_name,field_index,&
   start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBWRITE_FIELD_INDEX_C'::h5tbwrite_field_index_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  integer, intent(IN) :: field_index                               ! index
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  real, intent(IN), dimension(*) :: buf                            ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  integer, intent(in) :: field_index                               ! index
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  real, intent(in), dimension(*) :: buf                            ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   end function h5tbwrite_field_index_c
@@ -872,13 +866,13 @@ subroutine h5tbwrite_field_index_f_double(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- integer, intent(IN) :: field_index                               ! index
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- double precision, intent(IN), dimension(*) :: buf                ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ integer, intent(in) :: field_index                               ! index
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ double precision, intent(in), dimension(*) :: buf                ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
 
@@ -886,18 +880,18 @@ subroutine h5tbwrite_field_index_f_double(loc_id,&
   integer function h5tbwrite_field_index_c(loc_id,namelen,dset_name,field_index,&
   start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBWRITE_FIELD_INDEX_C'::h5tbwrite_field_index_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  integer, intent(IN) :: field_index                               ! index
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  double precision, intent(IN), dimension(*) :: buf                ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  integer, intent(in) :: field_index                               ! index
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  double precision, intent(in), dimension(*) :: buf                ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   end function h5tbwrite_field_index_c
@@ -935,13 +929,13 @@ subroutine h5tbwrite_field_index_f_string(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- integer, intent(IN) :: field_index                               ! index
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- character(LEN=*), intent(IN), dimension(*) :: buf                ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ integer, intent(in) :: field_index                               ! index
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ character(len=*), intent(in), dimension(*) :: buf                ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
 
@@ -949,18 +943,18 @@ subroutine h5tbwrite_field_index_f_string(loc_id,&
   integer function h5tbwrite_field_index_c(loc_id,namelen,dset_name,field_index,&
   start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBWRITE_FIELD_INDEX_C'::h5tbwrite_field_index_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  integer, intent(IN) :: field_index                               ! index
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  character(LEN=*), intent(IN), dimension(*) :: buf                ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  integer, intent(in) :: field_index                               ! index
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  character(len=*), intent(in), dimension(*) :: buf                ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   end function h5tbwrite_field_index_c
@@ -999,13 +993,13 @@ subroutine h5tbread_field_index_f_int(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- integer, intent(IN) :: field_index                               ! index
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- integer, intent(IN), dimension(*) :: buf                         ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ integer, intent(in) :: field_index                               ! index
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ integer, intent(in), dimension(*) :: buf                         ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
 
@@ -1013,18 +1007,18 @@ subroutine h5tbread_field_index_f_int(loc_id,&
   integer function h5tbread_field_index_c(loc_id,namelen,dset_name,field_index,&
   start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBREAD_FIELD_INDEX_C'::h5tbread_field_index_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  integer, intent(IN) :: field_index                               ! index
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  integer, intent(IN), dimension(*) :: buf                         ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  integer, intent(in) :: field_index                               ! index
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  integer, intent(in), dimension(*) :: buf                         ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   end function h5tbread_field_index_c
@@ -1062,13 +1056,13 @@ subroutine h5tbread_field_index_f_float(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- integer, intent(IN) :: field_index                               ! index
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- real, intent(IN), dimension(*) :: buf                            ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ integer, intent(in) :: field_index                               ! index
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ real, intent(in), dimension(*) :: buf                            ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
 
@@ -1076,18 +1070,18 @@ subroutine h5tbread_field_index_f_float(loc_id,&
   integer function h5tbread_field_index_c(loc_id,namelen,dset_name,field_index,&
    start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBREAD_FIELD_INDEX_C'::h5tbread_field_index_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  integer, intent(IN) :: field_index                               ! index
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  real, intent(IN), dimension(*) :: buf                            ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  integer, intent(in) :: field_index                               ! index
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  real, intent(in), dimension(*) :: buf                            ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   end function h5tbread_field_index_c
@@ -1125,13 +1119,13 @@ subroutine h5tbread_field_index_f_double(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- integer, intent(IN) :: field_index                               ! index
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- double precision, intent(IN), dimension(*) :: buf                ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ integer, intent(in) :: field_index                               ! index
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ double precision, intent(in), dimension(*) :: buf                ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
 
@@ -1139,18 +1133,18 @@ subroutine h5tbread_field_index_f_double(loc_id,&
   integer function h5tbread_field_index_c(loc_id,namelen,dset_name,field_index,&
    start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBREAD_FIELD_INDEX_C'::h5tbread_field_index_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  integer, intent(IN) :: field_index                               ! index
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  double precision, intent(IN), dimension(*) :: buf                ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  integer, intent(in) :: field_index                               ! index
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  double precision, intent(in), dimension(*) :: buf                ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   end function h5tbread_field_index_c
@@ -1188,13 +1182,13 @@ subroutine h5tbread_field_index_f_string(loc_id,&
                                       errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- integer, intent(IN) :: field_index                               ! index
- integer(HSIZE_T), intent(IN) :: start                            ! start record 
- integer(HSIZE_T), intent(IN) :: nrecords                         ! records
- integer(SIZE_T),  intent(IN) :: type_size                        ! type size
- character(LEN=*), intent(IN), dimension(*) :: buf                ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ integer, intent(in) :: field_index                               ! index
+ integer(hsize_t), intent(in) :: start                            ! start record 
+ integer(hsize_t), intent(in) :: nrecords                         ! records
+ integer(size_t),  intent(in) :: type_size                        ! type size
+ character(len=*), intent(in), dimension(*) :: buf                ! data buffer 
  integer :: errcode                                               ! error code
  integer :: namelen                                               ! name length
 
@@ -1202,18 +1196,18 @@ subroutine h5tbread_field_index_f_string(loc_id,&
   integer function h5tbread_field_index_c(loc_id,namelen,dset_name,field_index,&
    start,nrecords,type_size,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBREAD_FIELD_INDEX_C'::h5tbread_field_index_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  integer, intent(IN) :: field_index                               ! index
-  integer(HSIZE_T), intent(IN) :: start                            ! start record 
-  integer(HSIZE_T), intent(IN) :: nrecords                         ! records
-  integer(SIZE_T),  intent(IN) :: type_size                        ! type size
-  character(LEN=*), intent(IN), dimension(*) :: buf                ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  integer, intent(in) :: field_index                               ! index
+  integer(hsize_t), intent(in) :: start                            ! start record 
+  integer(hsize_t), intent(in) :: nrecords                         ! records
+  integer(size_t),  intent(in) :: type_size                        ! type size
+  character(len=*), intent(in), dimension(*) :: buf                ! data buffer 
   integer :: errcode                                               ! error code
   integer :: namelen                                               ! name length
   end function h5tbread_field_index_c
@@ -1227,9 +1221,6 @@ subroutine h5tbread_field_index_f_string(loc_id,&
 end subroutine h5tbread_field_index_f_string
 
 
-
-
-
 !-------------------------------------------------------------------------
 ! Function: h5tbinsert_field_f_int
 !
@@ -1253,12 +1244,12 @@ subroutine h5tbinsert_field_f_int(loc_id,&
                                   buf,&
                                   errcode ) 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- character(LEN=*), intent(IN) :: field_name                       ! name of the field
- integer(HID_T), intent(IN)   :: field_type                       ! field type
- integer, intent(IN) :: field_index                               ! field_index
- integer, intent(IN), dimension(*) :: buf                         ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ character(len=*), intent(in) :: field_name                       ! name of the field
+ integer(hid_t), intent(in)   :: field_type                       ! field type
+ integer, intent(in) :: field_index                               ! field_index
+ integer, intent(in), dimension(*) :: buf                         ! data buffer 
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
  integer :: errcode                                               ! error code
@@ -1268,18 +1259,18 @@ subroutine h5tbinsert_field_f_int(loc_id,&
   integer function h5tbinsert_field_c(loc_id,namelen,dset_name,namelen1,field_name,&
    field_type,field_index,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBINSERT_FIELD_C'::h5tbinsert_field_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: field_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  character(LEN=*), intent(IN) :: field_name                       ! name of the field
-  integer(HID_T), intent(IN)   :: field_type                       ! field type
-  integer, intent(IN) :: field_index                               ! field_index
-  integer, intent(IN), dimension(*) :: buf                         ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  character(len=*), intent(in) :: field_name                       ! name of the field
+  integer(hid_t), intent(in)   :: field_type                       ! field type
+  integer, intent(in) :: field_index                               ! field_index
+  integer, intent(in), dimension(*) :: buf                         ! data buffer 
   integer :: namelen                                               ! name length
   integer :: namelen1                                              ! name length length
   end function h5tbinsert_field_c
@@ -1318,12 +1309,12 @@ subroutine h5tbinsert_field_f_float(loc_id,&
                                   buf,&
                                   errcode ) 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- character(LEN=*), intent(IN) :: field_name                       ! name of the field
- integer(HID_T), intent(IN)   :: field_type                       ! field type
- integer, intent(IN) :: field_index                               ! field_index
- real, intent(IN), dimension(*) :: buf                            ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ character(len=*), intent(in) :: field_name                       ! name of the field
+ integer(hid_t), intent(in)   :: field_type                       ! field type
+ integer, intent(in) :: field_index                               ! field_index
+ real, intent(in), dimension(*) :: buf                            ! data buffer 
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
  integer :: errcode                                               ! error code
@@ -1333,18 +1324,18 @@ subroutine h5tbinsert_field_f_float(loc_id,&
   integer function h5tbinsert_field_c(loc_id,namelen,dset_name,namelen1,field_name,&
    field_type,field_index,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBINSERT_FIELD_C'::h5tbinsert_field_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: field_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  character(LEN=*), intent(IN) :: field_name                       ! name of the field
-  integer(HID_T), intent(IN)   :: field_type                       ! field type
-  integer, intent(IN) :: field_index                               ! field_index
-  real, intent(IN), dimension(*) :: buf                            ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  character(len=*), intent(in) :: field_name                       ! name of the field
+  integer(hid_t), intent(in)   :: field_type                       ! field type
+  integer, intent(in) :: field_index                               ! field_index
+  real, intent(in), dimension(*) :: buf                            ! data buffer 
   integer :: namelen                                               ! name length
   integer :: namelen1                                              ! name length length
   end function h5tbinsert_field_c
@@ -1383,12 +1374,12 @@ subroutine h5tbinsert_field_f_double(loc_id,&
                                   buf,&
                                   errcode ) 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- character(LEN=*), intent(IN) :: field_name                       ! name of the field
- integer(HID_T), intent(IN)   :: field_type                       ! field type
- integer, intent(IN) :: field_index                               ! field_index
- double precision, intent(IN), dimension(*) :: buf                ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ character(len=*), intent(in) :: field_name                       ! name of the field
+ integer(hid_t), intent(in)   :: field_type                       ! field type
+ integer, intent(in) :: field_index                               ! field_index
+ double precision, intent(in), dimension(*) :: buf                ! data buffer 
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
  integer :: errcode                                               ! error code
@@ -1398,18 +1389,18 @@ subroutine h5tbinsert_field_f_double(loc_id,&
   integer function h5tbinsert_field_c(loc_id,namelen,dset_name,namelen1,field_name,&
    field_type,field_index,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBINSERT_FIELD_C'::h5tbinsert_field_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: field_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  character(LEN=*), intent(IN) :: field_name                       ! name of the field
-  integer(HID_T), intent(IN)   :: field_type                       ! field type
-  integer, intent(IN) :: field_index                               ! field_index
-  double precision, intent(IN), dimension(*) :: buf                ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  character(len=*), intent(in) :: field_name                       ! name of the field
+  integer(hid_t), intent(in)   :: field_type                       ! field type
+  integer, intent(in) :: field_index                               ! field_index
+  double precision, intent(in), dimension(*) :: buf                ! data buffer 
   integer :: namelen                                               ! name length
   integer :: namelen1                                              ! name length length
   end function h5tbinsert_field_c
@@ -1449,12 +1440,12 @@ subroutine h5tbinsert_field_f_string(loc_id,&
                                   buf,&
                                   errcode ) 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- character(LEN=*), intent(IN) :: field_name                       ! name of the field
- integer(HID_T), intent(IN)   :: field_type                       ! field type
- integer, intent(IN) :: field_index                               ! field_index
- character(LEN=*), intent(IN), dimension(*) :: buf                ! data buffer 
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ character(len=*), intent(in) :: field_name                       ! name of the field
+ integer(hid_t), intent(in)   :: field_type                       ! field type
+ integer, intent(in) :: field_index                               ! field_index
+ character(len=*), intent(in), dimension(*) :: buf                ! data buffer 
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
  integer :: errcode                                               ! error code
@@ -1464,18 +1455,18 @@ subroutine h5tbinsert_field_f_string(loc_id,&
   integer function h5tbinsert_field_c(loc_id,namelen,dset_name,namelen1,field_name,&
    field_type,field_index,buf)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBINSERT_FIELD_C'::h5tbinsert_field_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
   !DEC$ATTRIBUTES reference :: field_name
-  integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
-  character(LEN=*), intent(IN) :: field_name                       ! name of the field
-  integer(HID_T), intent(IN)   :: field_type                       ! field type
-  integer, intent(IN) :: field_index                               ! field_index
-  character(LEN=*), intent(IN), dimension(*) :: buf                ! data buffer 
+  integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+  character(len=*), intent(in) :: field_name                       ! name of the field
+  integer(hid_t), intent(in)   :: field_type                       ! field type
+  integer, intent(in) :: field_index                               ! field_index
+  character(len=*), intent(in), dimension(*) :: buf                ! data buffer 
   integer :: namelen                                               ! name length
   integer :: namelen1                                              ! name length length
   end function h5tbinsert_field_c
@@ -1512,9 +1503,9 @@ subroutine h5tbdelete_field_f(loc_id,&
                               field_name,&
                               errcode ) 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                           ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                        ! name of the dataset 
- character(LEN=*), intent(IN) :: field_name                       ! name of the field
+ integer(hid_t),   intent(in) :: loc_id                           ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                        ! name of the dataset 
+ character(len=*), intent(in) :: field_name                       ! name of the field
  integer :: namelen                                               ! name length
  integer :: namelen1                                              ! name length
  integer :: errcode                                               ! error code
@@ -1523,7 +1514,7 @@ subroutine h5tbdelete_field_f(loc_id,&
  interface
   integer function h5tbdelete_field_c(loc_id,namelen,dset_name,namelen1,field_name)
  
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBDELETE_FIELD_C'::h5tbdelete_field_c
   !DEC$ ENDIF
@@ -1570,24 +1561,24 @@ subroutine h5tbget_table_info_f(loc_id,&
                                 errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
- integer(HSIZE_T), intent(INOUT):: nfields          ! nfields 
- integer(HSIZE_T), intent(INOUT):: nrecords         ! nrecords 
+ integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+ character(len=*), intent(in) :: dset_name          ! name of the dataset 
+ integer(hsize_t), intent(inout):: nfields          ! nfields 
+ integer(hsize_t), intent(inout):: nrecords         ! nrecords 
  integer :: errcode                                 ! error code
  integer :: namelen                                 ! name length
 
  interface
   integer function h5tbget_table_info_c(loc_id,namelen,dset_name,nfields,nrecords)
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBGET_TABLE_INFO_C'::h5tbget_table_info_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id             ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name          ! name of the dataset 
-  integer(HSIZE_T), intent(INOUT):: nfields          ! nfields 
-  integer(HSIZE_T), intent(INOUT):: nrecords         ! nrecords 
+  integer(hid_t),   intent(in) :: loc_id             ! file or group identifier 
+  character(len=*), intent(in) :: dset_name          ! name of the dataset 
+  integer(hsize_t), intent(inout):: nfields          ! nfields 
+  integer(hsize_t), intent(inout):: nrecords         ! nrecords 
   integer :: namelen                                 ! name length
   end function h5tbget_table_info_c
  end interface
@@ -1598,10 +1589,6 @@ subroutine h5tbget_table_info_f(loc_id,&
 end subroutine h5tbget_table_info_f
 
 
-
-
-
-
 !-------------------------------------------------------------------------
 ! Function: h5tbget_field_info_f
 !
@@ -1629,13 +1616,13 @@ subroutine h5tbget_field_info_f(loc_id,&
                                 errcode ) 
 
  implicit none
- integer(HID_T),   intent(IN) :: loc_id                                ! file or group identifier 
- character(LEN=*), intent(IN) :: dset_name                             ! name of the dataset 
- integer(HSIZE_T), intent(IN):: nfields                                ! nfields 
- character(LEN=*), dimension(nfields), intent(INOUT) :: field_names    ! field names
- integer(SIZE_T),  dimension(nfields), intent(INOUT) :: field_sizes    ! field sizes
- integer(SIZE_T),  dimension(nfields), intent(INOUT) :: field_offsets  ! field offsets
- integer(SIZE_T),  intent(INOUT):: type_size                           ! type size 
+ integer(hid_t),   intent(in) :: loc_id                                ! file or group identifier 
+ character(len=*), intent(in) :: dset_name                             ! name of the dataset 
+ integer(hsize_t), intent(in):: nfields                                ! nfields 
+ character(len=*), dimension(nfields), intent(inout) :: field_names    ! field names
+ integer(size_t),  dimension(nfields), intent(inout) :: field_sizes    ! field sizes
+ integer(size_t),  dimension(nfields), intent(inout) :: field_offsets  ! field offsets
+ integer(size_t),  intent(inout):: type_size                           ! type size 
  integer :: errcode                                                    ! error code
  integer :: namelen                                                    ! name length
  integer, dimension(nfields) :: namelen2                               ! name lengths
@@ -1645,18 +1632,18 @@ subroutine h5tbget_field_info_f(loc_id,&
   integer function h5tbget_field_info_c(loc_id,namelen,dset_name,nfields,&
    field_sizes,field_offsets,type_size,namelen2,field_names)
 
-  use H5GLOBAL
+  use h5global
   !DEC$ IF DEFINED(HDF5F90_WINDOWS)
   !MS$ATTRIBUTES C,reference,alias:'_H5TBGET_FIELD_INFO_C'::h5tbget_field_info_c
   !DEC$ ENDIF
   !DEC$ATTRIBUTES reference :: dset_name
-  integer(HID_T),   intent(IN) :: loc_id                                ! file or group identifier 
-  character(LEN=*), intent(IN) :: dset_name                             ! name of the dataset 
-  integer(HSIZE_T), intent(IN):: nfields                                ! nfields 
-  character(LEN=*), dimension(nfields), intent(INOUT) :: field_names    ! field names
-  integer(SIZE_T),  dimension(nfields), intent(INOUT) :: field_sizes    ! field sizes
-  integer(SIZE_T),  dimension(nfields), intent(INOUT) :: field_offsets  ! field offsets
-  integer(SIZE_T),  intent(INOUT):: type_size                           ! type size 
+  integer(hid_t),   intent(in) :: loc_id                                ! file or group identifier 
+  character(len=*), intent(in) :: dset_name                             ! name of the dataset 
+  integer(hsize_t), intent(in):: nfields                                ! nfields 
+  character(len=*), dimension(nfields), intent(inout) :: field_names    ! field names
+  integer(size_t),  dimension(nfields), intent(inout) :: field_sizes    ! field sizes
+  integer(size_t),  dimension(nfields), intent(inout) :: field_offsets  ! field offsets
+  integer(size_t),  intent(inout):: type_size                           ! type size 
   integer :: namelen                                                    ! name length
   integer, dimension(nfields) :: namelen2                               ! name lengths
   end function h5tbget_field_info_c
diff --git a/hl/fortran/test/tstimage.f90 b/hl/fortran/test/tstimage.f90
index 444cd60..42fe52a 100755
--- a/hl/fortran/test/tstimage.f90
+++ b/hl/fortran/test/tstimage.f90
@@ -29,60 +29,84 @@ end program image_test
 
 subroutine make_image1()
 
-use H5IM ! module of H5IM
-use HDF5 ! module of HDF5 library
+use h5im ! module of H5IM
+use hdf5 ! module of HDF5 library
 
 implicit none
 
-character(len=8), parameter :: filename = "f1img.h5" ! File name
-character(LEN=4), parameter :: dsetname1 = "img1"    ! Dataset name
-character(LEN=4), parameter :: dsetname2 = "img2"    ! Dataset name
-character(LEN=15), parameter :: il ="INTERLACE_PIXEL"! Dataset name
-integer(HID_T) :: file_id                            ! File identifier 
-integer(HSIZE_T), parameter :: width  = 30           ! width
-integer(HSIZE_T), parameter :: height = 10           ! width
-integer*1, dimension(width*height) :: buf1           ! Data buffer
-integer*1, dimension(width*height) :: bufr1          ! Data buffer
-integer*1, dimension(width*height*3) :: buf2         ! Data buffer
-integer*1, dimension(width*height*3) :: bufr2        ! Data buffer
-integer(HSIZE_T) :: widthr                           ! width of image  
-integer(HSIZE_T) :: heightr                          ! height of image
-integer(HSIZE_T) :: planesr                          ! color planes
-integer(HSIZE_T) :: npalsr                           ! palettes
-character(LEN=15) :: interlacer                      ! interlace 
-integer :: errcode                                   ! Error flag
-integer :: is_image                                  ! Error flag
-integer :: i, n                                      ! general purpose integer
+character(len=8), parameter :: filename = "f1img.h5" ! file name
+character(len=4), parameter :: dsetname1 = "img1"    ! dataset name
+character(len=4), parameter :: dsetname2 = "img2"    ! dataset name
+character(len=15), parameter :: il ="INTERLACE_PIXEL"! dataset name
+integer(hid_t) :: file_id                            ! file identifier 
+integer(hsize_t), parameter :: width  = 500          ! width of image
+integer(hsize_t), parameter :: height = 200          ! height of image
+integer, parameter :: pal_entries = 9                ! palette number of entries
+integer, dimension(width*height) :: buf1             ! data buffer
+integer, dimension(width*height) :: bufr1            ! data buffer
+integer, dimension(width*height*3) :: buf2           ! data buffer
+integer, dimension(width*height*3) :: bufr2          ! data buffer
+integer(hsize_t) :: widthr                           ! width of image  
+integer(hsize_t) :: heightr                          ! height of image
+integer(hsize_t) :: planesr                          ! color planes
+integer(hsize_t) :: npalsr                           ! palettes
+character(len=15) :: interlacer                      ! interlace 
+integer :: errcode                                   ! error flag
+integer :: is_image                                  ! error flag
+integer :: i, j, n                                   ! general purpose integers
 !
 ! palette
-! create a 9 entry grey palette 
-!
-character(LEN=4), parameter :: pal_name = "pal1"     ! Dataset name
-integer(HSIZE_T), dimension(2) :: pal_dims = (/9,3/) ! Dataset dimensions
-integer(HSIZE_T), dimension(2) :: pal_dims_out       ! Dataset dimensions
-integer*1, dimension(9*3) :: pal_data_in = (/0,0,0,25,25,25,50,50,50,75,75,75,100,100,100,&
- 125,125,125,125,125,125,125,125,125,125,125,125/)
-integer*1, dimension(9*3) :: pal_data_out            ! Data buffer
-integer(HSIZE_T) :: npals                            ! number of palettes
+! create a 9 entry palette 
+!
+character(len=4), parameter :: pal_name = "pal1"     ! dataset name
+integer(hsize_t), dimension(2) :: pal_dims = (/pal_entries,3/) ! palette dimensions
+integer(hsize_t), dimension(2) :: pal_dims_out       ! palette dimensions
+integer, dimension(pal_entries*3) :: pal_data_out    ! data buffer
+integer(hsize_t) :: npals                            ! number of palettes
 integer          :: pal_number                       ! palette number 
 integer          :: is_palette                       ! is palette 
-
-!
-! Initialize the data array.
-!
-n = 0
+integer          :: space
+integer, dimension(pal_entries*3) :: pal_data_in = (/&
+ 0,0,168,&      ! dark blue 
+ 0,0,252,&      ! blue 
+ 0,168,252,&    ! ocean blue 
+ 84,252,252,&   ! light blue 
+ 168,252,168,&  ! light green 
+ 0,252,168,&    ! green 
+ 252,252,84,&   ! yellow 
+ 252,168,0,&    ! orange 
+ 252,0,0/)      ! red 
+
+
+! create an 8bit image of 9 values divided evenly by the array 
+!
+space = width*height / pal_entries;
+n = 0; j = 0;
 do i = 1, width*height
-  buf1(i) = n;
-  n = n + 1;
+  buf1(i) = n
+  if ( j > space ) then
+   n = n + 1;
+   j = 0;
+  endif
+  if (n>pal_entries-1) n=0;
+  j = j +1;
 end do
 
-n = 0
+!
+! create a 3 byte rgb image
+!
+n = 0; j = 0;
 do i = 1, width*height*3
   buf2(i) = n;
-  n = n + 1;
+  if (j == 3) then
+   n = n + 1;
+   j = 0;
+  endif
+  if (n>255) n=0;
+  j = j +1;
 end do
 
-!
+
 ! Initialize FORTRAN predefined datatypes.
 !
 call h5open_f(errcode) 
@@ -113,7 +137,7 @@ call h5imread_image_f(file_id,dsetname1,bufr1,errcode)
 ! compare read and write buffers.
 !
 do i = 1, width*height
- if ( buf1(i) .ne. bufr1(i) ) then
+ if ( buf1(i) /= bufr1(i) ) then
    print *, 'read buffer differs from write buffer'
    print *,  bufr1(i), ' and ',   buf1(i)
    stop
@@ -125,13 +149,13 @@ end do
 !
 call h5imget_image_info_f(file_id,dsetname1,widthr,heightr,planesr,interlacer,npalsr,errcode)
 
-if ( (widthr .ne. widthr) .or. (heightr .ne. height) .or. (planesr .ne. 1)) then
+if ( (widthr /= widthr) .or. (heightr /= height) .or. (planesr /= 1)) then
  print *, 'h5imget_image_info_f bad value'
  stop
 endif
 
 is_image = h5imis_image_f(file_id,dsetname1)
-if ( is_image .ne. 1) then
+if ( is_image /= 1) then
  print *, 'h5imis_image_f bad value'
  stop
 endif
@@ -159,7 +183,7 @@ call h5imread_image_f(file_id,dsetname2,bufr2,errcode)
 ! compare read and write buffers.
 !
 do i = 1, width*height*3
- if ( buf2(i) .ne. bufr2(i) ) then
+ if ( buf2(i) /= bufr2(i) ) then
    print *, 'read buffer differs from write buffer'
    print *,  bufr2(i), ' and ',   buf2(i)
    stop
@@ -171,13 +195,13 @@ end do
 !
 call h5imget_image_info_f(file_id,dsetname2,widthr,heightr,planesr,interlacer,npalsr,errcode)
 
-if ( (widthr .ne. widthr) .or. (heightr .ne. height) .or. (planesr .ne. 3)) then
+if ( (widthr /= widthr) .or. (heightr /= height) .or. (planesr /= 3)) then
  print *, 'h5imget_image_info_f bad value'
  stop
 endif
 
 is_image = h5imis_image_f(file_id,dsetname2)
-if ( is_image .ne. 1) then
+if ( is_image /= 1) then
  print *, 'h5imis_image_f bad value'
  stop
 endif
@@ -217,8 +241,8 @@ call h5imget_palette_f(file_id,dsetname1,pal_number,pal_data_out,errcode)
 !
 ! compare read and write buffers.
 !
-do i = 1, 9*3
- if ( pal_data_in(i) .ne. pal_data_out(i) ) then
+do i = 1, pal_entries*3
+ if ( pal_data_in(i) /= pal_data_out(i) ) then
    print *, 'read buffer differs from write buffer'
    print *,  pal_data_in(i), ' and ',   pal_data_out(i)
    stop
@@ -230,7 +254,7 @@ end do
 !
 call h5imget_npalettes_f(file_id,dsetname1,npals,errcode) 
 
-if ( npals .ne. 1) then
+if ( npals /= 1) then
  print *, 'h5imget_npalettes_f bad value'
  stop
 endif
@@ -241,7 +265,7 @@ endif
 pal_number = 0
 call h5imget_palette_info_f(file_id,dsetname1,pal_number,pal_dims_out,errcode) 
 
-if ( (pal_dims_out(1) .ne. pal_dims(1)) .or. (pal_dims_out(2) .ne. pal_dims(2))) then
+if ( (pal_dims_out(1) /= pal_dims(1)) .or. (pal_dims_out(2) /= pal_dims(2))) then
  print *, 'h5imget_palette_info_f bad value'
  stop
 endif
@@ -251,7 +275,7 @@ endif
 !
 is_palette = h5imis_palette_f(file_id,pal_name) 
 
-if ( is_palette .ne. 1 ) then
+if ( is_palette /= 1 ) then
  print *, 'h5imis_palette_f bad value'
  stop
 endif
@@ -266,11 +290,17 @@ call h5imunlink_palette_f(file_id,dsetname1,pal_name,errcode)
 !
 call h5imget_npalettes_f(file_id,dsetname1,npals,errcode ) 
 
-if ( npals .ne. 0) then
+if ( npals /= 0) then
  print *, 'h5imget_npalettes_f bad value'
  stop
 endif
 
+
+!
+! link palette again
+!
+call h5imlink_palette_f(file_id,dsetname1,pal_name,errcode)
+
 call passed()
 
 
@@ -288,21 +318,17 @@ call h5fclose_f(file_id, errcode)
 !
 call h5close_f(errcode)
 
-
 !
 ! end function.
 !
 end subroutine make_image1
 
-
-
-
 !-------------------------------------------------------------------------
 ! test_begin 
 !-------------------------------------------------------------------------
 
 subroutine test_begin(string)
-character(LEN=*), intent(IN) :: string
+character(len=*), intent(in) :: string
 write(*, fmt = '(14a)', advance = 'no') string
 write(*, fmt = '(40x,a)', advance = 'no') ' ' 
 end subroutine test_begin
diff --git a/hl/fortran/test/tstlite.f90 b/hl/fortran/test/tstlite.f90
index c172d82..f34053a 100644
--- a/hl/fortran/test/tstlite.f90
+++ b/hl/fortran/test/tstlite.f90
@@ -722,11 +722,11 @@ call passed()
 call test_begin(' Find dataset                   ')
 
 
-has = h5ltfind_dataset_f(file_id,dsetname4)
-if ( has .ne. 1 ) then
- print *, 'h5ltfind_dataset_f return error'
- stop
-endif
+!has = h5ltfind_dataset_f(file_id,dsetname4)
+!if ( has .ne. 1 ) then
+! print *, 'h5ltfind_dataset_f return error'
+! stop
+!endif
 
 !
 ! Close the file.
diff --git a/hl/src/H5IM.c b/hl/src/H5IM.c
index 2492562..a97551b 100644
--- a/hl/src/H5IM.c
+++ b/hl/src/H5IM.c
@@ -15,6 +15,17 @@
 #include <string.h>
 #include <stdlib.h>
 
+/*-------------------------------------------------------------------------
+ * private functions
+ *-------------------------------------------------------------------------
+ */
+static 
+herr_t H5IM_get_palette( hid_t loc_id, 
+                         const char *image_name,
+                         int pal_number,
+                         hid_t tid,
+                         void *pal_data);
+
 
 /*-------------------------------------------------------------------------
  * Function: H5IMmake_image_8bit
@@ -23,7 +34,7 @@
  *
  * Return: Success: 0, Failure: -1
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: June 13, 2001
  *
@@ -32,6 +43,8 @@
  *  http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
  *
  * Modifications:
+ *  May 10, 2005
+ *  the  default make image 8bit function saves the image with RANK 2 (2D dataset)
  *
  *-------------------------------------------------------------------------
  */
@@ -42,8 +55,7 @@ herr_t H5IMmake_image_8bit( hid_t loc_id,
                             hsize_t height,
                             const unsigned char *buffer )
 {
- int      rank = 3;
- hsize_t  dims[3];
+ hsize_t  dims[IMAGE8_RANK];
  
   /* Initialize the image dimensions */
  dims[0] = height; 
@@ -51,7 +63,7 @@ herr_t H5IMmake_image_8bit( hid_t loc_id,
  dims[2] = 1;
 
  /* Make the dataset */
- if ( H5LTmake_dataset( loc_id, dset_name, rank, dims, H5T_NATIVE_UCHAR, buffer ) < 0 )
+ if ( H5LTmake_dataset( loc_id, dset_name, IMAGE8_RANK, dims, H5T_NATIVE_UCHAR, buffer ) < 0 )
   return -1;
 
  /* Attach the CLASS attribute */
@@ -59,7 +71,7 @@ herr_t H5IMmake_image_8bit( hid_t loc_id,
   return -1;
 
  /* Attach the VERSION attribute */
- if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_VERSION", "1.2" ) < 0 )
+ if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_VERSION", IMAGE_VERSION ) < 0 )
   return -1;
 
  /* Attach the IMAGE_SUBCLASS attribute */
@@ -69,8 +81,6 @@ herr_t H5IMmake_image_8bit( hid_t loc_id,
  return 0;
 }
 
-
-
 /*-------------------------------------------------------------------------
  * Function: H5IMmake_image_24bit
  *
@@ -78,7 +88,7 @@ herr_t H5IMmake_image_8bit( hid_t loc_id,
  *
  * Return: Success: 0, Failure: -1
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: June 13, 2001
  *
@@ -103,8 +113,7 @@ herr_t H5IMmake_image_24bit( hid_t loc_id,
                              const char *interlace,
                              const unsigned char *buffer )
 {
- int      rank = 3;
- hsize_t  dims[3];
+ hsize_t  dims[IMAGE24_RANK];
  
  /* Initialize the image dimensions */
 
@@ -113,20 +122,20 @@ herr_t H5IMmake_image_24bit( hid_t loc_id,
   /* Number of color planes is defined as the third dimension */
   dims[0] = height; 
   dims[1] = width; 
-  dims[2] = 3; 
+  dims[2] = IMAGE24_RANK; 
  }
  else
  if ( strcmp( interlace, "INTERLACE_PLANE" ) == 0 ) 
  {
   /* Number of color planes is defined as the first dimension */
-  dims[0] = 3; 
+  dims[0] = IMAGE24_RANK; 
   dims[1] = height; 
   dims[2] = width; 
  }
  else return -1;
  
  /* Make the dataset */
- if ( H5LTmake_dataset( loc_id, dset_name, rank, dims, H5T_NATIVE_UCHAR, buffer ) < 0 )
+ if ( H5LTmake_dataset( loc_id, dset_name, IMAGE24_RANK, dims, H5T_NATIVE_UCHAR, buffer ) < 0 )
   return -1;
 
  /* Attach the CLASS attribute */
@@ -134,7 +143,7 @@ herr_t H5IMmake_image_24bit( hid_t loc_id,
   return -1;
 
  /* Attach the VERSION attribute */
- if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_VERSION", "1.2" ) < 0 )
+ if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_VERSION", IMAGE_VERSION ) < 0 )
   return -1;
 
  /* Attach the IMAGE_SUBCLASS attribute */
@@ -158,7 +167,7 @@ herr_t H5IMmake_image_24bit( hid_t loc_id,
  *
  * Return: 
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: May 28, 2001
  *
@@ -202,7 +211,7 @@ static herr_t find_palette( hid_t loc_id, const char *name, void  *op_data )
  *
  * Return: Success: 1, Failure: 0
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: May 11, 2001
  *
@@ -235,7 +244,7 @@ static herr_t H5IM_find_palette( hid_t loc_id )
  *
  * Return: Success: 0, Failure: -1
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: July 25, 2001
  *
@@ -249,15 +258,15 @@ static herr_t H5IM_find_palette( hid_t loc_id )
  */
 
 herr_t H5IMget_image_info( hid_t loc_id, 
-                     const char *dset_name, 
-                     hsize_t *width,
-                     hsize_t *height,
-                     hsize_t *planes,
-                     char *interlace,
-                     hssize_t *npals )
+                           const char *dset_name, 
+                           hsize_t *width,
+                           hsize_t *height,
+                           hsize_t *planes,
+                           char *interlace,
+                           hssize_t *npals )
 {
  hid_t   did, sid;  
- hsize_t dims[3];
+ hsize_t dims[IMAGE24_RANK];
  hid_t   attr_id;
  hid_t   attr_type;  
  int     has_attr;
@@ -331,7 +340,7 @@ herr_t H5IMget_image_info( hid_t loc_id,
  {
   *height = dims[0]; 
   *width  = dims[1];
-  *planes = dims[2];
+  *planes = 1;
  }
 
  /* Close */
@@ -403,7 +412,7 @@ out:
  *
  * Return: Success: 0, Failure: -1
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: June 13, 2001
  *
@@ -450,7 +459,7 @@ out:
  *
  * Return: Success: 0, Failure: -1
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: May 01, 2001
  *
@@ -503,7 +512,7 @@ herr_t H5IMmake_palette( hid_t loc_id,
  *
  * Return: Success: 0, Failure: -1
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: May 01, 2001
  *
@@ -673,7 +682,7 @@ out:
  *
  * Return: Success: 0, Failure: -1
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: September 10, 2001
  *
@@ -770,7 +779,7 @@ out:
  *
  * Return: Success: 0, Failure: -1
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: July 22, 2001
  *
@@ -857,7 +866,7 @@ out:
  *
  * Return: Success: 0, Failure: -1
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: July 22, 2001
  *
@@ -871,9 +880,9 @@ out:
  */
 
 herr_t H5IMget_palette_info( hid_t loc_id, 
-                        const char *image_name,
-                        int pal_number,
-                        hsize_t *pal_dims )
+                             const char *image_name,
+                             int pal_number,
+                             hsize_t *pal_dims )
 {
  hid_t      image_id;
  int        has_pal;
@@ -983,7 +992,7 @@ out:
  *
  * Return: Success: 0, Failure: -1
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: August 30, 2001
  *
@@ -1032,12 +1041,10 @@ herr_t H5IMget_palette( hid_t loc_id,
    goto out;
 
   /* Check if it is really a reference */
-
   if ( attr_class == H5T_REFERENCE )
   {
 
    /* Get the reference(s) */
-
    if ( (attr_space_id = H5Aget_space( attr_id )) < 0 )
     goto out;
 
@@ -1075,11 +1082,9 @@ herr_t H5IMget_palette( hid_t loc_id,
   /* Close the attribute. */  
   if ( H5Aclose( attr_id ) < 0 )
    goto out;
-
  }
 
-
-     /* Close the image dataset. */
+ /* Close the image dataset. */
  if ( H5Dclose( image_id ) < 0 )
   return -1;
 
@@ -1098,7 +1103,7 @@ out:
  *
  * Return: true, false, fail
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: August 30, 2001
  *
@@ -1177,8 +1182,6 @@ out:
 
 }
 
-
-
 /*-------------------------------------------------------------------------
  * Function: H5IMis_palette
  *
@@ -1186,7 +1189,7 @@ out:
  *
  * Return: true, false, fail
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
  *
  * Date: August 30, 2001
  *
@@ -1264,3 +1267,485 @@ out:
  return -1;
 
 }
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5IMmake_image_8bitf
+ *
+ * Purpose: Creates and writes an image an 8 bit image
+ *
+ * Return: Success: 0, Failure: -1
+ *
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+ *
+ * Date: May 10, 2005
+ *
+ * Comments:
+ *  This function allows the creation and writing of an 8bit image on disk.
+ *  The memory datatype is H5T_NATIVE_INT. It is supposed to be called from
+ *  the FORTRAN interface where the image buffer is defined as type "integer"
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+
+herr_t H5IMmake_image_8bitf( hid_t loc_id, 
+                             const char *dset_name, 
+                             hsize_t width,
+                             hsize_t height,
+                             void *buf )
+{
+ hid_t    did;                  /* dataset ID */
+ hid_t    sid;                  /* space ID */
+ hsize_t  dims[IMAGE8_RANK];  /* dimensions */
+ 
+ /* initialize the image dimensions */
+ dims[0] = height; 
+ dims[1] = width; 
+ dims[2] = 1; 
+
+/*-------------------------------------------------------------------------
+ * create and write the dataset
+ *-------------------------------------------------------------------------
+ */
+  
+ /* create the data space for the dataset. */
+ if ((sid=H5Screate_simple(IMAGE8_RANK,dims,NULL))<0)
+  return -1;
+
+ /* create the dataset as H5T_NATIVE_UCHAR */
+ if ((did=H5Dcreate(loc_id,dset_name,H5T_NATIVE_UCHAR,sid,H5P_DEFAULT))<0)
+  return -1;
+
+ /* write with memory type H5T_NATIVE_INT */
+ if (buf) 
+ {
+  if (H5Dwrite(did,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf)<0)
+   return -1;
+ }
+
+ /* close */
+ if (H5Dclose(did)<0)
+  return -1;
+ if (H5Sclose(sid)<0)
+  return -1;
+
+/*-------------------------------------------------------------------------
+ * attach the specification attributes
+ *-------------------------------------------------------------------------
+ */
+  
+ /* attach the CLASS attribute */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "CLASS", IMAGE_CLASS ) < 0 )
+  return -1;
+
+ /* attach the VERSION attribute */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_VERSION", IMAGE_VERSION ) < 0 )
+  return -1;
+
+ /* attach the IMAGE_SUBCLASS attribute */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_SUBCLASS", "IMAGE_INDEXED" ) < 0 )
+  return -1;
+
+ return 0;
+}
+
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5IMmake_image_24bitf
+ *
+ * Purpose:
+ *
+ * Return: Success: 0, Failure: -1
+ *
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+ *
+ * Date: May 10, 2005
+ *
+ * Comments:
+ *  This function allows the creation and writing of an 8bit image on disk.
+ *  The memory datatype is H5T_NATIVE_INT. It is supposed to be called from
+ *  the FORTRAN interface where the image buffer is defined as type "integer"
+ *
+ * Interlace Mode Dimensions in the Dataspace 
+ * INTERLACE_PIXEL [height][width][pixel components] 
+ * INTERLACE_PLANE [pixel components][height][width] 
+ *
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+
+herr_t H5IMmake_image_24bitf( hid_t loc_id, 
+                              const char *dset_name, 
+                              hsize_t width,
+                              hsize_t height,
+                              const char *interlace,
+                              void *buf)
+{
+ hid_t    did;                /* dataset ID */
+ hid_t    sid;                /* space ID */
+ hsize_t  dims[IMAGE24_RANK]; /* dimensions */
+
+/*-------------------------------------------------------------------------
+ * attach the image dimensions according to the interlace mode
+ *-------------------------------------------------------------------------
+ */
+ if ( strcmp( interlace, "INTERLACE_PIXEL" ) == 0 ) 
+ {
+  /* Number of color planes is defined as the third dimension */
+  dims[0] = height; 
+  dims[1] = width; 
+  dims[2] = IMAGE24_RANK; 
+ }
+ else
+ if ( strcmp( interlace, "INTERLACE_PLANE" ) == 0 ) 
+ {
+  /* Number of color planes is defined as the first dimension */
+  dims[0] = IMAGE24_RANK; 
+  dims[1] = height; 
+  dims[2] = width; 
+ }
+ else return -1;
+ 
+/*-------------------------------------------------------------------------
+ * create and write the dataset
+ *-------------------------------------------------------------------------
+ */
+  
+ /* create the data space for the dataset. */
+ if ((sid=H5Screate_simple(IMAGE24_RANK,dims,NULL))<0)
+  return -1;
+
+ /* create the dataset as H5T_NATIVE_UCHAR */
+ if ((did=H5Dcreate(loc_id,dset_name,H5T_NATIVE_UCHAR,sid,H5P_DEFAULT))<0)
+  return -1;
+
+ /* write with memory type H5T_NATIVE_INT */
+ if (buf) 
+ {
+  if (H5Dwrite(did,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf)<0)
+   return -1;
+ }
+
+ /* close */
+ if (H5Dclose(did)<0)
+  return -1;
+ if (H5Sclose(sid)<0)
+  return -1;
+
+/*-------------------------------------------------------------------------
+ * attach the specification attributes
+ *-------------------------------------------------------------------------
+ */
+
+ /* Attach the CLASS attribute */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "CLASS", IMAGE_CLASS ) < 0 )
+  return -1;
+
+ /* Attach the VERSION attribute */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_VERSION", IMAGE_VERSION ) < 0 )
+  return -1;
+
+ /* Attach the IMAGE_SUBCLASS attribute */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_SUBCLASS", "IMAGE_TRUECOLOR" ) < 0 )
+  return -1;
+
+ /* Attach the INTERLACE_MODE attribute. This attributes is only for true color images */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "INTERLACE_MODE", interlace ) < 0 )
+  return -1;
+
+ return 0;
+
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5IMread_imagef
+ *
+ * Purpose: Reads image data from disk.
+ *
+ * Return: Success: 0, Failure: -1
+ *
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+ *
+ * Date: May 10, 2005
+ *
+ * Comments:
+ *  This function allows reading of an 8bit image on disk.
+ *  The memory datatype is H5T_NATIVE_INT. It is supposed to be called from
+ *  the FORTRAN interface where the image buffer is defined as type "integer"
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+
+herr_t H5IMread_imagef( hid_t loc_id, 
+                        const char *dset_name, 
+                        void *buf )
+{
+ hid_t   did;  
+
+ /* open the dataset */
+ if ( (did = H5Dopen( loc_id, dset_name )) < 0 )
+  return -1;
+
+ /* read to memory type H5T_NATIVE_INT */
+ if ( H5Dread( did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf ) < 0 )
+  goto out;
+
+ /* close */
+ if ( H5Dclose( did ) )
+  return -1;
+
+ return 0;
+
+out:
+ H5Dclose( did );
+ return -1;
+
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5IMmake_palettef
+ *
+ * Purpose: Creates and writes a palette.
+ *
+ * Return: Success: 0, Failure: -1
+ *
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+ *
+ * Date: May 10, 2005
+ *
+ * Comments:
+ *  This function allows writing of an 8bit palette to disk.
+ *  The memory datatype is H5T_NATIVE_INT. It is supposed to be called from
+ *  the FORTRAN interface where the image buffer is defined as type "integer"
+ *
+ *  based on HDF5 Image and Palette Specification  
+ *  http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+
+herr_t H5IMmake_palettef( hid_t loc_id, 
+                          const char *pal_name,
+                          const hsize_t *pal_dims,
+                          void *pal_data ) 
+
+{  
+ 
+ hid_t did;                /* dataset ID */
+ hid_t sid;                /* space ID */
+ int   has_pal;
+ 
+ /* Check if the dataset already exists */
+ has_pal = H5LTfind_dataset( loc_id, pal_name );
+ 
+ /* It exists. Return */
+ if ( has_pal == 1 )
+  return 0;
+
+/*-------------------------------------------------------------------------
+ * create and write the dataset
+ *-------------------------------------------------------------------------
+ */
+  
+ /* create the data space for the dataset. */
+ if ((sid=H5Screate_simple(2,pal_dims,NULL))<0)
+  return -1;
+
+ /* create the dataset as H5T_NATIVE_UCHAR */
+ if ((did=H5Dcreate(loc_id,pal_name,H5T_NATIVE_UCHAR,sid,H5P_DEFAULT))<0)
+  return -1;
+
+ /* write with memory type H5T_NATIVE_INT */
+ if (pal_data) 
+ {
+  if (H5Dwrite(did,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,pal_data)<0)
+   return -1;
+ }
+
+ /* close */
+ if (H5Dclose(did)<0)
+  return -1;
+ if (H5Sclose(sid)<0)
+  return -1;
+
+/*-------------------------------------------------------------------------
+ * attach the specification attributes
+ *-------------------------------------------------------------------------
+ */
+
+ /* Attach the attribute "CLASS" to the >>palette<< dataset*/
+ if ( H5LTset_attribute_string( loc_id, pal_name, "CLASS", PALETTE_CLASS ) < 0 )
+  return -1;
+
+ /* Attach the attribute "PAL_VERSION" to the >>palette<< dataset*/
+ if ( H5LTset_attribute_string( loc_id, pal_name, "PAL_VERSION", "1.2" ) < 0 )
+  return -1;
+ 
+ return 0;
+
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5IMget_palettef
+ *
+ * Purpose: Read palette
+ *
+ * Return: Success: 0, Failure: -1
+ *
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+ *
+ * Date: May 10, 2005
+ *
+ * Comments:
+ *  This function allows reading of an 8bit palette from disk.
+ *  The memory datatype is H5T_NATIVE_INT. It is supposed to be called from
+ *  the FORTRAN interface where the image buffer is defined as type "integer"
+ *
+ *  based on HDF5 Image and Palette Specification  
+ *  http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+
+herr_t H5IMget_palettef( hid_t loc_id, 
+                         const char *image_name,
+                         int pal_number,
+                         void *pal_data )
+{
+ return H5IM_get_palette(loc_id,image_name,pal_number,H5T_NATIVE_INT,pal_data);
+}
+
+/*-------------------------------------------------------------------------
+ * Function: H5IM_get_palette
+ *
+ * Purpose: private function that reads a palette to memory type TID
+ *
+ * Return: Success: 0, Failure: -1
+ *
+ * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+ *
+ * Date: May 10, 2005
+ *
+ * Comments:
+ *  This function allows reading of an 8bit palette from disk disk
+ *   to memory type TID
+ *  The memory datatype can be H5T_NATIVE_INT or H5T_NATIVE_UCHAR currently. 
+ *   the H5T_NATIVE_INT is supposed to be called from
+ *   the FORTRAN interface where the image buffer is defined as type "integer"
+ *
+ * Comments:
+ *  based on HDF5 Image and Palette Specification  
+ *  http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+
+static 
+herr_t H5IM_get_palette( hid_t loc_id, 
+                         const char *image_name,
+                         int pal_number,
+                         hid_t tid,
+                         void *pal_data)
+{
+ hid_t      image_id;
+ int        has_pal;
+ hid_t      attr_type;
+ hid_t      attr_id;
+ hid_t      attr_space_id;
+ hid_t      attr_class;
+ hssize_t   n_refs;
+ hsize_t    dim_ref;
+ hobj_ref_t *refbuf;     /* buffer to read references */
+ hid_t      pal_id;
+
+ /* Open the dataset. */
+ if ( (image_id = H5Dopen( loc_id, image_name )) < 0 )
+  return -1;
+
+ /* Try to find the attribute "PALETTE" on the >>image<< dataset */
+ has_pal = H5IM_find_palette( image_id );
+
+ if ( has_pal ==  1 )
+ {
+
+  if ( (attr_id = H5Aopen_name( image_id, "PALETTE" )) < 0 )
+   goto out;
+     
+  if ( (attr_type = H5Aget_type( attr_id )) < 0 )
+   goto out;
+
+  if ( (attr_class = H5Tget_class( attr_type )) < 0 )
+   goto out;
+
+  /* Check if it is really a reference */
+  if ( attr_class == H5T_REFERENCE )
+  {
+
+   /* Get the reference(s) */
+   if ( (attr_space_id = H5Aget_space( attr_id )) < 0 )
+    goto out;
+
+   n_refs = H5Sget_simple_extent_npoints( attr_space_id );
+
+   dim_ref = n_refs;
+
+   refbuf = malloc( sizeof(hobj_ref_t) * (int)dim_ref );
+
+   if ( H5Aread( attr_id, attr_type, refbuf ) < 0 )
+    goto out;
+
+   /* Get the palette id */
+   if ( (pal_id = H5Rdereference( image_id, H5R_OBJECT, &refbuf[pal_number] )) < 0 )
+    goto out;
+
+   /* Read the palette dataset using the memory type TID */
+   if ( H5Dread( pal_id, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, pal_data ) < 0 )
+    goto out;
+
+   if ( H5Sclose( attr_space_id ) < 0 )
+    goto out;
+
+   /* close the dereferenced dataset */
+   if (H5Dclose(pal_id)<0)
+    goto out;
+
+   free( refbuf );
+    
+  } /* H5T_REFERENCE */ 
+    
+  if ( H5Tclose( attr_type ) < 0 ) 
+   goto out;
+
+  /* Close the attribute. */  
+  if ( H5Aclose( attr_id ) < 0 )
+   goto out;
+
+ }
+
+ /* Close the image dataset. */
+ if ( H5Dclose( image_id ) < 0 )
+  return -1;
+
+ return 0;
+
+out:
+ H5Dclose( image_id );
+ return -1;
+
+}
diff --git a/hl/src/H5IM.h b/hl/src/H5IM.h
index 608028f..6b7b6d8 100644
--- a/hl/src/H5IM.h
+++ b/hl/src/H5IM.h
@@ -23,7 +23,9 @@ extern "C" {
 
 #define IMAGE_CLASS   "IMAGE"
 #define PALETTE_CLASS "PALETTE"
-
+#define IMAGE_VERSION "1.2"
+#define IMAGE8_RANK    3
+#define IMAGE24_RANK   3
 
 
 herr_t H5IMmake_image_8bit( hid_t loc_id, 
@@ -87,6 +89,34 @@ herr_t H5IMis_image( hid_t loc_id,
 herr_t H5IMis_palette( hid_t loc_id, 
                      const char *dset_name );
 
+herr_t H5IMmake_image_8bitf( hid_t loc_id, 
+                             const char *dset_name, 
+                             hsize_t width,
+                             hsize_t height,
+                             void *buf );
+
+herr_t H5IMmake_image_24bitf( hid_t loc_id, 
+                              const char *dset_name, 
+                              hsize_t width,
+                              hsize_t height,
+                              const char *interlace,
+                              void *buf);
+
+herr_t H5IMread_imagef( hid_t loc_id, 
+                        const char *dset_name, 
+                        void *buf );
+
+herr_t H5IMmake_palettef( hid_t loc_id, 
+                          const char *pal_name,
+                          const hsize_t *pal_dims,
+                          void *pal_data );
+
+herr_t H5IMget_palettef( hid_t loc_id, 
+                         const char *image_name,
+                         int pal_number,
+                         void *pal_data );
+
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/hl/test/pal_rgb.h b/hl/test/pal_rgb.h
index 0b75284..4b66220 100644
--- a/hl/test/pal_rgb.h
+++ b/hl/test/pal_rgb.h
@@ -1,7 +1,7 @@
 
 
 
-const unsigned char pal_rgb[256*3] = {0,0,0,
+const unsigned char pal_rgb[256*3] = {255,255,255,
 0,0,131,
 0,0,135,
 0,0,139,
diff --git a/hl/test/test_image.c b/hl/test/test_image.c
index c7176d9..539991d 100644
--- a/hl/test/test_image.c
+++ b/hl/test/test_image.c
@@ -31,10 +31,12 @@
 #define PAL1_NAME   "rainbow"
 #define PAL2_NAME   "sepia"
 #define PAL3_NAME   "earth"
+#define PAL4_NAME   "blue-red"
 
-#define WIDTH  (hsize_t)50
-#define HEIGHT (hsize_t)20
 
+#define WIDTH       (hsize_t)500
+#define HEIGHT      (hsize_t)200
+#define PAL_ENTRIES 9
 
 /* struct to store RGB values read from a .pal file */
 typedef struct rgb_t {
@@ -86,33 +88,55 @@ static int test_simple(void)
  hsize_t       width;
  hsize_t       height;
  hsize_t       planes;
- hsize_t       pal_dims[] = {9,3};
+ hsize_t       pal_dims[] = {PAL_ENTRIES,3};
  hsize_t       pal_dims_out[2];
  char          interlace[20];
  hssize_t      npals;
- hsize_t       i;
+ hsize_t       i, j;
  herr_t        is_image;
  herr_t        is_pal;
  unsigned char image_in1 [ WIDTH*HEIGHT ];
  unsigned char image_out1[ WIDTH*HEIGHT ];
  unsigned char image_in2 [ WIDTH*HEIGHT*3 ];
  unsigned char image_out2[ WIDTH*HEIGHT*3 ];
- unsigned char pal_data_out[9*3];
- /* create a 9 entry grey palette */
- unsigned char pal_data_in[9*3] = {0,0,0,
- 25,25,25,
- 50,50,50,
- 75,75,75,
- 100,100,100,
- 125,125,125,
- 150,150,150,
- 175,175,175,
- 200,200,200};
-    
- for (i = 0; i < WIDTH*HEIGHT; i++ )
-  image_in1[i] = (unsigned char)i;
- for (i = 0; i < WIDTH*HEIGHT*3; i++)
-  image_in2[i] = (unsigned char)i;
+ unsigned char pal_data_out[PAL_ENTRIES*3];
+ unsigned char n;
+ int space;
+ /* create a PAL_ENTRIES entry palette */
+ unsigned char pal_data_in[PAL_ENTRIES*3] = {
+ 0,0,168,      /* dark blue */
+ 0,0,252,      /* blue */
+ 0,168,252,    /* ocean blue */
+ 84,252,252,   /* light blue */
+ 168,252,168,  /* light green */
+ 0,252,168,    /* green */
+ 252,252,84,   /* yellow */
+ 252,168,0,    /* orange */
+ 252,0,0};     /* red */
+  
+ /* create an image of 9 values divided evenly by the array */
+ space = WIDTH*HEIGHT / PAL_ENTRIES;
+ for (i=0, j=0, n=0; i < WIDTH*HEIGHT; i++, j++ )
+ {
+  image_in1[i] = n;
+  if ( j > space ) 
+  {
+   n++;
+   j=0;
+  }
+  if (n>PAL_ENTRIES-1) n=0;
+ }
+ /* create an image 3 byte RGB image */
+ for (i=0, j=0, n=0; i < WIDTH*HEIGHT*3; i++, j++)
+ {
+  image_in2[i] = n;
+  if (j==3) 
+  {
+   n++;
+   j=0;
+  }
+  if (n>255) n=0;
+ }
  
  /* create a file using default properties */
  if ((fid=H5Fcreate(FILE1,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
@@ -126,7 +150,7 @@ static int test_simple(void)
  *-------------------------------------------------------------------------
  */
 
- TESTING2("indexed image");
+ TESTING2("indexed images");
 
  /* write image */
  if (H5IMmake_image_8bit(fid,"image1",WIDTH,HEIGHT,image_in1)<0)
@@ -166,6 +190,7 @@ static int test_simple(void)
   }
  }
 
+
  PASSED();
 
 /*-------------------------------------------------------------------------
@@ -244,7 +269,7 @@ static int test_simple(void)
   goto out;
 
  /* check */
- for (i = 0; i < 9*3; i++) 
+ for (i = 0; i < PAL_ENTRIES*3; i++) 
  {
   if ( pal_data_in[i] != pal_data_out[i] ) 
   {
@@ -360,7 +385,7 @@ static int test_data(void)
   goto out;
 
 /*-------------------------------------------------------------------------
- * palette #1. sepia palette. 
+ * palette #2. sepia palette. 
  * read a PAL file and attach the palette to the HDF5 file
  *-------------------------------------------------------------------------
  */
@@ -386,12 +411,11 @@ static int test_data(void)
   goto out;
 
 /*-------------------------------------------------------------------------
- * palette #1. earth palette. 
+ * palette #3. earth palette. 
  * read a PAL file and attach the palette to the HDF5 file
  *-------------------------------------------------------------------------
  */
 
- 
  /* read a PAL file */
  if (read_palette(PAL3_FILE, rgb, sizeof(rgb))<0)
   goto out;
@@ -416,6 +440,27 @@ static int test_data(void)
 
 
 /*-------------------------------------------------------------------------
+ * palette #4. blue-red 
+ * make a palette whith blue to red colors
+ *-------------------------------------------------------------------------
+ */
+ for ( i=0, n=0; i<256*3; i+=3, n++)
+ {
+  pal[i]  =n;
+  pal[i+1]=0;
+  pal[i+2]=255-n;
+ }
+
+ /* make a palette */
+ if (H5IMmake_palette(fid,PAL4_NAME,pal_dims,pal)<0)
+  goto out;
+
+ /* attach the palette to the image dataset */
+ if (H5IMlink_palette(fid,IMAGE1_NAME,PAL4_NAME)<0)
+  goto out;
+
+
+/*-------------------------------------------------------------------------
  * true color image example with pixel interlace
  *-------------------------------------------------------------------------
  */
-- 
cgit v0.12