summaryrefslogtreecommitdiffstats
path: root/fortran/src
diff options
context:
space:
mode:
authorElena Pourmal <epourmal@hdfgroup.org>2000-11-17 22:43:27 (GMT)
committerElena Pourmal <epourmal@hdfgroup.org>2000-11-17 22:43:27 (GMT)
commit5dad15399582249d6fa0d7100a84b46116925bf8 (patch)
tree9c021ed6bde61abd44769ade48de63c235186983 /fortran/src
parentcfac5f773e8fc360a69d8384674d7a557d5a43f6 (diff)
downloadhdf5-5dad15399582249d6fa0d7100a84b46116925bf8.zip
hdf5-5dad15399582249d6fa0d7100a84b46116925bf8.tar.gz
hdf5-5dad15399582249d6fa0d7100a84b46116925bf8.tar.bz2
[svn-r2975]
Purpose: Code maintenance and development Description: I added two functions h5open_f and h5close_f to initialize C library and Fortran interface (flags, predefined datatypes, etc). Those calls are required for any F90 program that uses HDF5. I renamed H5f90misc.c and H5f90miscf.f90 files to H5f.c and H5ff.f90. New functions are added to those new files. Platforms tested: Solaris 2.6
Diffstat (limited to 'fortran/src')
-rw-r--r--fortran/src/Dependencies9
-rw-r--r--fortran/src/H5Dff.f902
-rw-r--r--fortran/src/H5Ef.c8
-rw-r--r--fortran/src/H5f.c (renamed from fortran/src/H5f90misc.c)34
-rw-r--r--fortran/src/H5f90proto.h13
-rw-r--r--fortran/src/H5ff.f90 (renamed from fortran/src/H5f90miscf.f90)21
-rw-r--r--fortran/src/Makefile.in4
7 files changed, 69 insertions, 22 deletions
diff --git a/fortran/src/Dependencies b/fortran/src/Dependencies
index 8bc0e91..871eb41 100644
--- a/fortran/src/Dependencies
+++ b/fortran/src/Dependencies
@@ -18,6 +18,7 @@ H5Df.lo: \
H5Dff.lo: \
$(srcdir)/H5Dff.f90 \
H5fortran_types.f90 \
+ $(srcdir)/H5Rff.f90 \
$(srcdir)/H5f90global.f90
H5Ef.lo: \
$(srcdir)/H5Ef.c \
@@ -111,13 +112,13 @@ H5f90kit.lo: \
$(srcdir)/H5f90.h \
$(srcdir)/H5f90i.h \
$(srcdir)/H5f90proto.h
-H5f90misc.lo: \
- $(srcdir)/H5f90misc.c \
+H5f.lo: \
+ $(srcdir)/H5f.c \
$(srcdir)/H5f90.h \
$(srcdir)/H5f90i.h \
$(srcdir)/H5f90proto.h
-H5f90miscf.lo: \
- $(srcdir)/H5f90miscf.f90 \
+H5ff.lo: \
+ $(srcdir)/H5ff.f90 \
$(srcdir)/H5f90global.f90
HDF5.lo: \
$(srcdir)/HDF5.f90 \
diff --git a/fortran/src/H5Dff.f90 b/fortran/src/H5Dff.f90
index f573ea7..4fd234e 100644
--- a/fortran/src/H5Dff.f90
+++ b/fortran/src/H5Dff.f90
@@ -106,7 +106,7 @@
INTEGER, EXTERNAL :: h5dcreate_c
creation_prp_default = H5P_DEFAULT_F
- if (present(creation_prp)) creation_prp_default = creation_prp
+ if (present(creation_prp)) creation_prp_default = creation_prp
namelen = LEN(name)
hdferr = h5dcreate_c(loc_id, name, namelen, type_id, space_id, &
creation_prp_default, dset_id)
diff --git a/fortran/src/H5Ef.c b/fortran/src/H5Ef.c
index 0ae4255..57e4b19 100644
--- a/fortran/src/H5Ef.c
+++ b/fortran/src/H5Ef.c
@@ -152,9 +152,9 @@ nh5eget_minor_c(int_f* error_no, _fcd name)
* Inputs: printflag - flag to turn automatic error printing on or off.
* Outputs:
* Returns: 0 on success, -1 on failure
- * Programmer: Xiangyang Su
- * Wednesday, March 29, 2000
- * Modifications:
+ * Programmer: Elena Pourmal
+ * Friday, November 17, 2000
+ * Modifications: major bug fix. Function never disabled printing.
*---------------------------------------------------------------------------*/
int_f
nh5eset_auto_c(int_f* printflag)
@@ -164,6 +164,8 @@ nh5eset_auto_c(int_f* printflag)
if (*printflag == 1)
status = H5Eset_auto((H5E_auto_t)H5Eprint, stderr);
+ if (*printflag == 0)
+ status = H5Eset_auto(NULL,NULL);
if (status >= 0) ret_val = 0;
return ret_val;
}
diff --git a/fortran/src/H5f90misc.c b/fortran/src/H5f.c
index 109ac1a..19f91e6 100644
--- a/fortran/src/H5f90misc.c
+++ b/fortran/src/H5f.c
@@ -307,3 +307,37 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_flags,
ret_value = 0;
return ret_value;
}
+/*---------------------------------------------------------------------------
+ * Name: h5open_c
+ * Purpose: Calls H5open call to initialize C HDF5 library
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Friday, November 17, 2000
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5open_c()
+{
+
+ int ret_value = -1;
+ if (H5open() < 0) return ret_value;
+ ret_value = 0;
+ return ret_value;
+}
+/*---------------------------------------------------------------------------
+ * Name: h5close_c
+ * Purpose: Calls H5close call to close C HDF5 library
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Friday, November 17, 2000
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5close_c()
+{
+
+ int ret_value = -1;
+ if (H5close() < 0) return ret_value;
+ ret_value = 0;
+ return ret_value;
+}
diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h
index e252344..c7cc67b 100644
--- a/fortran/src/H5f90proto.h
+++ b/fortran/src/H5f90proto.h
@@ -889,21 +889,26 @@ extern int_f nh5eget_minor_c(int_f* error_no, _fcd name);
extern int_f nh5eset_auto_c(int_f* printflag);
/*
- * Functions from H5f90misc.c
+ * Functions from H5f.c
*/
-#ifndef H5MISCf90_FNAMES
-# define H5MISCf90_FNAMES
+#ifndef H5_FNAMES
+# define H5_FNAMES
#ifdef DF_CAPFNAMES
+# define nh5open_c FNAME(H5OPEN_C)
+# define nh5close_c FNAME(H5CLOSE_C)
# define nh5init_type_c FNAME(H5INIT_TYPES_C)
# define nh5close_types_c FNAME(H5CLOSE_TYPES_C)
# define nh5init_flags_c FNAME(H5INIT_FLAGS_C)
#else
+# define nh5open_c FNAME(h5open_c)
+# define nh5close_c FNAME(h5close_c)
# define nh5init_types_c FNAME(h5init_types_c)
# define nh5close_types_c FNAME(h5close_types_c)
# define nh5init_flags_c FNAME(h5init_flags_c)
#endif
#endif
-
+extern int_f nh5open_c(void);
+extern int_f nh5close_c(void);
extern int_f nh5init_types_c(hid_t_f *types, hid_t_f * floatingtypes, hid_t_f * integertypes);
extern int_f nh5close_types_c(hid_t_f *types, int_f *lentypes, hid_t_f * floatingtypes, int_f * floatinglen, hid_t_f * integertypes, int_f * integerlen);
diff --git a/fortran/src/H5f90miscf.f90 b/fortran/src/H5ff.f90
index ac5fb0f..198a616 100644
--- a/fortran/src/H5f90miscf.f90
+++ b/fortran/src/H5ff.f90
@@ -1,11 +1,13 @@
- SUBROUTINE h5init_fortran_f(error)
+ SUBROUTINE h5open_f(error)
USE H5GLOBAL
IMPLICIT NONE
INTEGER, INTENT(OUT) :: error
- INTEGER :: error_1, error_2
+ INTEGER :: error_0, error_1, error_2
INTEGER, EXTERNAL :: h5init_types_c
INTEGER, EXTERNAL :: h5init_flags_c
+ INTEGER, EXTERNAL :: h5open_c
+ error_0 = h5open_c()
error_1 = h5init_types_c(predef_types, floating_types, integer_types)
error_1 = h5init_flags_c(H5D_flags, &
H5E_flags, &
@@ -17,19 +19,22 @@
H5R_flags, &
H5S_flags, &
H5T_flags )
- error = error_1 + error_2
+ error = error_0 + error_1 + error_2
- END SUBROUTINE h5init_fortran_f
+ END SUBROUTINE h5open_f
- SUBROUTINE h5close_fortran_f(error)
+ SUBROUTINE h5close_f(error)
USE H5GLOBAL
IMPLICIT NONE
+ INTEGER :: error_1, error_2
INTEGER, INTENT(OUT) :: error
- INTEGER, EXTERNAL :: h5close_types_c
- error = h5close_types_c(predef_types, PREDEF_TYPES_LEN, &
+ INTEGER, EXTERNAL :: h5close_types_c, h5close_c
+ error_1 = h5close_types_c(predef_types, PREDEF_TYPES_LEN, &
floating_types, FLOATING_TYPES_LEN, &
integer_types, INTEGER_TYPES_LEN )
+ error_2 = h5close_c()
+ error = error_1 + error_2
- END SUBROUTINE h5close_fortran_f
+ END SUBROUTINE h5close_f
diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in
index 3cef49c..ef6cc34 100644
--- a/fortran/src/Makefile.in
+++ b/fortran/src/Makefile.in
@@ -27,11 +27,11 @@ FPAR_SRC=H5FDmpioff.f90 HDF5mpio.f90
ADD_PARALLEL_FILES=@ADD_PARALLEL_FILES@
CPARALLEL=${ADD_PARALLEL_FILES:yes=$(CPAR_SRC)}
-CLIB_SRC=H5f90kit.c H5f90misc.c H5Git.c H5Rf.c H5Ff.c H5Sf.c H5Df.c H5Gf.c \
+CLIB_SRC=H5f90kit.c H5f.c H5Git.c H5Rf.c H5Ff.c H5Sf.c H5Df.c H5Gf.c \
H5Af.c H5Tf.c H5Pf.c H5If.c H5Ef.c ${CPARALLEL:no=}
FPARALLEL=${ADD_PARALLEL_FILES:yes=$(FPAR_SRC)}
-FLIB_SRC=H5fortran_types.f90 H5fortran_flags.f90 H5f90global.f90 H5f90miscf.f90 \
+FLIB_SRC=H5fortran_types.f90 H5fortran_flags.f90 H5f90global.f90 H5ff.f90 \
H5Rff.f90 H5Fff.f90 H5Sff.f90 H5Dff.f90 H5Gff.f90 H5Aff.f90 H5Tff.f90 \
H5Pff.f90 H5Iff.f90 H5Eff.f90 HDF5.f90 ${FPARALLEL:no=}