diff options
Diffstat (limited to 'fortran/src')
-rw-r--r-- | fortran/src/H5Aff.f90 | 1397 |
1 files changed, 1318 insertions, 79 deletions
diff --git a/fortran/src/H5Aff.f90 b/fortran/src/H5Aff.f90 index e10f445..4e47709 100644 --- a/fortran/src/H5Aff.f90 +++ b/fortran/src/H5Aff.f90 @@ -83,6 +83,36 @@ END INTERFACE CONTAINS + +!---------------------------------------------------------------------- +! Name: h5acreate_f +! +! Purpose: Creates a dataset as an attribute of a group, dataset, +! or named datatype +! +! Inputs: +! obj_id - identifier of an object (group, dataset, +! or named datatype) attribute is attached to +! name - attribute name +! type_id - attribute datatype identifier +! space_id - attribute dataspace identifier +! +! Outputs: +! attr_id - attribute identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! creation_prp - creation property list identifier +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5acreate_f(obj_id, name, type_id, space_id, attr_id, & hdferr, creation_prp) IMPLICIT NONE @@ -99,7 +129,25 @@ ! list identifier INTEGER :: creation_prp_default INTEGER :: namelen - INTEGER, EXTERNAL :: h5acreate_c +! INTEGER, EXTERNAL :: h5acreate_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5acreate_c(obj_id, name, namelen, type_id, & + space_id, creation_prp_default, attr_id) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5ACREATE_C'::h5acreate_c + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: obj_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER :: creation_prp_default + INTEGER(HID_T), INTENT(OUT) :: attr_id + END FUNCTION h5acreate_c + END INTERFACE + creation_prp_default = H5P_DEFAULT_F namelen = LEN(NAME) if (present(creation_prp)) creation_prp_default = creation_prp @@ -108,6 +156,31 @@ END SUBROUTINE h5acreate_f +!---------------------------------------------------------------------- +! Name: h5aopen_name_f +! +! Purpose: Opens an attribute specified by name. +! +! Inputs: +! obj_id - identifier of a group, dataset, or named +! datatype atttribute to be attached to +! name - attribute name +! Outputs: +! attr_id - attribute identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aopen_name_f(obj_id, name, attr_id, hdferr) IMPLICIT NONE @@ -116,12 +189,52 @@ INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen - INTEGER, EXTERNAL :: h5aopen_name_c + +! INTEGER, EXTERNAL :: h5aopen_name_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aopen_name_c(obj_id, name, namelen, attr_id) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AOPEN_NAME_C'::h5aopen_name_c + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: obj_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(HID_T), INTENT(OUT) :: attr_id + END FUNCTION h5aopen_name_c + END INTERFACE + namelen = LEN(name) hdferr = h5aopen_name_c(obj_id, name, namelen, attr_id) END SUBROUTINE h5aopen_name_f +!---------------------------------------------------------------------- +! Name: h5aopen_idx_f +! +! Purpose: Opens the attribute specified by its index. +! +! Inputs: +! obj_id - identifier of a group, dataset, or named +! datatype an attribute to be attached to +! index - index of the attribute to open (zero-based) +! Outputs: +! attr_id - attribute identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aopen_idx_f(obj_id, index, attr_id, hdferr) IMPLICIT NONE @@ -129,11 +242,53 @@ INTEGER, INTENT(IN) :: index ! Attribute index INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aopen_idx_c + +! INTEGER, EXTERNAL :: h5aopen_idx_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aopen_idx_c(obj_id, index, attr_id) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AOPEN_IDX_C'::h5aopen_idx_c + INTEGER(HID_T), INTENT(IN) :: obj_id + INTEGER, INTENT(IN) :: index + INTEGER(HID_T), INTENT(OUT) :: attr_id + END FUNCTION h5aopen_idx_c + END INTERFACE + hdferr = h5aopen_idx_c(obj_id, index, attr_id) END SUBROUTINE h5aopen_idx_f +!---------------------------------------------------------------------- +! Name: h5awrite_f +! +! Purpose: Writes data to an attribute. +! +! Inputs: +! attr_id - attribute identifier +! memtype_id - attribute memory type identifier +! buf - data to write +! Outputs: +! +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +! Comment: This function is overloaded to write INTEGER, +! REAL, DOUBLE PRECISION and CHARACTER buffers +! up to 7 dimensions. +! +!---------------------------------------------------------------------- SUBROUTINE h5awrite_integer_scalar(attr_id, memtype_id, buf, hdferr) IMPLICIT NONE @@ -142,7 +297,20 @@ ! identifier (in memory) INTEGER, INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_integer_scalar @@ -154,7 +322,20 @@ INTEGER, DIMENSION(:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_integer_1 @@ -167,7 +348,20 @@ INTEGER, DIMENSION(:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_integer_2 @@ -180,7 +374,20 @@ INTEGER, DIMENSION(:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_integer_3 @@ -193,7 +400,20 @@ INTEGER, DIMENSION(:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:,:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_integer_4 @@ -206,7 +426,20 @@ INTEGER, DIMENSION(:,:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:,:,:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_integer_5 @@ -219,7 +452,20 @@ INTEGER, DIMENSION(:,:,:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:,:,:,:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_integer_6 @@ -232,7 +478,20 @@ INTEGER, DIMENSION(:,:,:,:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:,:,:,:,:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_integer_7 @@ -244,7 +503,20 @@ ! identifier (in memory) REAL, INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_real_scalar @@ -256,7 +528,20 @@ REAL, DIMENSION(:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, DIMENSION(:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_real_1 @@ -269,7 +554,21 @@ REAL, DIMENSION(:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN)::buf + REAL, DIMENSION(:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_real_2 @@ -282,7 +581,20 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, DIMENSION(:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_real_3 @@ -295,7 +607,21 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN)::buf + REAL, DIMENSION(:,:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_real_4 @@ -308,7 +634,21 @@ REAL, DIMENSION(:,:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN)::buf + REAL, DIMENSION(:,:,:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_real_5 @@ -321,7 +661,20 @@ REAL, DIMENSION(:,:,:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, DIMENSION(:,:,:,:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_real_6 @@ -334,7 +687,20 @@ REAL, DIMENSION(:,:,:,:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, DIMENSION(:,:,:,:,:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_real_7 @@ -346,7 +712,20 @@ ! identifier (in memory) DOUBLE PRECISION, INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_double_scalar @@ -358,7 +737,20 @@ DOUBLE PRECISION, DIMENSION(:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_double_1 @@ -371,7 +763,20 @@ DOUBLE PRECISION, DIMENSION(:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_double_2 @@ -384,7 +789,20 @@ DOUBLE PRECISION, DIMENSION(:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_double_3 @@ -397,7 +815,20 @@ DOUBLE PRECISION, DIMENSION(:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:,:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_double_4 @@ -410,7 +841,20 @@ DOUBLE PRECISION, DIMENSION(:,:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:,:,:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_double_5 @@ -423,7 +867,20 @@ DOUBLE PRECISION, DIMENSION(:,:,:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:,:,:,:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_double_6 @@ -436,7 +893,20 @@ DOUBLE PRECISION, DIMENSION(:,:,:,:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:,:,:,:,:,:,:), INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + hdferr = h5awrite_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_double_7 @@ -448,7 +918,20 @@ CHARACTER(LEN=*),INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN)::buf + END FUNCTION h5awritec_c + END INTERFACE + hdferr = h5awritec_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_char_scalar @@ -460,7 +943,20 @@ CHARACTER(LEN=*), DIMENSION(*), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), DIMENSION(*)::buf + END FUNCTION h5awritec_c + END INTERFACE + hdferr = h5awritec_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_char_1 @@ -473,7 +969,21 @@ CHARACTER(LEN=*), DIMENSION(:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c + +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), DIMENSION(:,:)::buf + END FUNCTION h5awritec_c + END INTERFACE + hdferr = h5awritec_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_char_2 @@ -486,7 +996,20 @@ CHARACTER(LEN=*), DIMENSION(:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), DIMENSION(:,:,:)::buf + END FUNCTION h5awritec_c + END INTERFACE + hdferr = h5awritec_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_char_3 @@ -499,7 +1022,20 @@ CHARACTER(LEN=*), DIMENSION(:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), DIMENSION(:,:,:,:)::buf + END FUNCTION h5awritec_c + END INTERFACE + hdferr = h5awritec_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_char_4 @@ -512,7 +1048,20 @@ CHARACTER(LEN=*), DIMENSION(:,:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), DIMENSION(:,:,:,:,:)::buf + END FUNCTION h5awritec_c + END INTERFACE + hdferr = h5awritec_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_char_5 @@ -525,7 +1074,20 @@ CHARACTER(LEN=*), DIMENSION(:,:,:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), DIMENSION(:,:,:,:,:,:)::buf + END FUNCTION h5awritec_c + END INTERFACE + hdferr = h5awritec_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_char_6 @@ -538,10 +1100,50 @@ CHARACTER(LEN=*), DIMENSION(:,:,:,:,:,:,:), INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), DIMENSION(:,:,:,:,:,:,:)::buf + END FUNCTION h5awritec_c + END INTERFACE + hdferr = h5awritec_c(attr_id, memtype_id, buf) END SUBROUTINE h5awrite_char_7 +!---------------------------------------------------------------------- +! Name: h5aread_f +! +! Purpose: Reads an attribute. +! +! Inputs: +! attr_id - attribute identifier +! memtype_id - attribute memory type identifier +! Outputs: +! buf - buffer to read attribute data in +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +! Comment: This function is overloaded to write INTEGER, +! REAL, DOUBLE PRECISION and CHARACTER buffers +! up to 7 dimensions. +!---------------------------------------------------------------------- SUBROUTINE h5aread_integer_scalar(attr_id, memtype_id, buf, hdferr) IMPLICIT NONE @@ -550,7 +1152,20 @@ ! identifier (in memory) INTEGER, INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_integer_scalar @@ -559,10 +1174,22 @@ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:), INTENT(OUT) :: buf - ! Attribute data + INTEGER, DIMENSION(:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_integer_1 @@ -572,10 +1199,22 @@ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:), INTENT(OUT) :: buf - ! Attribute data + INTEGER, DIMENSION(:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_integer_2 @@ -585,10 +1224,22 @@ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:,:), INTENT(OUT) :: buf - ! Attribute data + INTEGER, DIMENSION(:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_integer_3 @@ -601,7 +1252,20 @@ INTEGER, DIMENSION(:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:,:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_integer_4 @@ -614,7 +1278,20 @@ INTEGER, DIMENSION(:,:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:,:,:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_integer_5 @@ -627,7 +1304,20 @@ INTEGER, DIMENSION(:,:,:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:,:,:,:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_integer_6 @@ -640,7 +1330,20 @@ INTEGER, DIMENSION(:,:,:,:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, DIMENSION(:,:,:,:,:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_integer_7 @@ -652,7 +1355,20 @@ ! identifier (in memory) REAL, INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_real_scalar @@ -664,7 +1380,20 @@ REAL, DIMENSION(:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, DIMENSION(:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_real_1 @@ -677,7 +1406,20 @@ REAL, DIMENSION(:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, DIMENSION(:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_real_2 @@ -690,7 +1432,20 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, DIMENSION(:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_real_3 @@ -703,7 +1458,20 @@ REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, DIMENSION(:,:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_real_4 @@ -716,7 +1484,20 @@ REAL, DIMENSION(:,:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, DIMENSION(:,:,:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_real_5 @@ -729,7 +1510,20 @@ REAL, DIMENSION(:,:,:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, DIMENSION(:,:,:,:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_real_6 @@ -742,7 +1536,20 @@ REAL, DIMENSION(:,:,:,:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, DIMENSION(:,:,:,:,:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_real_7 @@ -754,7 +1561,20 @@ ! identifier (in memory) DOUBLE PRECISION, INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_double_scalar @@ -766,7 +1586,20 @@ DOUBLE PRECISION, DIMENSION(:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_double_1 @@ -779,7 +1612,20 @@ DOUBLE PRECISION, DIMENSION(:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_double_2 @@ -792,7 +1638,20 @@ DOUBLE PRECISION, DIMENSION(:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_double_3 @@ -805,7 +1664,20 @@ DOUBLE PRECISION, DIMENSION(:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:,:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_double_4 @@ -818,7 +1690,20 @@ DOUBLE PRECISION, DIMENSION(:,:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:,:,:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_double_5 @@ -831,7 +1716,20 @@ DOUBLE PRECISION, DIMENSION(:,:,:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:,:,:,:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_double_6 @@ -844,7 +1742,20 @@ DOUBLE PRECISION, DIMENSION(:,:,:,:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, DIMENSION(:,:,:,:,:,:,:), INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + hdferr = h5aread_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_double_7 @@ -856,7 +1767,21 @@ CHARACTER(LEN=*), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*) :: buf + END FUNCTION h5areadc_c + END INTERFACE + hdferr = h5areadc_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_char_scalar @@ -869,7 +1794,21 @@ CHARACTER(LEN=*), DIMENSION(*), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), DIMENSION(*)::buf + END FUNCTION h5areadc_c + END INTERFACE + hdferr = h5areadc_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_char_1 @@ -882,7 +1821,21 @@ CHARACTER(LEN=*), DIMENSION(:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), DIMENSION(:,:)::buf + END FUNCTION h5areadc_c + END INTERFACE + hdferr = h5areadc_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_char_2 @@ -895,7 +1848,21 @@ CHARACTER(LEN=*), DIMENSION(:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), DIMENSION(:,:,:)::buf + END FUNCTION h5areadc_c + END INTERFACE + hdferr = h5areadc_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_char_3 @@ -908,7 +1875,21 @@ CHARACTER(LEN=*), DIMENSION(:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), DIMENSION(:,:,:,:)::buf + END FUNCTION h5areadc_c + END INTERFACE + hdferr = h5areadc_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_char_4 @@ -921,7 +1902,21 @@ CHARACTER(LEN=*), DIMENSION(:,:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), DIMENSION(:,:,:,:,:)::buf + END FUNCTION h5areadc_c + END INTERFACE + hdferr = h5areadc_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_char_5 @@ -934,7 +1929,21 @@ CHARACTER(LEN=*), DIMENSION(:,:,:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), DIMENSION(:,:,:,:,:,:)::buf + END FUNCTION h5areadc_c + END INTERFACE + hdferr = h5areadc_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_char_6 @@ -947,10 +1956,47 @@ CHARACTER(LEN=*), DIMENSION(:,:,:,:,:,:,:), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), DIMENSION(:,:,:,:,:,:,:)::buf + END FUNCTION h5areadc_c + END INTERFACE + hdferr = h5areadc_c(attr_id, memtype_id, buf) END SUBROUTINE h5aread_char_7 +!---------------------------------------------------------------------- +! Name: h5aget_space_f +! +! Purpose: Gets a copy of the dataspace for an attribute. +! +! Inputs: +! attr_id - attribute identifier +! Outputs: +! space_id - attribite dataspace identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aget_space_f(attr_id, space_id, hdferr) IMPLICIT NONE @@ -958,10 +2004,45 @@ INTEGER(HID_T), INTENT(OUT) :: space_id ! Attribute dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL:: h5aget_space_c + +! INTEGER, EXTERNAL:: h5aget_space_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aget_space_c(attr_id, space_id) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AGET_SPACE_C'::h5aget_space_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(OUT) :: space_id + END FUNCTION h5aget_space_c + END INTERFACE + hdferr = h5aget_space_c(attr_id, space_id) END SUBROUTINE h5aget_space_f +!---------------------------------------------------------------------- +! Name: h5aget_type_f +! +! Purpose: Gets an attribute datatype. +! +! Inputs: +! attr_id - attribute identifier +! Outputs: +! type_id - attribute datatype identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aget_type_f(attr_id, type_id, hdferr) IMPLICIT NONE @@ -969,10 +2050,46 @@ INTEGER(HID_T), INTENT(OUT) :: type_id ! Attribute datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aget_type_c + +! INTEGER, EXTERNAL :: h5aget_type_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aget_type_c(attr_id, type_id) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AGET_TYPE_C'::h5aget_type_c + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(OUT) :: type_id + END FUNCTION h5aget_type_c + END INTERFACE + hdferr = h5aget_type_c(attr_id, type_id) END SUBROUTINE h5aget_type_f +!---------------------------------------------------------------------- +! Name: h5aget_name_f +! +! Purpose: Gets an attribute name. +! +! Inputs: +! attr_id - attribute identifier +! size - size of a buffer to read name in +! Outputs: +! buf - buffer to read name in +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aget_name_f(attr_id, size, buf, hdferr) @@ -984,11 +2101,48 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code: ! name length is successful, ! -1 if fail - INTEGER, EXTERNAL :: h5aget_name_c +! INTEGER, EXTERNAL :: h5aget_name_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aget_name_c(attr_id, size, buf) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AGET_NAME_C'::h5aget_name_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER, INTENT(IN) :: size + CHARACTER(LEN=*), INTENT(OUT) :: buf + END FUNCTION h5aget_name_c + END INTERFACE + hdferr = h5aget_name_c(attr_id, size, buf) END SUBROUTINE h5aget_name_f +!---------------------------------------------------------------------- +! Name: h5aget_num_attrs_f +! +! Purpose: Determines the number of attributes attached to an object. +! +! Inputs: +! obj_id - object (group, dataset, or named datatype) +! identifier +! Outputs: +! attr_num - number of attributes attached to the object +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aget_num_attrs_f(obj_id, attr_num, hdferr) IMPLICIT NONE @@ -996,10 +2150,47 @@ INTEGER, INTENT(OUT) :: attr_num ! Number of attributes of the ! object INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aget_num_attrs_c + +! INTEGER, EXTERNAL :: h5aget_num_attrs_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aget_num_attrs_c(obj_id, attr_num) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5AGET_NUM_ATTRS_C'::h5aget_num_attrs_c + INTEGER(HID_T), INTENT(IN) :: obj_id + INTEGER, INTENT(OUT) :: attr_num + END FUNCTION h5aget_num_attrs_c + END INTERFACE + hdferr = h5aget_num_attrs_c(obj_id, attr_num) END SUBROUTINE h5aget_num_attrs_f +!---------------------------------------------------------------------- +! Name: h5adelete_f +! +! Purpose: Deletes an attribute of an object (group, dataset or +! named datatype) +! +! Inputs: +! obj_id - object identifier +! name - attribute name +! Outputs: +! +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5adelete_f(obj_id, name, hdferr) IMPLICIT NONE @@ -1007,17 +2198,65 @@ CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen - INTEGER, EXTERNAL :: h5adelete_c + +! INTEGER, EXTERNAL :: h5adelete_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5adelete_c(obj_id, name, namelen) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5ADELETE_C'::h5adelete_c + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: obj_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + END FUNCTION h5adelete_c + END INTERFACE + namelen = LEN(name) hdferr = h5adelete_c(obj_id, name, namelen) END SUBROUTINE h5adelete_f +!---------------------------------------------------------------------- +! Name: h5aclose_f +! +! Purpose: Closes the specified attribute. +! +! Inputs: +! attr_id - attribute identifier +! Outputs: +! +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aclose_f(attr_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER, INTENT(OUT) :: hdferr ! Error code: - INTEGER, EXTERNAL :: h5aclose_c + +! INTEGER, EXTERNAL :: h5aclose_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aclose_c(attr_id) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5ACLOSE_C'::h5aclose_c + INTEGER(HID_T), INTENT(IN) :: attr_id + END FUNCTION h5aclose_c + END INTERFACE + hdferr = h5aclose_c(attr_id) END SUBROUTINE h5aclose_f |