From a9c065c5ce65bb7dca560d53642574dba608dc78 Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Thu, 18 Aug 2011 09:32:47 -0500 Subject: [svn-r21248] Mereged the F2003 branch into the trunk. Items merged: fortran directory, src/libhdf5.settings.in configure.in configure MANIFEST Tested: (all platforms used by daily tests, both with --enable-fortran and --enable-fortran2003) --- MANIFEST | 112 + configure | 142 +- configure.in | 130 +- fortran/Makefile.in | 3 + fortran/doc/DevelGuide/masterindex.html | 589 + fortran/doc/DevelGuide/robo_functions.html | 39 + fortran/doc/DevelGuide/robo_modules.html | 117 + fortran/doc/DevelGuide/robo_programs.html | 39 + fortran/doc/DevelGuide/robo_sourcefiles.html | 309 + fortran/doc/DevelGuide/robo_subroutines.html | 421 + fortran/doc/DevelGuide/robodoc.css | 302 + fortran/doc/DevelGuide/src/H5Af_c.html | 41 + fortran/doc/DevelGuide/src/H5Aff_F03_f90.html | 130 + fortran/doc/DevelGuide/src/H5Aff_F90_f90.html | 56 + fortran/doc/DevelGuide/src/H5Aff_f90.html | 1102 ++ fortran/doc/DevelGuide/src/H5Df_c.html | 41 + fortran/doc/DevelGuide/src/H5Dff_F03_f90.html | 138 + fortran/doc/DevelGuide/src/H5Dff_F90_f90.html | 116 + fortran/doc/DevelGuide/src/H5Dff_f90.html | 506 + fortran/doc/DevelGuide/src/H5Ef_c.html | 41 + fortran/doc/DevelGuide/src/H5Eff_f90.html | 197 + fortran/doc/DevelGuide/src/H5FDmpiof_c.html | 41 + fortran/doc/DevelGuide/src/H5FDmpioff_f90.html | 253 + fortran/doc/DevelGuide/src/H5Ff_c.html | 41 + fortran/doc/DevelGuide/src/H5Fff_f90.html | 653 ++ fortran/doc/DevelGuide/src/H5Gf_c.html | 41 + fortran/doc/DevelGuide/src/H5Gff_f90.html | 840 ++ fortran/doc/DevelGuide/src/H5If_c.html | 41 + fortran/doc/DevelGuide/src/H5Iff_f90.html | 304 + fortran/doc/DevelGuide/src/H5Lf_c.html | 41 + fortran/doc/DevelGuide/src/H5Lff_F03_f90.html | 181 + fortran/doc/DevelGuide/src/H5Lff_F90_f90.html | 50 + fortran/doc/DevelGuide/src/H5Lff_f90.html | 637 ++ fortran/doc/DevelGuide/src/H5Of_c.html | 41 + fortran/doc/DevelGuide/src/H5Off_f90.html | 198 + fortran/doc/DevelGuide/src/H5Pf_c.html | 41 + fortran/doc/DevelGuide/src/H5Pff_F03_f90.html | 832 ++ fortran/doc/DevelGuide/src/H5Pff_F90_f90.html | 715 ++ fortran/doc/DevelGuide/src/H5Pff_f90.html | 4752 ++++++++ fortran/doc/DevelGuide/src/H5Rf_c.html | 41 + fortran/doc/DevelGuide/src/H5Rff_F03_f90.html | 492 + fortran/doc/DevelGuide/src/H5Rff_F90_f90.html | 305 + fortran/doc/DevelGuide/src/H5Rff_f90.html | 148 + fortran/doc/DevelGuide/src/H5Sf_c.html | 41 + fortran/doc/DevelGuide/src/H5Sff_f90.html | 1165 ++ fortran/doc/DevelGuide/src/H5Tf_c.html | 41 + fortran/doc/DevelGuide/src/H5Tff_f90.html | 2378 ++++ fortran/doc/DevelGuide/src/H5Zf_c.html | 41 + fortran/doc/DevelGuide/src/H5Zff_f90.html | 173 + .../src/H5_DBLE_InterfaceExclude_f90.html | 53 + .../src/H5_DBLE_InterfaceInclude_f90.html | 54 + fortran/doc/DevelGuide/src/H5_f_c.html | 41 + fortran/doc/DevelGuide/src/H5_ff_F03_f90.html | 83 + fortran/doc/DevelGuide/src/H5_ff_F90_f90.html | 48 + fortran/doc/DevelGuide/src/H5_ff_f90.html | 269 + fortran/doc/DevelGuide/src/H5f90global_f90.html | 61 + fortran/doc/DevelGuide/src/H5f90kit_c.html | 44 + fortran/doc/DevelGuide/src/H5match_types_c.html | 49 + .../doc/DevelGuide/src/H5test_kind_SIZEOF_f90.html | 61 + fortran/doc/DevelGuide/src/H5test_kind_f90.html | 62 + fortran/doc/DevelGuide/src/HDF5_f90.html | 47 + fortran/doc/DevelGuide/src/HDF5mpio_f90.html | 45 + fortran/doc/DevelGuide/test/fflush1_f90.html | 47 + fortran/doc/DevelGuide/test/fflush2_f90.html | 47 + .../DevelGuide/test/fortranlib_test_1_8_f90.html | 44 + .../DevelGuide/test/fortranlib_test_F03_f90.html | 45 + .../doc/DevelGuide/test/fortranlib_test_f90.html | 44 + fortran/doc/DevelGuide/test/tF2003_f90.html | 53 + fortran/doc/DevelGuide/test/tH5A_1_8_f90.html | 51 + fortran/doc/DevelGuide/test/tH5A_f90.html | 47 + fortran/doc/DevelGuide/test/tH5D_f90.html | 52 + fortran/doc/DevelGuide/test/tH5E_f90.html | 51 + fortran/doc/DevelGuide/test/tH5F_f90.html | 47 + fortran/doc/DevelGuide/test/tH5G_1_8_f90.html | 49 + fortran/doc/DevelGuide/test/tH5G_f90.html | 47 + fortran/doc/DevelGuide/test/tH5I_f90.html | 47 + fortran/doc/DevelGuide/test/tH5O_f90.html | 47 + fortran/doc/DevelGuide/test/tH5P_f90.html | 47 + fortran/doc/DevelGuide/test/tH5R_f90.html | 51 + fortran/doc/DevelGuide/test/tH5S_f90.html | 54 + fortran/doc/DevelGuide/test/tH5Sselect_f90.html | 56 + fortran/doc/DevelGuide/test/tH5T_f90.html | 47 + fortran/doc/DevelGuide/test/tH5VL_f90.html | 47 + fortran/doc/DevelGuide/test/tH5Z_f90.html | 47 + fortran/doc/DevelGuide/test/t_c.html | 44 + fortran/doc/DevelGuide/test/tf_f90.html | 48 + fortran/doc/DevelGuide/toc_index.html | 552 + fortran/examples/Makefile.am | 33 +- fortran/examples/Makefile.in | 35 +- fortran/examples/compound_complex_fortran2003.f90 | 117 + fortran/examples/compound_fortran2003.f90 | 208 + fortran/examples/nested_derived_type.f90 | 212 + fortran/examples/rwdset_fortran2003.f90 | 181 + fortran/robodoc.rc | 73 + fortran/src/H5Af.c | 913 +- fortran/src/H5Aff.f90 | 2961 ++--- fortran/src/H5Aff_F03.f90 | 1418 +++ fortran/src/H5Aff_F90.f90 | 1618 +++ fortran/src/H5Df.c | 978 +- fortran/src/H5Dff.f90 | 5027 ++------- fortran/src/H5Dff_F03.f90 | 2912 +++++ fortran/src/H5Dff_F90.f90 | 3002 +++++ fortran/src/H5Ef.c | 410 +- fortran/src/H5Eff.f90 | 284 +- fortran/src/H5Eff_F03.f90 | 248 + fortran/src/H5Eff_F90.f90 | 89 + fortran/src/H5FDmpiof.c | 163 +- fortran/src/H5FDmpioff.f90 | 457 +- fortran/src/H5Ff.c | 392 +- fortran/src/H5Fff.f90 | 1675 ++- fortran/src/H5Gf.c | 479 +- fortran/src/H5Gff.f90 | 1673 ++- fortran/src/H5If.c | 181 +- fortran/src/H5Iff.f90 | 684 +- fortran/src/H5Lf.c | 617 +- fortran/src/H5Lff.f90 | 814 +- fortran/src/H5Lff_F03.f90 | 225 + fortran/src/H5Lff_F90.f90 | 39 + fortran/src/H5Of.c | 241 +- fortran/src/H5Off.f90 | 195 +- fortran/src/H5Off_F03.f90 | 264 + fortran/src/H5Off_F90.f90 | 39 + fortran/src/H5Pf.c | 3325 ++++-- fortran/src/H5Pff.f90 | 11213 +++++++++---------- fortran/src/H5Pff_F03.f90 | 1353 +++ fortran/src/H5Pff_F90.f90 | 1203 ++ fortran/src/H5Rf.c | 430 +- fortran/src/H5Rff.f90 | 662 +- fortran/src/H5Rff_F03.f90 | 655 ++ fortran/src/H5Rff_F90.f90 | 449 + fortran/src/H5Sf.c | 824 +- fortran/src/H5Sff.f90 | 1880 ++-- fortran/src/H5Tf.c | 1615 ++- fortran/src/H5Tff.f90 | 3379 +++--- fortran/src/H5Tff_F03.f90 | 114 + fortran/src/H5Tff_F90.f90 | 39 + fortran/src/H5Zf.c | 92 +- fortran/src/H5Zff.f90 | 369 +- fortran/src/H5_DBLE_InterfaceExclude.f90 | 2 +- fortran/src/H5_DBLE_InterfaceInclude.f90 | 2 +- fortran/src/H5_f.c | 430 +- fortran/src/H5_ff.f90 | 332 +- fortran/src/H5_ff_F03.f90 | 72 + fortran/src/H5_ff_F90.f90 | 34 + fortran/src/H5f90global.f90 | 236 +- fortran/src/H5f90kit.c | 96 +- fortran/src/H5f90proto.h | 1113 +- fortran/src/H5match_types.c | 256 +- fortran/src/H5test_kind.f90 | 119 +- fortran/src/H5test_kind_SIZEOF.f90 | 94 +- fortran/src/HDF5.f90 | 23 +- fortran/src/HDF5mpio.f90 | 86 +- fortran/src/Makefile.am | 61 +- fortran/src/Makefile.in | 86 +- fortran/test/Makefile.am | 23 +- fortran/test/Makefile.in | 45 +- fortran/test/fflush1.f90 | 19 +- fortran/test/fflush2.f90 | 21 +- fortran/test/fortranlib_test.f90 | 17 +- fortran/test/fortranlib_test_1_8.f90 | 353 +- fortran/test/fortranlib_test_F03.f90 | 168 + fortran/test/t.c | 16 +- fortran/test/tH5A.f90 | 15 + fortran/test/tH5A_1_8.f90 | 588 +- fortran/test/tH5D.f90 | 22 +- fortran/test/tH5E.f90 | 18 + fortran/test/tH5E_F03.f90 | 210 + fortran/test/tH5F.f90 | 23 +- fortran/test/tH5G.f90 | 15 + fortran/test/tH5G_1_8.f90 | 150 +- fortran/test/tH5I.f90 | 30 +- fortran/test/tH5L_F03.f90 | 334 + fortran/test/tH5O.f90 | 14 + fortran/test/tH5P.f90 | 55 +- fortran/test/tH5P_F03.f90 | 364 + fortran/test/tH5R.f90 | 63 +- fortran/test/tH5S.f90 | 24 +- fortran/test/tH5Sselect.f90 | 143 +- fortran/test/tH5T.f90 | 18 +- fortran/test/tH5T_F03.f90 | 2549 +++++ fortran/test/tH5VL.f90 | 22 +- fortran/test/tH5Z.f90 | 14 + fortran/test/tf.f90 | 63 +- fortran/testpar/Makefile.in | 3 + src/libhdf5.settings.in | 1 + 185 files changed, 62445 insertions(+), 24182 deletions(-) create mode 100644 fortran/doc/DevelGuide/masterindex.html create mode 100644 fortran/doc/DevelGuide/robo_functions.html create mode 100644 fortran/doc/DevelGuide/robo_modules.html create mode 100644 fortran/doc/DevelGuide/robo_programs.html create mode 100644 fortran/doc/DevelGuide/robo_sourcefiles.html create mode 100644 fortran/doc/DevelGuide/robo_subroutines.html create mode 100644 fortran/doc/DevelGuide/robodoc.css create mode 100644 fortran/doc/DevelGuide/src/H5Af_c.html create mode 100644 fortran/doc/DevelGuide/src/H5Aff_F03_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Aff_F90_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Aff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Df_c.html create mode 100644 fortran/doc/DevelGuide/src/H5Dff_F03_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Dff_F90_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Dff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Ef_c.html create mode 100644 fortran/doc/DevelGuide/src/H5Eff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5FDmpiof_c.html create mode 100644 fortran/doc/DevelGuide/src/H5FDmpioff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Ff_c.html create mode 100644 fortran/doc/DevelGuide/src/H5Fff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Gf_c.html create mode 100644 fortran/doc/DevelGuide/src/H5Gff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5If_c.html create mode 100644 fortran/doc/DevelGuide/src/H5Iff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Lf_c.html create mode 100644 fortran/doc/DevelGuide/src/H5Lff_F03_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Lff_F90_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Lff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Of_c.html create mode 100644 fortran/doc/DevelGuide/src/H5Off_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Pf_c.html create mode 100644 fortran/doc/DevelGuide/src/H5Pff_F03_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Pff_F90_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Pff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Rf_c.html create mode 100644 fortran/doc/DevelGuide/src/H5Rff_F03_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Rff_F90_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Rff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Sf_c.html create mode 100644 fortran/doc/DevelGuide/src/H5Sff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Tf_c.html create mode 100644 fortran/doc/DevelGuide/src/H5Tff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5Zf_c.html create mode 100644 fortran/doc/DevelGuide/src/H5Zff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5_DBLE_InterfaceExclude_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5_DBLE_InterfaceInclude_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5_f_c.html create mode 100644 fortran/doc/DevelGuide/src/H5_ff_F03_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5_ff_F90_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5_ff_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5f90global_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5f90kit_c.html create mode 100644 fortran/doc/DevelGuide/src/H5match_types_c.html create mode 100644 fortran/doc/DevelGuide/src/H5test_kind_SIZEOF_f90.html create mode 100644 fortran/doc/DevelGuide/src/H5test_kind_f90.html create mode 100644 fortran/doc/DevelGuide/src/HDF5_f90.html create mode 100644 fortran/doc/DevelGuide/src/HDF5mpio_f90.html create mode 100644 fortran/doc/DevelGuide/test/fflush1_f90.html create mode 100644 fortran/doc/DevelGuide/test/fflush2_f90.html create mode 100644 fortran/doc/DevelGuide/test/fortranlib_test_1_8_f90.html create mode 100644 fortran/doc/DevelGuide/test/fortranlib_test_F03_f90.html create mode 100644 fortran/doc/DevelGuide/test/fortranlib_test_f90.html create mode 100644 fortran/doc/DevelGuide/test/tF2003_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5A_1_8_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5A_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5D_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5E_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5F_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5G_1_8_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5G_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5I_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5O_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5P_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5R_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5S_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5Sselect_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5T_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5VL_f90.html create mode 100644 fortran/doc/DevelGuide/test/tH5Z_f90.html create mode 100644 fortran/doc/DevelGuide/test/t_c.html create mode 100644 fortran/doc/DevelGuide/test/tf_f90.html create mode 100644 fortran/doc/DevelGuide/toc_index.html create mode 100644 fortran/examples/compound_complex_fortran2003.f90 create mode 100644 fortran/examples/compound_fortran2003.f90 create mode 100644 fortran/examples/nested_derived_type.f90 create mode 100644 fortran/examples/rwdset_fortran2003.f90 create mode 100644 fortran/robodoc.rc create mode 100644 fortran/src/H5Aff_F03.f90 create mode 100644 fortran/src/H5Aff_F90.f90 create mode 100644 fortran/src/H5Dff_F03.f90 create mode 100644 fortran/src/H5Dff_F90.f90 create mode 100644 fortran/src/H5Eff_F03.f90 create mode 100644 fortran/src/H5Eff_F90.f90 create mode 100644 fortran/src/H5Lff_F03.f90 create mode 100644 fortran/src/H5Lff_F90.f90 create mode 100644 fortran/src/H5Off_F03.f90 create mode 100644 fortran/src/H5Off_F90.f90 create mode 100644 fortran/src/H5Pff_F03.f90 create mode 100644 fortran/src/H5Pff_F90.f90 create mode 100644 fortran/src/H5Rff_F03.f90 create mode 100644 fortran/src/H5Rff_F90.f90 create mode 100644 fortran/src/H5Tff_F03.f90 create mode 100644 fortran/src/H5Tff_F90.f90 create mode 100644 fortran/src/H5_ff_F03.f90 create mode 100644 fortran/src/H5_ff_F90.f90 create mode 100644 fortran/test/fortranlib_test_F03.f90 create mode 100644 fortran/test/tH5E_F03.f90 create mode 100644 fortran/test/tH5L_F03.f90 create mode 100644 fortran/test/tH5P_F03.f90 create mode 100644 fortran/test/tH5T_F03.f90 diff --git a/MANIFEST b/MANIFEST index f2ee89e..50a40a4 100644 --- a/MANIFEST +++ b/MANIFEST @@ -151,10 +151,97 @@ ./fortran/Makefile.am ./fortran/Makefile.in +./fortran/robodoc.rc +./fortran/doc/DevelGuide/toc_index.html +./fortran/doc/DevelGuide/masterindex.html +./fortran/doc/DevelGuide/robo_subroutines.html +./fortran/doc/DevelGuide/robo_sourcefiles.html +./fortran/doc/DevelGuide/robo_functions.html +./fortran/doc/DevelGuide/robo_modules.html +./fortran/doc/DevelGuide/robo_programs.html +./fortran/doc/DevelGuide/robodoc.css +./fortran/doc/DevelGuide/test/fortranlib_test_f90.html +./fortran/doc/DevelGuide/test/tH5A_f90.html +./fortran/doc/DevelGuide/test/tH5VL_f90.html +./fortran/doc/DevelGuide/test/tH5D_f90.html +./fortran/doc/DevelGuide/test/tH5E_f90.html +./fortran/doc/DevelGuide/test/tH5F_f90.html +./fortran/doc/DevelGuide/test/tH5G_f90.html +./fortran/doc/DevelGuide/test/fflush1_f90.html +./fortran/doc/DevelGuide/test/fortranlib_test_1_8_f90.html +./fortran/doc/DevelGuide/test/tH5A_1_8_f90.html +./fortran/doc/DevelGuide/test/tf_f90.html +./fortran/doc/DevelGuide/test/fflush2_f90.html +./fortran/doc/DevelGuide/test/fortranlib_test_F03_f90.html +./fortran/doc/DevelGuide/test/tH5I_f90.html +./fortran/doc/DevelGuide/test/tH5G_1_8_f90.html +./fortran/doc/DevelGuide/test/tF2003_f90.html +./fortran/doc/DevelGuide/test/tH5O_f90.html +./fortran/doc/DevelGuide/test/tH5P_f90.html +./fortran/doc/DevelGuide/test/tH5R_f90.html +./fortran/doc/DevelGuide/test/tH5S_f90.html +./fortran/doc/DevelGuide/test/tH5Sselect_f90.html +./fortran/doc/DevelGuide/test/tH5T_f90.html +./fortran/doc/DevelGuide/test/t_c.html +./fortran/doc/DevelGuide/test/tH5Z_f90.html +./fortran/doc/DevelGuide/src/H5Fff_f90.html +./fortran/doc/DevelGuide/src/H5Zf_c.html +./fortran/doc/DevelGuide/src/H5Pff_F90_f90.html +./fortran/doc/DevelGuide/src/H5Aff_F03_f90.html +./fortran/doc/DevelGuide/src/H5match_types_c.html +./fortran/doc/DevelGuide/src/H5Rff_F90_f90.html +./fortran/doc/DevelGuide/src/H5Lff_f90.html +./fortran/doc/DevelGuide/src/H5FDmpiof_c.html +./fortran/doc/DevelGuide/src/H5_f_c.html +./fortran/doc/DevelGuide/src/H5Pff_f90.html +./fortran/doc/DevelGuide/src/H5Rff_f90.html +./fortran/doc/DevelGuide/src/H5Tff_f90.html +./fortran/doc/DevelGuide/src/H5test_kind_f90.html +./fortran/doc/DevelGuide/src/H5Aff_F90_f90.html +./fortran/doc/DevelGuide/src/H5Zff_f90.html +./fortran/doc/DevelGuide/src/HDF5_f90.html +./fortran/doc/DevelGuide/src/H5_DBLE_InterfaceInclude_f90.html +./fortran/doc/DevelGuide/src/H5f90kit_c.html +./fortran/doc/DevelGuide/src/H5Aff_f90.html +./fortran/doc/DevelGuide/src/H5_DBLE_InterfaceExclude_f90.html +./fortran/doc/DevelGuide/src/H5Eff_f90.html +./fortran/doc/DevelGuide/src/H5_ff_F03_f90.html +./fortran/doc/DevelGuide/src/H5Gff_f90.html +./fortran/doc/DevelGuide/src/H5test_kind_SIZEOF_f90.html +./fortran/doc/DevelGuide/src/H5Iff_f90.html +./fortran/doc/DevelGuide/src/H5Dff_F03_f90.html +./fortran/doc/DevelGuide/src/H5Af_c.html +./fortran/doc/DevelGuide/src/H5Off_f90.html +./fortran/doc/DevelGuide/src/H5Df_c.html +./fortran/doc/DevelGuide/src/H5Sff_f90.html +./fortran/doc/DevelGuide/src/H5Ef_c.html +./fortran/doc/DevelGuide/src/HDF5mpio_f90.html +./fortran/doc/DevelGuide/src/H5Lff_F03_f90.html +./fortran/doc/DevelGuide/src/H5Ff_c.html +./fortran/doc/DevelGuide/src/H5f90global_f90.html +./fortran/doc/DevelGuide/src/H5Gf_c.html +./fortran/doc/DevelGuide/src/H5If_c.html +./fortran/doc/DevelGuide/src/H5Pff_F03_f90.html +./fortran/doc/DevelGuide/src/H5_ff_F90_f90.html +./fortran/doc/DevelGuide/src/H5Rff_F03_f90.html +./fortran/doc/DevelGuide/src/H5Lf_c.html +./fortran/doc/DevelGuide/src/H5Of_c.html +./fortran/doc/DevelGuide/src/H5Dff_F90_f90.html +./fortran/doc/DevelGuide/src/H5Pf_c.html +./fortran/doc/DevelGuide/src/H5FDmpioff_f90.html +./fortran/doc/DevelGuide/src/H5_ff_f90.html +./fortran/doc/DevelGuide/src/H5Rf_c.html +./fortran/doc/DevelGuide/src/H5Sf_c.html +./fortran/doc/DevelGuide/src/H5Tf_c.html +./fortran/doc/DevelGuide/src/H5Dff_f90.html +./fortran/doc/DevelGuide/src/H5Lff_F90_f90.html + ./fortran/examples/Makefile.am ./fortran/examples/Makefile.in ./fortran/examples/attrexample.f90 ./fortran/examples/compound.f90 +./fortran/examples/compound_fortran2003.f90 +./fortran/examples/compound_complex_fortran2003.f90 ./fortran/examples/dsetexample.f90 ./fortran/examples/fileexample.f90 ./fortran/examples/groupexample.f90 @@ -170,17 +257,27 @@ ./fortran/examples/rwdsetexample.f90 ./fortran/examples/selectele.f90 ./fortran/examples/testh5fc.sh.in +./fortran/examples/nested_derived_type.f90 +./fortran/examples/rwdset_fortran2003.f90 ./fortran/src/H5_f.c ./fortran/src/H5_ff.f90 +./fortran/src/H5_ff_F90.f90 +./fortran/src/H5_ff_F03.f90 ./fortran/src/H5_DBLE_InterfaceInclude.f90 ./fortran/src/H5_DBLE_InterfaceExclude.f90 ./fortran/src/H5Af.c ./fortran/src/H5Aff.f90 +./fortran/src/H5Aff_F90.f90 +./fortran/src/H5Aff_F03.f90 ./fortran/src/H5Df.c ./fortran/src/H5Dff.f90 +./fortran/src/H5Dff_F90.f90 +./fortran/src/H5Dff_F03.f90 ./fortran/src/H5Ef.c ./fortran/src/H5Eff.f90 +./fortran/src/H5Eff_F90.f90 +./fortran/src/H5Eff_F03.f90 ./fortran/src/H5FDmpiof.c ./fortran/src/H5FDmpioff.f90 ./fortran/src/H5Ff.c @@ -191,16 +288,26 @@ ./fortran/src/H5Iff.f90 ./fortran/src/H5Lf.c ./fortran/src/H5Lff.f90 +./fortran/src/H5Lff_F90.f90 +./fortran/src/H5Lff_F03.f90 ./fortran/src/H5Of.c ./fortran/src/H5Off.f90 +./fortran/src/H5Off_F90.f90 +./fortran/src/H5Off_F03.f90 ./fortran/src/H5Pf.c ./fortran/src/H5Pff.f90 +./fortran/src/H5Pff_F90.f90 +./fortran/src/H5Pff_F03.f90 ./fortran/src/H5Rf.c ./fortran/src/H5Rff.f90 +./fortran/src/H5Rff_F90.f90 +./fortran/src/H5Rff_F03.f90 ./fortran/src/H5Sf.c ./fortran/src/H5Sff.f90 ./fortran/src/H5Tf.c ./fortran/src/H5Tff.f90 +./fortran/src/H5Tff_F90.f90 +./fortran/src/H5Tff_F03.f90 ./fortran/src/H5Zf.c ./fortran/src/H5Zff.f90 ./fortran/src/H5f90.h @@ -227,22 +334,27 @@ ./fortran/test/fflush2.f90 ./fortran/test/fortranlib_test.f90 ./fortran/test/fortranlib_test_1_8.f90 +./fortran/test/fortranlib_test_F03.f90 ./fortran/test/t.c ./fortran/test/t.h ./fortran/test/tf.f90 ./fortran/test/tH5A.f90 ./fortran/test/tH5A_1_8.f90 ./fortran/test/tH5D.f90 +./fortran/test/tH5E_F03.f90 ./fortran/test/tH5E.f90 ./fortran/test/tH5F.f90 ./fortran/test/tH5G.f90 ./fortran/test/tH5G_1_8.f90 ./fortran/test/tH5I.f90 +./fortran/test/tH5L_F03.f90 ./fortran/test/tH5O.f90 +./fortran/test/tH5P_F03.f90 ./fortran/test/tH5P.f90 ./fortran/test/tH5R.f90 ./fortran/test/tH5S.f90 ./fortran/test/tH5Sselect.f90 +./fortran/test/tH5T_F03.f90 ./fortran/test/tH5T.f90 ./fortran/test/tH5VL.f90 ./fortran/test/tH5Z.f90 diff --git a/configure b/configure index 5d8c30a..b967830 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Id: configure.in 21185 2011-08-07 14:17:33Z hdftest . +# From configure.in Id: configure.in 21225 2011-08-14 16:50:04Z hdftest . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.68 for HDF5 1.9.89. # @@ -713,6 +713,8 @@ ac_ct_CXX CXXFLAGS FORTRAN_DEFAULT_REALisDBLE_F_FALSE FORTRAN_DEFAULT_REALisDBLE_F_TRUE +FORTRAN_2003_CONDITIONAL_F_FALSE +FORTRAN_2003_CONDITIONAL_F_TRUE FORTRAN_HAVE_SIZEOF_FALSE FORTRAN_HAVE_SIZEOF_TRUE FCLIBS @@ -731,6 +733,7 @@ HSIZE_T HADDR_T R_INTEGER R_LARGE +HAVE_FORTRAN_2003 HDF5_INTERFACES am__fastdepCC_FALSE am__fastdepCC_TRUE @@ -761,7 +764,9 @@ GPFS HDF5_HL CXX HDF_CXX +FC2003 FC +HDF_FORTRAN2003 HDF_FORTRAN STATIC_EXEC MPE @@ -859,6 +864,7 @@ enable_maintainer_mode enable_dependency_tracking enable_unsupported enable_fortran +enable_fortran2003 enable_cxx enable_shared enable_static @@ -1542,7 +1548,8 @@ Optional Features: --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-unsupported Allow unsupported combinations of configure options - --enable-fortran Compile the Fortran interface [default=no] + --enable-fortran Compile the Fortran 77/90/95 interface [default=no] + --enable-fortran2003 Compile the Fortran 2003 interface [default=no] --enable-cxx Compile the C++ interface [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] @@ -3835,7 +3842,9 @@ $as_echo "done" >&6; } MPE=no STATIC_EXEC=no HDF_FORTRAN=no + HDF_FORTRAN2003=no HDF_FORTRAN=no + HDF_FORTRAN2003=no HDF_CXX=no HDF_CXX=no HDF5_HL=yes @@ -4984,15 +4993,30 @@ if test "${enable_fortran+set}" = set; then : fi +# Check whether --enable-fortran2003 was given. +if test "${enable_fortran2003+set}" = set; then : + enableval=$enable_fortran2003; HDF_FORTRAN2003=$enableval +fi + HAVE_SIZEOF="no" FORTRAN_DEFAULT_REALisDBLE="no" + +if test "X$HDF_FORTRAN2003" = "Xyes"; then + HDF_FORTRAN=yes +fi + + + if test "X$HDF_FORTRAN" = "Xyes"; then echo "yes" HDF5_INTERFACES="$HDF5_INTERFACES fortran" + HAVE_FORTRAN_2003="no" + HAVE_ISO_C_BINDING="no" + @@ -6248,8 +6272,6 @@ fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran default REAL is DOUBLE PRECISION" >&5 $as_echo_n "checking if Fortran default REAL is DOUBLE PRECISION... " >&6; } @@ -6295,6 +6317,104 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi + + if test "X$HDF_FORTRAN2003" = "Xyes"; then + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran compiler supports ISO_C_BINDING module" >&5 +$as_echo_n "checking if Fortran compiler supports ISO_C_BINDING module... " >&6; } + + cat > conftest.$ac_ext <<_ACEOF + program main + + USE iso_c_binding + + end +_ACEOF +if ac_fn_fc_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + HAVE_ISO_C_BINDING="yes" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + if test "X$HAVE_ISO_C_BINDING" = "Xyes"; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran compiler version compatible with Fortran 2003 HDF" >&5 +$as_echo_n "checking if Fortran compiler version compatible with Fortran 2003 HDF... " >&6; } + HAVE_FORTRAN_2003="no" + + if (${FC} -V 2>&1 | grep 'Sun Fortran') > /dev/null; then + vers=`${FC} -V 2>&1 | sed -rn '\|Fortran 95 | s|.* ([0-9.]+) .*|\1|p' | sed -e 's/[^0-9]//g'` + if test -n "$vers" && test "$vers" -ge 86; then + HAVE_FORTRAN_2003="yes" + echo $HAVE_FORTRAN_2003 + else + echo $HAVE_FORTRAN_2003 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Only Sun Fortran Compiler, Version >= 8.6 supported; disabling Fortran 2003 features" >&5 +$as_echo "$as_me: WARNING: Only Sun Fortran Compiler, Version >= 8.6 supported; disabling Fortran 2003 features" >&2;} + fi + fi + + if (${FC} -V 2>&1 | grep '^Intel(R) Fortran') > /dev/null; then + vers=`${FC} -v 2>&1 | sed -e 's/[^0-9]//g'` + if test -n "$vers" && test "$vers" -ge 101; then + HAVE_FORTRAN_2003="yes" + echo $HAVE_FORTRAN_2003 + else + echo $HAVE_FORTRAN_2003 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Only Intel Fortran Compiler, Version > 10.1 supported; disabling Fortran 2003 features" >&5 +$as_echo "$as_me: WARNING: Only Intel Fortran Compiler, Version > 10.1 supported; disabling Fortran 2003 features" >&2;} + fi + fi + + if (${FC} -dumpversion 2>&1 | grep 'G95') > /dev/null; then + vers=`${FC} -dumpversion 2>&1 | grep -o '[^ ]*!' | sed -e 's/[^0-9]//g'` + if test -n "$vers" && test "$vers" -ge 90; then + HAVE_FORTRAN_2003="yes" + echo $HAVE_FORTRAN_2003 + else + echo $HAVE_FORTRAN_2003 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Only G95 Fortran Compiler, Version > .9 supported; disabling Fortran 2003 features" >&5 +$as_echo "$as_me: WARNING: Only G95 Fortran Compiler, Version > .9 supported; disabling Fortran 2003 features" >&2;} + fi + fi + + if (${FC} --version 2>&1 | grep 'GNU Fortran') > /dev/null; then + vers_major=`${FC} --version 2>&1 | grep 'GNU Fortran (' | grep -o ' [0-9]*\.' | sed -e 's/[^0-9]//g'` + vers_minor=`${FC} --version 2>&1 | grep 'GNU Fortran (' | grep -o '\.[0-9]*\.' | sed -e 's/[^0-9]//g'` + + if test -n "$vers_major" && test -n "$vers_minor" && test "$vers_major" -ge 4 && test "$vers_minor" -ge 1; then + HAVE_FORTRAN_2003="yes" + echo $HAVE_FORTRAN_2003 + else + echo $HAVE_FORTRAN_2003 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Only GNU Fortran Compiler, Version > 4.1.0 supported; disabling Fortran 2003 features" >&5 +$as_echo "$as_me: WARNING: Only GNU Fortran Compiler, Version > 4.1.0 supported; disabling Fortran 2003 features" >&2;} + fi + fi + + if (${FC} -V 2>&1 | grep 'Portland Group') > /dev/null; then + vers=`${FC} -V 2>&1 | grep 'pgf' | grep -o '[^ ]*[^ ]\.[^ ]' | sed -e 's/[^0-9]//g'` + if test -n "$vers" && test "$vers" -ge 104; then + HAVE_FORTRAN_2003="yes" + echo $HAVE_FORTRAN_2003 + else + echo $HAVE_FORTRAN_2003 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Only The Portland Group Compiler, Version > 10.4-0 supported; disabling Fortran 2003 features" >&5 +$as_echo "$as_me: WARNING: Only The Portland Group Compiler, Version > 10.4-0 supported; disabling Fortran 2003 features" >&2;} + fi + + fi + + + fi + + fi + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -6314,6 +6434,14 @@ else FORTRAN_HAVE_SIZEOF_FALSE= fi + if test "X$HAVE_FORTRAN_2003" = "Xyes"; then + FORTRAN_2003_CONDITIONAL_F_TRUE= + FORTRAN_2003_CONDITIONAL_F_FALSE='#' +else + FORTRAN_2003_CONDITIONAL_F_TRUE='#' + FORTRAN_2003_CONDITIONAL_F_FALSE= +fi + if test "X$FORTRAN_DEFAULT_REALisDBLE" = "Xyes"; then FORTRAN_DEFAULT_REALisDBLE_F_TRUE= FORTRAN_DEFAULT_REALisDBLE_F_FALSE='#' @@ -7366,7 +7494,7 @@ $as_echo "none" >&6; } ;; esac -if test "X$HDF_FORTRAN" = "Xyes"; then +if test "X$HDF_FORTRAN" = "Xyes" ; then ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' @@ -29985,6 +30113,10 @@ if test -z "${FORTRAN_HAVE_SIZEOF_TRUE}" && test -z "${FORTRAN_HAVE_SIZEOF_FALSE as_fn_error $? "conditional \"FORTRAN_HAVE_SIZEOF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${FORTRAN_2003_CONDITIONAL_F_TRUE}" && test -z "${FORTRAN_2003_CONDITIONAL_F_FALSE}"; then + as_fn_error $? "conditional \"FORTRAN_2003_CONDITIONAL_F\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${FORTRAN_DEFAULT_REALisDBLE_F_TRUE}" && test -z "${FORTRAN_DEFAULT_REALisDBLE_F_FALSE}"; then as_fn_error $? "conditional \"FORTRAN_DEFAULT_REALisDBLE_F\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/configure.in b/configure.in index abec1a5..4c36451 100644 --- a/configure.in +++ b/configure.in @@ -155,6 +155,7 @@ dnl EXTERNAL_FILTERS equals all external filters. Default none. dnl MPE: whether MPE option is enabled. Default no. dnl STATIC_EXEC: whether static-exec is enabled. Default no. dnl HDF_FORTRAN: whether Fortran is enabled. Default no. +dnl HDF_FORTRAN2003: whether Fortran 2003 is enabled. Default no. dnl FC: Fortran compiler. dnl HDF_CXX: whether C++ is enabled. Default no. dnl CXX: C++ compiler. @@ -175,7 +176,9 @@ AC_SUBST(EXTERNAL_FILTERS) AC_SUBST(MPE) MPE=no AC_SUBST(STATIC_EXEC) STATIC_EXEC=no AC_SUBST(HDF_FORTRAN) HDF_FORTRAN=no +AC_SUBST(HDF_FORTRAN2003) HDF_FORTRAN2003=no AC_SUBST(FC) HDF_FORTRAN=no +AC_SUBST(FC2003) HDF_FORTRAN2003=no AC_SUBST(HDF_CXX) HDF_CXX=no AC_SUBST(CXX) HDF_CXX=no AC_SUBST(HDF5_HL) HDF5_HL=yes @@ -370,12 +373,28 @@ AC_SUBST([HDF5_INTERFACES]) HDF5_INTERFACES="" AC_MSG_CHECKING([if Fortran interface enabled]) AC_ARG_ENABLE([fortran], [AC_HELP_STRING([--enable-fortran], - [Compile the Fortran interface [default=no]])], + [Compile the Fortran 77/90/95 interface [default=no]])], [HDF_FORTRAN=$enableval]) +dnl ---------------------------------------------------------------------- +dnl Check if they would like the Fortran 2003 interface compiled +dnl +AC_ARG_ENABLE([fortran2003], + [AC_HELP_STRING([--enable-fortran2003], + [Compile the Fortran 2003 interface [default=no]])], + [HDF_FORTRAN2003=$enableval]) HAVE_SIZEOF="no" -FORTRAN_DEFAULT_REALisDBLE="no" +FORTRAN_DEFAULT_REALisDBLE="no" + +dnl If FORTRAN 2003 interface enabled then mark that the general +dnl Fortran interface is also enabled + +if test "X$HDF_FORTRAN2003" = "Xyes"; then + AC_SUBST(FC) HDF_FORTRAN=yes +fi + +AC_SUBST([HAVE_FORTRAN_2003]) if test "X$HDF_FORTRAN" = "Xyes"; then echo "yes" @@ -383,6 +402,12 @@ if test "X$HDF_FORTRAN" = "Xyes"; then HDF5_INTERFACES="$HDF5_INTERFACES fortran" dnl -------------------------------------------------------------------- + dnl Default for FORTRAN 2003 compliant compilers + dnl + HAVE_FORTRAN_2003="no" + HAVE_ISO_C_BINDING="no" + + dnl -------------------------------------------------------------------- dnl HDF5 integer variables for the H5fortran_types.f90 file. dnl AC_SUBST([R_LARGE]) @@ -441,8 +466,8 @@ dnl ], AC_MSG_RESULT(yes), dnl AC_MSG_RESULT(no) dnl AM_FCFLAGS="$AM_FCFLAGS_saved") -dnl -------------------------------------------------------------------- -dnl See if the fortran compiler supports the intrinsic function "SIZEOF" + dnl -------------------------------------------------------------------- + dnl See if the fortran compiler supports the intrinsic function "SIZEOF" AC_MSG_CHECKING([if Fortran compiler supports intrinsic SIZEOF]) AC_TRY_RUN([ @@ -453,10 +478,8 @@ dnl See if the fortran compiler supports the intrinsic function "SIZEOF" HAVE_SIZEOF="yes"], AC_MSG_RESULT(no)) - -dnl Check to see if -r8 was specified to determine if we need to -dnl compile the DOUBLE PRECISION interfaces. - + dnl Check to see if -r8 was specified to determine if we need to + dnl compile the DOUBLE PRECISION interfaces. AC_MSG_CHECKING([if Fortran default REAL is DOUBLE PRECISION]) @@ -485,6 +508,94 @@ dnl compile the DOUBLE PRECISION interfaces. AC_MSG_RESULT(no), [AC_MSG_RESULT(yes) FORTRAN_DEFAULT_REALisDBLE="yes"]) + + if test "X$HDF_FORTRAN2003" = "Xyes"; then + + dnl Checking if the compiler supports the ISO_C_BINDING module, if it does + dnl not then don't bother checking any other fortran 2003 features and + dnl disable fortran 2003. + + AC_MSG_CHECKING([if Fortran compiler supports ISO_C_BINDING module]) + + AC_TRY_COMPILE(,[ + USE iso_c_binding + ], [AC_MSG_RESULT(yes) + HAVE_ISO_C_BINDING="yes"] , + AC_MSG_RESULT(no)) + + if test "X$HAVE_ISO_C_BINDING" = "Xyes"; then + + AC_MSG_CHECKING([if Fortran compiler version compatible with Fortran 2003 HDF]) + HAVE_FORTRAN_2003="no" + + dnl Sun compiler + if (${FC} -V 2>&1 | grep 'Sun Fortran') > /dev/null; then + vers=[`${FC} -V 2>&1 | sed -rn '\|Fortran 95 | s|.* ([0-9.]+) .*|\1|p' | sed -e 's/[^0-9]//g'`] + if test -n "$vers" && test "$vers" -ge 86; then + HAVE_FORTRAN_2003="yes" + echo $HAVE_FORTRAN_2003 + else + echo $HAVE_FORTRAN_2003 + AC_MSG_WARN([Only Sun Fortran Compiler, Version >= 8.6 supported; disabling Fortran 2003 features]) + fi + fi + + dnl Intel compiler + if (${FC} -V 2>&1 | grep '^Intel(R) Fortran') > /dev/null; then + vers=[`${FC} -v 2>&1 | sed -e 's/[^0-9]//g'`] + if test -n "$vers" && test "$vers" -ge 101; then + HAVE_FORTRAN_2003="yes" + echo $HAVE_FORTRAN_2003 + else + echo $HAVE_FORTRAN_2003 + AC_MSG_WARN([Only Intel Fortran Compiler, Version > 10.1 supported; disabling Fortran 2003 features]) + fi + fi + + dnl g95 compiler + if (${FC} -dumpversion 2>&1 | grep 'G95') > /dev/null; then + vers=[`${FC} -dumpversion 2>&1 | grep -o '[^ ]*!' | sed -e 's/[^0-9]//g'`] + if test -n "$vers" && test "$vers" -ge 90; then + HAVE_FORTRAN_2003="yes" + echo $HAVE_FORTRAN_2003 + else + echo $HAVE_FORTRAN_2003 + AC_MSG_WARN([Only G95 Fortran Compiler, Version > .9 supported; disabling Fortran 2003 features]) + fi + fi + + dnl gfortran + if (${FC} --version 2>&1 | grep 'GNU Fortran') > /dev/null; then + vers_major=[`${FC} --version 2>&1 | grep 'GNU Fortran (' | grep -o ' [0-9]*\.' | sed -e 's/[^0-9]//g'`] + vers_minor=[`${FC} --version 2>&1 | grep 'GNU Fortran (' | grep -o '\.[0-9]*\.' | sed -e 's/[^0-9]//g'`] + + if test -n "$vers_major" && test -n "$vers_minor" && test "$vers_major" -ge 4 && test "$vers_minor" -ge 1; then + HAVE_FORTRAN_2003="yes" + echo $HAVE_FORTRAN_2003 + else + echo $HAVE_FORTRAN_2003 + AC_MSG_WARN([Only GNU Fortran Compiler, Version > 4.1.0 supported; disabling Fortran 2003 features]) + fi + fi + + dnl The Portland Group + if (${FC} -V 2>&1 | grep 'Portland Group') > /dev/null; then + vers=[`${FC} -V 2>&1 | grep 'pgf' | grep -o '[^ ]*[^ ]\.[^ ]' | sed -e 's/[^0-9]//g'`] + if test -n "$vers" && test "$vers" -ge 104; then + HAVE_FORTRAN_2003="yes" + echo $HAVE_FORTRAN_2003 + else + echo $HAVE_FORTRAN_2003 + AC_MSG_WARN([Only The Portland Group Compiler, Version > 10.4-0 supported; disabling Fortran 2003 features]) + fi + + fi + + + fi + + fi + dnl Change back to the C language AC_LANG_POP(Fortran) else @@ -493,6 +604,7 @@ else fi AM_CONDITIONAL([FORTRAN_HAVE_SIZEOF], [test "X$HAVE_SIZEOF" = "Xyes"]) +AM_CONDITIONAL([FORTRAN_2003_CONDITIONAL_F], [test "X$HAVE_FORTRAN_2003" = "Xyes"]) AM_CONDITIONAL([FORTRAN_DEFAULT_REALisDBLE_F], [test "X$FORTRAN_DEFAULT_REALisDBLE" = "Xyes"]) dnl ---------------------------------------------------------------------- @@ -781,7 +893,7 @@ dnl Furthermore, the name of the compiler might tell us how to run the dnl resulting executable. For `mpif90' the executable should be run with dnl `mpiexec' from the same directory as mpif90 if it exists. dnl -if test "X$HDF_FORTRAN" = "Xyes"; then +if test "X$HDF_FORTRAN" = "Xyes" ; then dnl Change to the Fortran 90 language AC_LANG_PUSH(Fortran) diff --git a/fortran/Makefile.in b/fortran/Makefile.in index 1bb45c9..9f006f0 100644 --- a/fortran/Makefile.in +++ b/fortran/Makefile.in @@ -182,6 +182,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ +FC2003 = @FC2003@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ @@ -202,10 +203,12 @@ H5_LONE_COLON = @H5_LONE_COLON@ H5_VERSION = @H5_VERSION@ HADDR_T = @HADDR_T@ HAVE_DMALLOC = @HAVE_DMALLOC@ +HAVE_FORTRAN_2003 = @HAVE_FORTRAN_2003@ HDF5_HL = @HDF5_HL@ HDF5_INTERFACES = @HDF5_INTERFACES@ HDF_CXX = @HDF_CXX@ HDF_FORTRAN = @HDF_FORTRAN@ +HDF_FORTRAN2003 = @HDF_FORTRAN2003@ HID_T = @HID_T@ HL = @HL@ HL_FOR = @HL_FOR@ diff --git a/fortran/doc/DevelGuide/masterindex.html b/fortran/doc/DevelGuide/masterindex.html new file mode 100644 index 0000000..9765ea0 --- /dev/null +++ b/fortran/doc/DevelGuide/masterindex.html @@ -0,0 +1,589 @@ + + + + + + + +Index + + + + +
+
+ +
+

Index

+

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9

+ h5pget_double + h5pget_hyper_vector_size_f + h5pset_family_offset_f + h5pset_fapl_family_f + h5pset_meta_block_size_f +

F

fflush1.f90 +fflush2.f90 +fortran/test/fflush1.f90 +fortran/test/fflush2.f90 +fortran/test/fortranlib_test.f90 +fortran/test/fortranlib_test_1_8.f90 +fortran/test/fortranlib_test_F03.f90 +fortran/test/tc.c +fortran/test/tf.f90 +fortran/test/tH5A.f90 +fortran/test/tH5A_1_8.f90 +fortran/test/tH5D.f90 +fortran/test/tH5E.f90 +fortran/test/tH5E_F03.f90 +fortran/test/tH5F.f90 +fortran/test/tH5G.f90 +fortran/test/tH5G_1_8.f90 +fortran/test/tH5I.f90 +fortran/test/tH5L_F03.f90 +fortran/test/tH5O.f90 +fortran/test/tH5P.f90 +fortran/test/tH5P_F03.f90 +fortran/test/tH5R.f90 +fortran/test/tH5S.f90 +fortran/test/tH5Sselect.f90 +fortran/test/tH5T.f90 +fortran/test/tH5T_F03.f90 +fortran/test/tH5VL.f90 +fortran/test/tH5Z.f90 +fortranlib_test.f90 +fortranlib_test_1_8.f90 +fortranlib_test_F03.f90 +

H

H5_DBLE_InterfaceExclude.f90 +H5_DBLE_InterfaceInclude.f90 +H5_ff.f90 +H5_ff_F03.f90 +H5_ff_F90.f90 +H5A +H5A (F03) +H5A (F90) +h5aclose_f +h5acreate_by_name_f +h5acreate_f +h5adelete_by_idx_f +h5adelete_by_name_f +h5adelete_f +H5Aexists_by_name_f +H5Aexists_f +H5Af +H5Af.c +H5Aff.f90 +H5Aff_F03.f90 +H5Aff_F90.f90 +h5aget_create_plist_f +h5aget_info_by_idx_f +h5aget_info_by_name_f +h5aget_info_f +h5aget_name_by_idx_f +h5aget_name_f +h5aget_num_attrs_f +h5aget_space_f +h5aget_storage_size_f +h5aget_type_f +h5aopen_by_idx_f +H5Aopen_by_name_f +h5aopen_f +h5aopen_idx_f +h5aopen_name_f +h5aread_f +h5arename_by_name_f +h5arename_f +h5check_version_f +h5close_f +H5D +H5D (F03) +H5D (F90) +h5dclose_f +h5dcreate_anon_f +h5dcreate_f +H5Df +H5Df.c +H5Dff.f90 +H5Dff_F03.f90 +H5Dff_F90.f90 +h5dget_access_plist_f +h5dget_create_plist_f +h5dget_space_f +h5dget_space_status_f +h5dget_storage_size_f +h5dget_type_f +h5dont_atexit_f +h5dopen_f +h5dread_f +h5dset_extent +h5dvlen_get_max_len_f +h5dvlen_reclaim +H5E +H5E (F03) +H5E (F90) +h5eclear_f +H5Ef +H5Ef.c +H5Eff.f90 +H5Eff_F03.f90 +H5Eff_F90.f90 +h5eget_auto_f +h5eget_major_f +h5eget_minor_f +h5eprint_f +h5eset_auto2_f +h5eset_auto_f +H5F +H5f90global.f90 +H5f90kit +H5f90kit.c +h5fclose_f +h5fcreate_f +H5FDMPIO +H5FDmpiof +H5FDmpiof.c +H5FDmpioff.f90 +H5Ff +H5Ff.c +H5Fff.f90 +h5fflush_f +h5fget_access_plist_f +h5fget_create_plist_f +h5fget_filesize_f +h5fget_freespace_f +h5fget_name_f +h5fget_obj_count_f +h5fget_obj_ids_f +h5fis_hdf5_f +h5fmount_f +h5fopen_f +h5freopen_f +h5funmount_f +H5G +h5garbage_collect_f +h5gclose_f +H5Gcreate_anon_f +h5gcreate_f +h5get_libversion_f +H5Gf +H5Gf.c +H5Gff.f90 +h5gget_comment_f +H5Gget_create_plist_f +h5gget_info_by_idx_f +h5gget_info_by_name_f +h5gget_info_f +h5gget_linkval_f +h5gget_obj_info_idx_f +h5glink2_f +h5glink_f +H5GLOBAL +h5gmove2_f +h5gmove_f +h5gn_members_f +h5gopen_f +h5gset_comment_f +h5gunlink_f +H5I +h5idec_ref_f +H5If +H5If.c +H5Iff.f90 +h5iget_file_id_f +h5iget_name_f +h5iget_ref_f +h5iget_type_f +h5iinc_ref_f +h5iis_valid_f +h5kind_to_type +H5L +H5L (F03) +H5L (F90) +h5lcopy_f +H5Lcreate_external_f +H5Lcreate_hard_f +H5Lcreate_soft_f +h5ldelete_by_idx_f +h5ldelete_f +H5Lexists_f +H5Lf +H5Lf.c +H5Lff.f90 +H5Lff_F03.f90 +H5Lff_F90.f90 +h5lget_info_by_idx_f +h5lget_info_f +h5lget_name_by_idx_f +H5LIB +H5LIB_PROVISIONAL +H5LIB_PROVISIONAL (F90) +h5lis_registered_f +h5literate_by_name_f +h5literate_f +h5lmove_f +H5match_types +H5match_types.c +H5O +H5O (F03) +H5O (F90) +h5oclose_f +H5Of +H5Of.c +H5Off.f90 +H5Off_F03.f90 +H5Off_F90.f90 +h5offsetof +h5olink_f +h5oopen_f +h5open_by_addr_f +h5open_f +h5ovisit_f +H5P (_F90) +H5P (F03) +H5P (F90) +h5pall_filters_avail_f +h5pclose_class_f +h5pclose_f +h5pcopy_f +h5pcopy_prop_f +h5pcreate_class_f +h5pcreate_class_f +h5pcreate_f +h5pequal_f +h5pexist_f +H5Pf +H5Pf.c +H5Pff.f90 +H5Pff_F03.f90 +H5Pff_F90.f90 +h5pfill_value_defined_f +h5pget_alignment_f +h5pget_alloc_time_f +H5Pget_attr_creation_order_f +H5Pget_attr_phase_change_f +h5pget_btree_ratios_f +h5pget_buffer_f +h5pget_cache_f +h5pget_char +h5pget_char +H5Pget_char_encoding_f +H5Pget_chunk_cache_f +h5pget_chunk_f +h5pget_class_f +h5pget_class_name_f +h5pget_class_parent_f +h5pget_copy_object_f +H5Pget_create_inter_group_f +h5pget_data_transform_f +h5pget_double +h5pget_driver_f +h5pget_dxpl_mpio_f +h5pget_edc_check_f +H5Pget_est_link_info_f +h5pget_external_count_f +h5pget_external_f +h5pget_fapl_core_f +h5pget_fapl_direct_f +h5pget_fapl_family_f +h5pget_fapl_mpio_f +h5pget_fapl_mpiposix_f +h5pget_fapl_multi_f +h5pget_fclose_degree_f +h5pget_fill_time_f +h5pget_filter_by_id_f +h5pget_filter_f +h5pget_gc_references_f +h5pget_integer +h5pget_integer +h5pget_istore_k_f +h5pget_layout_f +H5Pget_link_creation_order_f +H5Pget_link_phase_change_f +H5Pget_local_heap_size_hint_f +h5pget_meta_block_size_f +h5pget_nfilters_f +h5pget_nlinks_f +h5pget_npros_f +H5Pget_obj_track_times_f +h5pget_preserve_f +h5pget_real +h5pget_real +h5pget_sec2_f +h5pget_sieve_buf_size_f +h5pget_size_f +h5pget_sizes_f +h5pget_small_data_block_size_f +h5pget_split_f +h5pget_stdio_f +h5pget_sym_k_f +h5pget_userblock_f +h5pget_version_f +h5pinsert_char +h5pinsert_char +h5pinsert_double +h5pinsert_double +h5pinsert_integer +h5pinsert_integer +h5pinsert_ptr +h5pinsert_real +h5pinsert_real +h5pisa_class_f +h5pmodify_filter_f +h5pregister_char +h5pregister_char +h5pregister_double +h5pregister_double +h5pregister_integer +h5pregister_integer +h5pregister_ptr +h5pregister_real +h5pregister_real +h5premove_f +h5premove_filter_f +h5pset(get)fill_value_f +h5pset(get)fill_value_f +h5pset_alignment_f +h5pset_alloc_time_f +H5Pset_attr_creation_order_f +H5Pset_attr_phase_change_f +h5pset_btree_ratios_f +h5pset_buffer_f +h5pset_cache_f +h5pset_char +h5pset_char +H5Pset_char_encoding_f +H5Pset_chunk_cache_f +h5pset_chunk_f +h5pset_copy_object_f +H5Pset_create_inter_group_f +h5pset_data_transform_f +h5pset_deflate_f +h5pset_double +h5pset_double +h5pset_dxpl_mpio_f +h5pset_edc_check_f +h5pset_est_link_info_f +h5pset_external_f +h5pset_fapl_core_f +h5pset_fapl_direct_f +h5pset_fapl_mpio_f +h5pset_fapl_mpiposix_f +h5pset_fapl_multi_l +h5pset_fapl_multi_s +h5pset_fapl_sec2_f +h5pset_fapl_split_f +h5pset_fapl_stdio_f +h5pset_fclose_degree_f +h5pset_fill_time_f +h5pset_filter_f +h5pset_fletcher32_f +h5pset_gc_references_f +h5pset_hyper_vector_size_f +h5pset_integer +h5pset_integer +h5pset_istore_k_f +h5pset_layout_f +H5Pset_libver_bounds_f +H5Pset_link_creation_order_f +h5pset_link_phase_change_f +H5Pset_local_heap_size_hint_f +H5Pset_nbit_f +h5pset_nlinks_f +H5Pset_obj_track_times_f +h5pset_preserve_f +h5pset_real +h5pset_real +h5pset_scaleoffset_f +H5Pset_shared_mesg_index_f +H5Pset_shared_mesg_nindexes_f +h5pset_shuffle_f +h5pset_sieve_buf_size_f +h5pset_sizes_f +h5pset_small_data_block_size_f +h5pset_sym_k_f +h5pset_szip_f +h5pset_userblock_f +h5punregister_f +H5R +H5R (F03) +H5R (F90) +h5rcreate_object_f +h5rcreate_object_f +h5rcreate_ptr_f +h5rcreate_region_f +h5rcreate_region_f +h5rdereference_object_f +h5rdereference_object_f +h5rdereference_ptr_f +h5rdereference_region_f +h5rdereference_region_f +H5Rf +H5Rf.c +H5Rff.f90 +H5Rff_F03.f90 +H5Rff_F90.f90 +h5rget_name_object_f +h5rget_name_object_f +h5rget_name_ptr_f +h5rget_name_region_f +h5rget_name_region_f +h5rget_obj_type_f +h5rget_object_type_obj_f +h5rget_region_region_f +H5S +h5sclose_f +h5scopy_f +h5screate_f +h5screate_simple_f +H5Sdecode_f +H5Sencode_f +h5sextent_copy_f +h5sextent_equal_f +H5Sf +H5Sf.c +H5Sff.f90 +h5sget_select_bounds_f +h5sget_select_elem_npoints_f +h5sget_select_elem_pointlist_f +h5sget_select_hyper_blocklist_f +h5sget_select_hyper_nblocks_f +h5sget_select_npoints_f +h5sget_select_type_f +h5sget_simple_extent_dims_f +h5sget_simple_extent_ndims_f +h5sget_simple_extent_npoints_f +h5sget_simple_extent_type_f +h5sis_simple_f +h5soffset_simple_f +h5sselect_all_f +h5sselect_elements_f +h5sselect_hyperslab_f +h5sselect_none_f +h5sselect_valid_f +h5sset_extent_none_f +h5sset_extent_simple_f +H5T +H5T (F03) +H5T (F90) +h5tarray_create_f +h5tclose_f +h5tcommit_anon_f +h5tcommit_f +h5tcommitted_f +h5tcompiler_conv_f +H5Tconvert_f +h5tcopy_f +h5tcreate_f +H5Tdecode_f +h5tenaum_insert_f +H5Tencode_f +h5tenum_create_f +h5tenum_nameof_f +h5tenum_valuof_f +h5tequal_f +H5test_kind +H5test_kind.f90 +H5test_kind_SIZEOF +H5test_kind_SIZEOF.f90 +H5Tf +H5Tf.c +H5Tff.f90 +H5Tff_F03.f90 +H5Tff_F90.f90 +h5tget_array_dims_f +h5tget_array_ndims_f +h5tget_class_f +h5tget_create_plist_f +h5tget_cset_f +h5tget_ebias_f +h5tget_fields_f +h5tget_inpad_f +h5tget_member_class_f +h5tget_member_index_f +h5tget_member_name_f +h5tget_member_offset_f +h5tget_member_type_f +h5tget_member_value_f +h5tget_native_type_f +h5tget_nmembers_f +h5tget_norm_f +h5tget_offset_f +h5tget_order_f +h5tget_pad_f +h5tget_precision_f +h5tget_sign_f +h5tget_size_f +h5tget_strpad_f +h5tget_super_f +h5tget_tag_f +h5tinsert_f +h5tis_variable_str_f +h5topen_f +h5tpack_f +h5tset_cset_f +h5tset_ebias_f +h5tset_fields_f +h5tset_inpad_f +h5tset_norm_f +h5tset_offset_f +h5tset_order_f +h5tset_pad_f +h5tset_precision_f +h5tset_sign_f +h5tset_size_f +h5tset_strpad_f +h5tset_tag_f +h5tvlen_create_f +H5Z +H5Zf +H5Zf.c +H5Zff.f90 +h5zfilter_avail_f +h5zget_filter_info_f +h5zunregister_f +HDF5 +HDF5 (mpio) +HDF5.f90 +HDF5mpio.f90 +

S

src/H5_DBLE_InterfaceExclude.f90 +src/H5_DBLE_InterfaceInclude.f90 +

T

t.c +tf.f90 +tH5A.f90 +tH5A_1_8.f90 +tH5D.f90 +tH5E.f90 +tH5E_F03.f90 +tH5F.f90 +tH5G.f90 +tH5G_1_8.f90 +tH5I.f90 +tH5L_F03.f90 +tH5O.f90 +tH5P.f90 +tH5P_F03.f90 +tH5R.f90 +tH5S.f90 +tH5Sselect.f90 +tH5T.f90 +tH5T_F03.f90 +tH5VL.f90 +tH5Z.f90 +

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9

+
+ + + diff --git a/fortran/doc/DevelGuide/robo_functions.html b/fortran/doc/DevelGuide/robo_functions.html new file mode 100644 index 0000000..e4f253a --- /dev/null +++ b/fortran/doc/DevelGuide/robo_functions.html @@ -0,0 +1,39 @@ + + + + + + + +Functions + + + + +
+
+ +
+

Functions

+

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9

+

H

h5kind_to_type +h5offsetof +

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9

+
+ + + diff --git a/fortran/doc/DevelGuide/robo_modules.html b/fortran/doc/DevelGuide/robo_modules.html new file mode 100644 index 0000000..8e57f38 --- /dev/null +++ b/fortran/doc/DevelGuide/robo_modules.html @@ -0,0 +1,117 @@ + + + + + + + +Modules + + + + +
+
+ +
+

Modules

+

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9

+

F

fortran/test/fflush1.f90 +fortran/test/fflush2.f90 +fortran/test/fortranlib_test.f90 +fortran/test/fortranlib_test_1_8.f90 +fortran/test/fortranlib_test_F03.f90 +fortran/test/tc.c +fortran/test/tf.f90 +fortran/test/tH5A.f90 +fortran/test/tH5A_1_8.f90 +fortran/test/tH5D.f90 +fortran/test/tH5E.f90 +fortran/test/tH5E_F03.f90 +fortran/test/tH5F.f90 +fortran/test/tH5G.f90 +fortran/test/tH5G_1_8.f90 +fortran/test/tH5I.f90 +fortran/test/tH5L_F03.f90 +fortran/test/tH5O.f90 +fortran/test/tH5P.f90 +fortran/test/tH5P_F03.f90 +fortran/test/tH5R.f90 +fortran/test/tH5S.f90 +fortran/test/tH5Sselect.f90 +fortran/test/tH5T.f90 +fortran/test/tH5T_F03.f90 +fortran/test/tH5VL.f90 +fortran/test/tH5Z.f90 +

H

H5A +H5A (F03) +H5A (F90) +H5Af +H5D +H5D (F03) +H5D (F90) +H5Df +H5E +H5E (F03) +H5E (F90) +H5Ef +H5F +H5f90kit +H5FDMPIO +H5FDmpiof +H5Ff +H5G +H5Gf +H5GLOBAL +H5I +H5If +H5L +H5L (F03) +H5L (F90) +H5Lf +H5LIB +H5LIB_PROVISIONAL +H5LIB_PROVISIONAL (F90) +H5O +H5O (F03) +H5O (F90) +H5Of +H5P (_F90) +H5P (F03) +H5P (F90) +H5Pf +H5R +H5R (F03) +H5R (F90) +H5Rf +H5S +H5Sf +H5T +H5T (F03) +H5T (F90) +H5Tf +H5Z +H5Zf +HDF5 +HDF5 (mpio) +

S

src/H5_DBLE_InterfaceExclude.f90 +src/H5_DBLE_InterfaceInclude.f90 +

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9

+
+ + + diff --git a/fortran/doc/DevelGuide/robo_programs.html b/fortran/doc/DevelGuide/robo_programs.html new file mode 100644 index 0000000..8c35230 --- /dev/null +++ b/fortran/doc/DevelGuide/robo_programs.html @@ -0,0 +1,39 @@ + + + + + + + +Programs + + + + +
+
+ +
+

Programs

+

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9

+

H

H5test_kind +H5test_kind_SIZEOF +

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9

+
+ + + diff --git a/fortran/doc/DevelGuide/robo_sourcefiles.html b/fortran/doc/DevelGuide/robo_sourcefiles.html new file mode 100644 index 0000000..63a8637 --- /dev/null +++ b/fortran/doc/DevelGuide/robo_sourcefiles.html @@ -0,0 +1,309 @@ + + + + + + + +Sourcefiles + + + + +
+
+ +
+ +
+ + + diff --git a/fortran/doc/DevelGuide/robo_subroutines.html b/fortran/doc/DevelGuide/robo_subroutines.html new file mode 100644 index 0000000..0846c77 --- /dev/null +++ b/fortran/doc/DevelGuide/robo_subroutines.html @@ -0,0 +1,421 @@ + + + + + + + +Subroutines + + + + +
+
+ +
+

Subroutines

+

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9

+ h5pget_double + h5pget_hyper_vector_size_f + h5pset_family_offset_f + h5pset_fapl_family_f + h5pset_meta_block_size_f +

H

h5aclose_f +h5acreate_by_name_f +h5acreate_f +h5adelete_by_idx_f +h5adelete_by_name_f +h5adelete_f +H5Aexists_by_name_f +H5Aexists_f +h5aget_create_plist_f +h5aget_info_by_idx_f +h5aget_info_by_name_f +h5aget_info_f +h5aget_name_by_idx_f +h5aget_name_f +h5aget_num_attrs_f +h5aget_space_f +h5aget_storage_size_f +h5aget_type_f +h5aopen_by_idx_f +H5Aopen_by_name_f +h5aopen_f +h5aopen_idx_f +h5aopen_name_f +h5aread_f +h5arename_by_name_f +h5arename_f +h5check_version_f +h5close_f +h5dclose_f +h5dcreate_anon_f +h5dcreate_f +h5dget_access_plist_f +h5dget_create_plist_f +h5dget_space_f +h5dget_space_status_f +h5dget_storage_size_f +h5dget_type_f +h5dont_atexit_f +h5dopen_f +h5dread_f +h5dset_extent +h5dvlen_get_max_len_f +h5dvlen_reclaim +h5eclear_f +h5eget_auto_f +h5eget_major_f +h5eget_minor_f +h5eprint_f +h5eset_auto2_f +h5eset_auto_f +h5fclose_f +h5fcreate_f +h5fflush_f +h5fget_access_plist_f +h5fget_create_plist_f +h5fget_filesize_f +h5fget_freespace_f +h5fget_name_f +h5fget_obj_count_f +h5fget_obj_ids_f +h5fis_hdf5_f +h5fmount_f +h5fopen_f +h5freopen_f +h5funmount_f +h5garbage_collect_f +h5gclose_f +H5Gcreate_anon_f +h5gcreate_f +h5get_libversion_f +h5gget_comment_f +H5Gget_create_plist_f +h5gget_info_by_idx_f +h5gget_info_by_name_f +h5gget_info_f +h5gget_linkval_f +h5gget_obj_info_idx_f +h5glink2_f +h5glink_f +h5gmove2_f +h5gmove_f +h5gn_members_f +h5gopen_f +h5gset_comment_f +h5gunlink_f +h5idec_ref_f +h5iget_file_id_f +h5iget_name_f +h5iget_ref_f +h5iget_type_f +h5iinc_ref_f +h5iis_valid_f +h5lcopy_f +H5Lcreate_external_f +H5Lcreate_hard_f +H5Lcreate_soft_f +h5ldelete_by_idx_f +h5ldelete_f +H5Lexists_f +h5lget_info_by_idx_f +h5lget_info_f +h5lget_name_by_idx_f +h5lis_registered_f +h5literate_by_name_f +h5literate_f +h5lmove_f +h5oclose_f +h5olink_f +h5oopen_f +h5open_by_addr_f +h5open_f +h5ovisit_f +h5pall_filters_avail_f +h5pclose_class_f +h5pclose_f +h5pcopy_f +h5pcopy_prop_f +h5pcreate_class_f +h5pcreate_class_f +h5pcreate_f +h5pequal_f +h5pexist_f +h5pfill_value_defined_f +h5pget_alignment_f +h5pget_alloc_time_f +H5Pget_attr_creation_order_f +H5Pget_attr_phase_change_f +h5pget_btree_ratios_f +h5pget_buffer_f +h5pget_cache_f +h5pget_char +h5pget_char +H5Pget_char_encoding_f +H5Pget_chunk_cache_f +h5pget_chunk_f +h5pget_class_f +h5pget_class_name_f +h5pget_class_parent_f +h5pget_copy_object_f +H5Pget_create_inter_group_f +h5pget_data_transform_f +h5pget_double +h5pget_driver_f +h5pget_dxpl_mpio_f +h5pget_edc_check_f +H5Pget_est_link_info_f +h5pget_external_count_f +h5pget_external_f +h5pget_fapl_core_f +h5pget_fapl_direct_f +h5pget_fapl_family_f +h5pget_fapl_mpio_f +h5pget_fapl_mpiposix_f +h5pget_fapl_multi_f +h5pget_fclose_degree_f +h5pget_fill_time_f +h5pget_filter_by_id_f +h5pget_filter_f +h5pget_gc_references_f +h5pget_integer +h5pget_integer +h5pget_istore_k_f +h5pget_layout_f +H5Pget_link_creation_order_f +H5Pget_link_phase_change_f +H5Pget_local_heap_size_hint_f +h5pget_meta_block_size_f +h5pget_nfilters_f +h5pget_nlinks_f +h5pget_npros_f +H5Pget_obj_track_times_f +h5pget_preserve_f +h5pget_real +h5pget_real +h5pget_sec2_f +h5pget_sieve_buf_size_f +h5pget_size_f +h5pget_sizes_f +h5pget_small_data_block_size_f +h5pget_split_f +h5pget_stdio_f +h5pget_sym_k_f +h5pget_userblock_f +h5pget_version_f +h5pinsert_char +h5pinsert_char +h5pinsert_double +h5pinsert_double +h5pinsert_integer +h5pinsert_integer +h5pinsert_ptr +h5pinsert_real +h5pinsert_real +h5pisa_class_f +h5pmodify_filter_f +h5pregister_char +h5pregister_char +h5pregister_double +h5pregister_double +h5pregister_integer +h5pregister_integer +h5pregister_ptr +h5pregister_real +h5pregister_real +h5premove_f +h5premove_filter_f +h5pset(get)fill_value_f +h5pset(get)fill_value_f +h5pset_alignment_f +h5pset_alloc_time_f +H5Pset_attr_creation_order_f +H5Pset_attr_phase_change_f +h5pset_btree_ratios_f +h5pset_buffer_f +h5pset_cache_f +h5pset_char +h5pset_char +H5Pset_char_encoding_f +H5Pset_chunk_cache_f +h5pset_chunk_f +h5pset_copy_object_f +H5Pset_create_inter_group_f +h5pset_data_transform_f +h5pset_deflate_f +h5pset_double +h5pset_double +h5pset_dxpl_mpio_f +h5pset_edc_check_f +h5pset_est_link_info_f +h5pset_external_f +h5pset_fapl_core_f +h5pset_fapl_direct_f +h5pset_fapl_mpio_f +h5pset_fapl_mpiposix_f +h5pset_fapl_multi_l +h5pset_fapl_multi_s +h5pset_fapl_sec2_f +h5pset_fapl_split_f +h5pset_fapl_stdio_f +h5pset_fclose_degree_f +h5pset_fill_time_f +h5pset_filter_f +h5pset_fletcher32_f +h5pset_gc_references_f +h5pset_hyper_vector_size_f +h5pset_integer +h5pset_integer +h5pset_istore_k_f +h5pset_layout_f +H5Pset_libver_bounds_f +H5Pset_link_creation_order_f +h5pset_link_phase_change_f +H5Pset_local_heap_size_hint_f +H5Pset_nbit_f +h5pset_nlinks_f +H5Pset_obj_track_times_f +h5pset_preserve_f +h5pset_real +h5pset_real +h5pset_scaleoffset_f +H5Pset_shared_mesg_index_f +H5Pset_shared_mesg_nindexes_f +h5pset_shuffle_f +h5pset_sieve_buf_size_f +h5pset_sizes_f +h5pset_small_data_block_size_f +h5pset_sym_k_f +h5pset_szip_f +h5pset_userblock_f +h5punregister_f +h5rcreate_object_f +h5rcreate_object_f +h5rcreate_ptr_f +h5rcreate_region_f +h5rcreate_region_f +h5rdereference_object_f +h5rdereference_object_f +h5rdereference_ptr_f +h5rdereference_region_f +h5rdereference_region_f +h5rget_name_object_f +h5rget_name_object_f +h5rget_name_ptr_f +h5rget_name_region_f +h5rget_name_region_f +h5rget_obj_type_f +h5rget_object_type_obj_f +h5rget_region_region_f +h5sclose_f +h5scopy_f +h5screate_f +h5screate_simple_f +H5Sdecode_f +H5Sencode_f +h5sextent_copy_f +h5sextent_equal_f +h5sget_select_bounds_f +h5sget_select_elem_npoints_f +h5sget_select_elem_pointlist_f +h5sget_select_hyper_blocklist_f +h5sget_select_hyper_nblocks_f +h5sget_select_npoints_f +h5sget_select_type_f +h5sget_simple_extent_dims_f +h5sget_simple_extent_ndims_f +h5sget_simple_extent_npoints_f +h5sget_simple_extent_type_f +h5sis_simple_f +h5soffset_simple_f +h5sselect_all_f +h5sselect_elements_f +h5sselect_hyperslab_f +h5sselect_none_f +h5sselect_valid_f +h5sset_extent_none_f +h5sset_extent_simple_f +h5tarray_create_f +h5tclose_f +h5tcommit_anon_f +h5tcommit_f +h5tcommitted_f +h5tcompiler_conv_f +H5Tconvert_f +h5tcopy_f +h5tcreate_f +H5Tdecode_f +h5tenaum_insert_f +H5Tencode_f +h5tenum_create_f +h5tenum_nameof_f +h5tenum_valuof_f +h5tequal_f +h5tget_array_dims_f +h5tget_array_ndims_f +h5tget_class_f +h5tget_create_plist_f +h5tget_cset_f +h5tget_ebias_f +h5tget_fields_f +h5tget_inpad_f +h5tget_member_class_f +h5tget_member_index_f +h5tget_member_name_f +h5tget_member_offset_f +h5tget_member_type_f +h5tget_member_value_f +h5tget_native_type_f +h5tget_nmembers_f +h5tget_norm_f +h5tget_offset_f +h5tget_order_f +h5tget_pad_f +h5tget_precision_f +h5tget_sign_f +h5tget_size_f +h5tget_strpad_f +h5tget_super_f +h5tget_tag_f +h5tinsert_f +h5tis_variable_str_f +h5topen_f +h5tpack_f +h5tset_cset_f +h5tset_ebias_f +h5tset_fields_f +h5tset_inpad_f +h5tset_norm_f +h5tset_offset_f +h5tset_order_f +h5tset_pad_f +h5tset_precision_f +h5tset_sign_f +h5tset_size_f +h5tset_strpad_f +h5tset_tag_f +h5tvlen_create_f +h5zfilter_avail_f +h5zget_filter_info_f +h5zunregister_f +

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9

+
+ + + diff --git a/fortran/doc/DevelGuide/robodoc.css b/fortran/doc/DevelGuide/robodoc.css new file mode 100644 index 0000000..207a172 --- /dev/null +++ b/fortran/doc/DevelGuide/robodoc.css @@ -0,0 +1,302 @@ +/****h* ROBODoc/ROBODoc Cascading Style Sheet + * FUNCTION + * This is the default cascading style sheet for documentation + * generated with ROBODoc. + * You can edit this file to your own liking and then use + * it with the option + * --css + * + * This style-sheet defines the following layout + * +----------------------------------------+ + * | logo | + * +----------------------------------------+ + * | extra | + * +----------------------------------------+ + * | | navi- | + * | | gation | + * | content | | + * | | | + * +----------------------------------------+ + * | footer | + * +----------------------------------------+ + * + * This style-sheet is based on a style-sheet that was automatically + * generated with the Strange Banana stylesheet generator. + * See http://www.strangebanana.com/generator.aspx + * + ****** + * $Id: html_generator.c,v 1.94 2008/06/17 11:49:27 gumpu Exp $ + */ + +body +{ + background-color: rgb(255,255,255); + color: rgb(98,84,55); + font-family: Arial, serif; + border-color: rgb(226,199,143); +} + +pre +{ + font-family: monospace; + margin: 15px; + padding: 5px; + white-space: pre; + color: #000; +} + +pre.source +{ + background-color: #ffe; + border: dashed #aa9 1px; +} + +p +{ + margin:15px; +} + +p.item_name +{ + font-weight: bolder; + margin:5px; + font-size: 120%; +} + +#content +{ + font-size: 100%; + color: rgb(0,0,0); + background-color: rgb(255,255,255); + border-left-width: 0px; + border-right-width: 0px; + border-top-width: 0px; + border-bottom-width: 0px; + border-left-style: none; + border-right-style: none; + border-top-style: none; + border-bottom-style: none; + padding: 40px 31px 14px 17px; + border-color: rgb(0,0,0); + text-align: justify; +} + +#navigation +{ + background-color: rgb(98,84,55); + color: rgb(230,221,202); + font-family: "Times New Roman", serif; + font-style: normal; + border-color: rgb(0,0,0); +} + +a.menuitem +{ + font-size: 120%; + background-color: rgb(0,0,0); + color: rgb(195,165,100); + font-variant: normal; + text-transform: none; + font-weight: normal; + padding: 1px 8px 3px 1px; + margin-left: 5px; + margin-right: 5px; + margin-top: 5px; + margin-bottom: 5px; + border-color: rgb(159,126,57); + text-align: right; +} + +#logo, #logo a +{ + font-size: 130%; + background-color: rgb(198,178,135); + color: rgb(98,84,55); + font-family: Georgia, serif; + font-style: normal; + font-variant: normal; + text-transform: none; + font-weight: bold; + padding: 20px 18px 20px 18px; + border-color: rgb(255,255,255); + text-align: right; +} + +#extra, #extra a +{ + font-size: 128%; + background-color: rgb(0,0,0); + color: rgb(230,221,202); + font-style: normal; + font-variant: normal; + text-transform: none; + font-weight: normal; + border-left-width: 0px; + border-right-width: 0px; + border-top-width: 0px; + border-bottom-width: 0px; + border-left-style: none; + border-right-style: none; + border-top-style: none; + border-bottom-style: none; + padding: 12px 12px 12px 12px; + border-color: rgb(195,165,100); + text-align: center; +} + +#content a +{ + color: rgb(159,126,57); + text-decoration: none; +} + +#content a:hover, #content a:active +{ + color: rgb(255,255,255); + background-color: rgb(159,126,57); +} + +a.indexitem +{ + display: block; +} + +h1, h2, h3, h4, h5, h6 +{ + background-color: rgb(221,221,221); + font-family: Arial, serif; + font-style: normal; + font-variant: normal; + text-transform: none; + font-weight: normal; +} + +h1 +{ + font-size: 151%; +} + +h2 +{ + font-size: 142%; +} + +h3 +{ + font-size: 133%; +} + +h4 +{ + font-size: 124%; +} + +h5 +{ + font-size: 115%; +} + +h6 +{ + font-size: 106%; +} + +#navigation a +{ + text-decoration: none; +} + +.menuitem:hover +{ + background-color: rgb(195,165,100); + color: rgb(0,0,0); +} + +#extra a +{ + text-decoration: none; +} + +#logo a +{ + text-decoration: none; +} + +#extra a:hover +{ +} + +/* layout */ +#navigation +{ + width: 22%; + position: relative; + top: 0; + right: 0; + float: right; + text-align: center; + margin-left: 10px; +} + +.menuitem {width: auto;} +#content {width: auto;} +.menuitem {display: block;} + + +div#footer +{ + background-color: rgb(198,178,135); + color: rgb(98,84,55); + clear: left; + width: 100%; + font-size: 71%; +} + +div#footer a +{ + background-color: rgb(198,178,135); + color: rgb(98,84,55); +} + +div#footer p +{ + margin:0; + padding:5px 10px +} + +span.keyword +{ + color: #00F; +} + +span.comment +{ + color: #080; +} + +span.quote +{ + color: #F00; +} + +span.squote +{ + color: #F0F; +} + +span.sign +{ + color: #008B8B; +} + +span.line_number +{ + color: #808080; +} + +@media print +{ + #navigation {display: none;} + #content {padding: 0px;} + #content a {text-decoration: underline;} +} diff --git a/fortran/doc/DevelGuide/src/H5Af_c.html b/fortran/doc/DevelGuide/src/H5Af_c.html new file mode 100644 index 0000000..7fcecc1 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Af_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5Af.c + + + + + +
+
+ +

H5Af

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for H5A Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Aff_F03_f90.html b/fortran/doc/DevelGuide/src/H5Aff_F03_f90.html new file mode 100644 index 0000000..9e503f4 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Aff_F03_f90.html @@ -0,0 +1,130 @@ + + + + + + + +./src/H5Aff_F03.f90 + + + + + +
+
+ +

H5A (F03)

+ +

[ Top ] [ Modules ]

+

NAME

+
  H5A_PROVISIONAL
+
+

FILE

+
  src/fortran/src/H5Aff_F03.f90
+
+

PURPOSE

+
  This file contains Fortran 90 and Fortran 2003 interfaces for H5A functions.
+  It contains the same functions as H5Aff_F90.f90 but includes the
+  Fortran 2003 functions and the interface listings. This file will be compiled
+  instead of H5Aff_F90.f90 if Fortran 2003 functions are enabled.
+
+

NOTES

+
  (A) C_LOC and character strings according to the Fortran 2003 standard:
+
+  15.1.2.5 C_LOC(X)
+
+  Argument. X shall either
+
+  (1) have interoperable type and type parameters and be
+    (a) a variable that has the TARGET attribute and is interoperable,
+    (b) an allocated allocatable variable that has the TARGET attribute
+        and is not an array of zero size, or
+    (c) an associated scalar pointer, or
+  (2) be a nonpolymorphic scalar, have no length type parameters, and be
+    (a) a nonallocatable, nonpointer variable that has the TARGET attribute,
+    (b) an allocated allocatable variable that has the TARGET attribute, or
+    (c) an associated pointer.
+
+  - When X is a character, for interoperability the standard is:
+
+  15.2.1 Interoperability of intrinsic types
+
+  ...if the type is character, interoperability also requires that the length type parameter
+  be omitted or be specified by an initialization expression whose value is one.
+
+  THEREFORE compilers that have not extended the standard  require
+
+  CHARACTER(LEN=1), TARGET :: chr
+  or
+  CHARACTER, TARGET :: chr
+
+  (B)
+                         *** IMPORTANT ***
+  If you add a new H5A function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5aread_f

+ +

[ Top ] [ H5A (F03) ] [ Subroutines ]

+

NAME

+
  h5aread_f
+
+

PURPOSE

+
  Reads an attribute.
+
+

INPUTS

+
  attr_id       - attribute identifier
+  memtype_id    - attribute memory type identifier
+  dims          - 1D array of size 7, stores sizes of the
+                - buf array dimensions.
+
+

OUTPUTS

+
  buf           - buffer to read attribute data in
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces are added for
+  called C functions (it is needed for Windows
+  port).  February 27, 2001
+
+  dims parameter was added to make code portable;
+  Aprile 4, 2001
+
+  Changed buf intent to INOUT to be consistant
+  with how the C functions handles it. The pg
+  compiler will return 0 if a buf value is not set.
+  February, 2008
+
+

NOTES

+
  This function is overloaded to write INTEGER,
+  REAL, DOUBLE PRECISION and CHARACTER buffers
+  up to 7 dimensions.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Aff_F90_f90.html b/fortran/doc/DevelGuide/src/H5Aff_F90_f90.html new file mode 100644 index 0000000..aa01b49 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Aff_F90_f90.html @@ -0,0 +1,56 @@ + + + + + + + +./src/H5Aff_F90.f90 + + + + + +
+
+ +

H5A (F90)

+ +

[ Top ] [ Modules ]

+

NAME

+
  H5A_PROVISIONAL
+
+

FILE

+
  fortran/src/H5Aff_F90.f90
+
+

PURPOSE

+
  This file contains Fortran 90 interfaces for H5A functions. It contains
+  the same functions as H5Aff_F03.f90 but excludes the Fortran 2003 functions
+  and the interface listings. This file will be compiled instead of H5Aff_F03.f90
+  if Fortran 2003 functions are not enabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5A function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Aff_f90.html b/fortran/doc/DevelGuide/src/H5Aff_f90.html new file mode 100644 index 0000000..268c1db --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Aff_f90.html @@ -0,0 +1,1102 @@ + + + + + + + +./src/H5Aff.f90 + + + + + +
+
+ +

H5A

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5A
+
+

PURPOSE

+
  This file contains Fortran interfaces for H5A functions. It includes
+  all the functions that are independent on whether the Fortran 2003 functions
+  are enabled or disabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5A function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5aclose_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5aclose_f
+
+

PURPOSE

+
  Closes the specified attribute.
+
+

INPUTS

+
  attr_id  - attribute identifier
+
+

OUTPUTS

+
  hdferr   - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces are added for
+  called C functions (it is needed for Windows
+  port).  February 27, 2001
+
+

SOURCE

+
  SUBROUTINE h5aclose_f(attr_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: attr_id  ! Attribute identifier
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5acreate_by_name_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5acreate_by_name_f
+
+

PURPOSE

+
  Creates an attribute attached to a specified object
+
+

INPUTS

+
  loc_id        - Location or object identifier; may be dataset or group
+  obj_name      - Name, relative to loc_id, of object that attribute is to be attached to
+  attr_name     - Attribute name
+  type_id       - Attribute datatype identifier
+  space_id      - Attribute dataspace identifier
+
+

OUTPUTS

+
  attr          - an attribute identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  acpl_id       - Attribute creation property list identifier (Currently not used.)
+  aapl_id       - Attribute access property list identifier (Currently not used.)
+  lapl_id       - Link access property list
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February, 2008
+
+

SOURCE

+
  SUBROUTINE h5acreate_by_name_f(loc_id, obj_name, attr_name, type_id, space_id, attr, hdferr, &
+       acpl_id, aapl_id, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T),   INTENT(IN)  :: loc_id
+    CHARACTER(LEN=*), INTENT(IN)  :: obj_name
+    CHARACTER(LEN=*), INTENT(IN)  :: attr_name
+    INTEGER(HID_T),   INTENT(IN)  :: type_id
+    INTEGER(HID_T),   INTENT(IN)  :: space_id
+    INTEGER(HID_T),   INTENT(OUT) :: attr
+    INTEGER,          INTENT(OUT) :: hdferr
+
+    INTEGER(HID_T),   INTENT(IN), OPTIONAL :: acpl_id
+    INTEGER(HID_T),   INTENT(IN), OPTIONAL :: aapl_id
+    INTEGER(HID_T),   INTENT(IN), OPTIONAL :: lapl_id
+
+ +
+ +

h5acreate_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5acreate_f
+
+

PURPOSE

+
  Creates a dataset as an attribute of a group, dataset, or named datatype
+
+

INPUTS

+
  loc_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        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  acpl_id       - Attribute creation property list identifier
+  appl_id       - Attribute access property list identifier
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces are added for
+  called C functions (it is needed for Windows
+  port).  February 27, 2001
+
+

SOURCE

+
  SUBROUTINE h5acreate_f(loc_id, name, type_id, space_id, attr_id, &
+                                 hdferr, acpl_id, aapl_id )
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! Object identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Attribute name
+    INTEGER(HID_T), INTENT(IN) :: type_id  ! Attribute datatype identifier
+    INTEGER(HID_T), INTENT(IN) :: space_id ! Attribute dataspace identifier
+    INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code:
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

h5adelete_by_idx_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5adelete_by_idx_f
+
+

PURPOSE

+
  Deletes an attribute from an object according to index order
+
+

INPUTS

+
  loc_id        - Location or object identifier; may be dataset or group
+  obj_name      - Name of object, relative to location, from which attribute is to be removed
+  idx_type      - Type of index; Possible values are:
+                   H5_INDEX_UNKNOWN_F = -1  - Unknown index type
+                   H5_INDEX_NAME_F          - Index on names
+                   H5_INDEX_CRT_ORDER_F     - Index on creation order
+                   H5_INDEX_N_F             - Number of indices defined
+
+  order         - Order in which to iterate over index; Possible values are:
+                   H5_ITER_UNKNOWN_F    - Unknown order
+                   H5_ITER_INC_F        - Increasing order
+                   H5_ITER_DEC_F        - Decreasing order
+                   H5_ITER_NATIVE_F     - No particular order, whatever is fastest
+                   H5_ITER_N_F          - Number of iteration orders
+
+  n             - Offset within index
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - Link access property list
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5adelete_by_idx_f(loc_id, obj_name, idx_type, order, n, hdferr, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id      ! Identifer for object to which attribute is attached
+    CHARACTER(LEN=*), INTENT(IN) :: obj_name  ! Name of object, relative to location,
+                                              !  from which attribute is to be removed
+    INTEGER, INTENT(IN) :: idx_type           ! Type of index; Possible values are:
+                                              !    H5_INDEX_UNKNOWN_F   - Unknown index type
+                                              !    H5_INDEX_NAME_F      - Index on names
+                                              !    H5_INDEX_CRT_ORDER_F - Index on creation order
+                                              !    H5_INDEX_N_F       - Number of indices defined
+
+    INTEGER, INTENT(IN) :: order              ! Order in which to iterate over index; Possible values are:
+                                              !    H5_ITER_UNKNOWN_F  - Unknown order
+                                              !    H5_ITER_INC_F      - Increasing order
+                                              !    H5_ITER_DEC_F      - Decreasing order
+                                              !    H5_ITER_NATIVE_F   - No particular order, whatever is fastest
+                                              !    H5_ITER_N_F      - Number of iteration orders
+    INTEGER(HSIZE_T), INTENT(IN) :: n         ! Offset within index
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code:
+                                           ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+
+ +
+ +

h5adelete_by_name_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5adelete_by_name_f
+
+

PURPOSE

+
  Removes an attribute from a specified location
+
+

INPUTS

+
  loc_id        - Identifer for object to which attribute is attached
+  obj_name      - Name of attribute to open
+  attr_name     - Attribute access property list
+  lapl_id       - Link access property list
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5adelete_by_name_f(loc_id, obj_name, attr_name, hdferr, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id      ! Identifer for object to which attribute is attached
+    CHARACTER(LEN=*), INTENT(IN) :: obj_name  ! Name of object, relative to location,
+                                              !  from which attribute is to be removed
+    CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Name of attribute to delete
+    INTEGER, INTENT(OUT) :: hdferr            ! Error code:
+                                              ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+
+ +
+ +

h5adelete_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

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        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces are added for
+  called C functions (it is needed for Windows
+  port).  February 27, 2001
+
+

SOURCE

+
  SUBROUTINE h5adelete_f(obj_id, name, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id  ! Object identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Attribute name
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

H5Aexists_by_name_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  H5Aexists_by_name_f
+
+

PURPOSE

+
  Determines whether an attribute with a given name exists on an object
+
+

INPUTS

+
  loc_id        - Location identifier
+  obj_name      - Object name either relative to loc_id, absolute from the file’s root group, or '.' (a dot)
+  attr_name     - Attribute name
+
+

OUTPUTS

+
  attr_exists   - attribute exists status
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - Link access property list identifier
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February, 2008
+
+

SOURCE

+
  SUBROUTINE h5aexists_by_name_f(loc_id, obj_name, attr_name, attr_exists, hdferr, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id     ! Location identifier
+    CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Object name either relative to loc_id,
+                                             ! absolute from the fileâs root group, or '.'
+    CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name
+    LOGICAL, INTENT(OUT) :: attr_exists ! .TRUE. if exists, .FALSE. otherwise
+    INTEGER, INTENT(OUT) :: hdferr      ! Error code:
+                                        ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier
+
+ +
+ +

H5Aexists_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  H5Aexists_f
+
+

PURPOSE

+
  Determines whether an attribute with a given name exists on an object
+
+

INPUTS

+
  obj_id        - Object identifier
+  attr_name     - Attribute name
+
+

OUTPUTS

+
  attr_exists   - attribute exists status
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February, 2008
+
+

SOURCE

+
  SUBROUTINE h5aexists_f(obj_id, attr_name, attr_exists, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id      ! Object identifier
+    CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name
+    LOGICAL, INTENT(OUT) :: attr_exists  ! .TRUE. if exists, .FALSE. otherwise
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code:
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5aget_create_plist_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5aget_create_plist_f
+
+

PURPOSE

+
  Gets an attribute creation property list identifier
+
+

INPUTS

+
  attr_id          - Identifier of the attribute
+
+

OUTPUTS

+
  creation_prop_id - Identifier for the attribute’s creation property
+  hdferr           - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5aget_create_plist_f(attr_id, creation_prop_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: attr_id  ! Identifier of the attribute
+    INTEGER(HID_T), INTENT(OUT) :: creation_prop_id   ! Identifier for the attributeâs creation property
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5aget_info_by_idx_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5aget_info_by_idx_f
+
+

PURPOSE

+
  Retrieves attribute information, by attribute index position
+
+

INPUTS

+
  loc_id        - Location of object to which attribute is attached
+  obj_name      - Name of object to which attribute is attached, relative to location
+  idx_type      - Type of index
+  order         - Index traversal order
+  n             - Attribute’s position in index
+
+ OUTPUTS  NOTE: In C it is defined as a structure: H5A_info_t
+  corder_valid  - indicates whether the creation order data is valid for this attribute
+  corder        - is a positive integer containing the creation order of the attribute
+  cset          - indicates the character set used for the attribute’s name
+  data_size     - indicates the size, in the number of characters, of the attribute
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - Link access property list
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5aget_info_by_idx_f(loc_id, obj_name, idx_type, order, n, &
+       f_corder_valid, corder, cset, data_size, hdferr, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id      ! Object identifier
+    CHARACTER(LEN=*), INTENT(IN) :: obj_name  ! Name of object to which attribute is attached
+    INTEGER, INTENT(IN) :: idx_type           ! Type of index; Possible values are:
+                                              !    H5_INDEX_UNKNOWN_F   - Unknown index type
+                                              !    H5_INDEX_NAME_F      - Index on names
+                                              !    H5_INDEX_CRT_ORDER_F - Index on creation order
+                                              !    H5_INDEX_N_F       - Number of indices defined
+    INTEGER, INTENT(IN) :: order              ! Order in which to iterate over index; Possible values are:
+                                              !    H5_ITER_UNKNOWN_F  - Unknown order
+                                              !    H5_ITER_INC_F      - Increasing order
+                                              !    H5_ITER_DEC_F      - Decreasing order
+                                              !    H5_ITER_NATIVE_F   - No particular order, whatever is fastest
+
+    INTEGER(HSIZE_T), INTENT(IN) :: n         ! Attributeâs position in index
+
+
+    LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the creation order data is valid for this attribute
+    INTEGER, INTENT(OUT) :: corder ! Is a positive integer containing the creation order of the attribute
+    INTEGER, INTENT(OUT) :: cset   ! Indicates the character set used for the attributeâs name
+    INTEGER(HSIZE_T), INTENT(OUT) :: data_size ! Indicates the size, in the number of characters, of the attribute
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code:
+                                         ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id  ! Link access property list
+
+ +
+ +

h5aget_info_by_name_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5aget_info_by_name_f
+
+

PURPOSE

+
  Retrieves attribute information, by attribute name
+
+

INPUTS

+
  loc_id        - Location of object to which attribute is attached
+  obj_name      - Name of object to which attribute is attached, relative to location
+  attr_name     - Attribute name
+
+ OUTPUTS  NOTE: In C it is defined as a structure: H5A_info_t
+  corder_valid  - indicates whether the creation order data is valid for this attribute
+  corder        - is a positive integer containing the creation order of the attribute
+  cset          - indicates the character set used for the attribute’s name
+  data_size     - indicates the size, in the number of characters, of the attribute
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - Link access property list
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5aget_info_by_name_f(loc_id, obj_name, attr_name, &
+       f_corder_valid, corder, cset, data_size, hdferr, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id    ! Object identifier
+    CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of object to which attribute is attached
+    CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name
+
+
+    LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the creation order data is valid for this attribute
+    INTEGER, INTENT(OUT) :: corder ! Is a positive integer containing the creation order of the attribute
+    INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the attributeâs name
+    INTEGER(HSIZE_T), INTENT(OUT) :: data_size   ! Indicates the size, in the number of characters, of the attribute
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code:
+                                           ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id  ! Link access property list
+
+ +
+ +

h5aget_info_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5aget_info_f
+
+

PURPOSE

+
  Retrieves attribute information, by attribute identifier
+
+

INPUTS

+
  attr_id       - attribute identifier
+
+

OUTPUTS

+
  NOTE: In C it is defined as a structure: H5A_info_t
+
+  corder_valid  - indicates whether the creation order data is valid for this attribute
+  corder        - is a positive integer containing the creation order of the attribute
+  cset          - indicates the character set used for the attribute’s name
+  data_size     - indicates the size, in the number of characters, of the attribute
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5aget_info_f(attr_id, f_corder_valid, corder, cset, data_size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: attr_id  ! Attribute identifier
+
+    LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the creation order data is valid for this attribute
+    INTEGER, INTENT(OUT) :: corder ! Is a positive integer containing the creation order of the attribute
+    INTEGER, INTENT(OUT) :: cset   ! Indicates the character set used for the attributeâs name
+    INTEGER(HSIZE_T), INTENT(OUT) :: data_size ! Indicates the size, in the number of characters, of the attribute
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code:
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5aget_name_by_idx_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5aget_name_by_idx_f
+
+

PURPOSE

+
  Gets an attribute name, by attribute index position.
+
+

INPUTS

+
  loc_id        - Location of object to which attribute is attached
+  obj_name      - Name of object to which attribute is attached, relative to location
+  idx_type      - Type of index; Possible values are:
+                   H5_INDEX_UNKNOWN_F = -1  - Unknown index type
+                   H5_INDEX_NAME_F          - Index on names
+                   H5_INDEX_CRT_ORDER_F     - Index on creation order
+                   H5_INDEX_N_F             - Number of indices defined
+
+  order         - Order in which to iterate over index; Possible values are:
+                   H5_ITER_UNKNOWN_F    - Unknown order
+                   H5_ITER_INC_F        - Increasing order
+                   H5_ITER_DEC_F        - Decreasing order
+                   H5_ITER_NATIVE_F     - No particular order, whatever is fastest
+                   H5_ITER_N_F          - Number of iteration orders
+  order         - Index traversal order
+  n             - Attribute’s position in index
+
+

OUTPUTS

+
  name          - Attribute name
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - Link access property list
+  size          - Size, in bytes, of attribute name
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5aget_name_by_idx_f(loc_id, obj_name, idx_type, order, &
+       n, name, hdferr, size, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id      ! Identifer for object to which attribute is attached
+    CHARACTER(LEN=*), INTENT(IN) :: obj_name  ! Name of object, relative to location,
+                                              !  from which attribute is to be removed *TEST* check NULL
+    INTEGER, INTENT(IN) :: idx_type ! Type of index; Possible values are:
+                                    !    H5_INDEX_UNKNOWN_F   - Unknown index type
+                                    !    H5_INDEX_NAME_F       - Index on names
+                                    !    H5_INDEX_CRT_ORDER_F  - Index on creation order
+                                    !    H5_INDEX_N_F         - Number of indices defined
+
+    INTEGER, INTENT(IN) :: order    ! Order in which to iterate over index; Possible values are:
+                                    !    H5_ITER_UNKNOWN_F   - Unknown order
+                                    !    H5_ITER_INC_F      - Increasing order
+                                    !    H5_ITER_DEC_F       - Decreasing order
+                                    !    H5_ITER_NATIVE_F    - No particular order, whatever is fastest
+                                    !    H5_ITER_N_F        - Number of iteration orders
+    INTEGER(HSIZE_T), INTENT(IN) :: n !  Attributeâs position in index
+    CHARACTER(LEN=*), INTENT(OUT) :: name ! Attribute name
+    INTEGER, INTENT(OUT) :: hdferr    ! Error code:
+                                      ! Returns attribute name size,
+                                      ! -1 if fail
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+    INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size  ! Indicates the size, in the number of characters, 
+                                                    ! of the attribute
+
+ +
+ +

h5aget_name_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

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        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces are added for
+  called C functions (it is needed for Windows
+  port).  February 27, 2001
+
+

SOURCE

+
  SUBROUTINE h5aget_name_f(attr_id, size, buf, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: attr_id  ! Attribute identifier
+    INTEGER(SIZE_T), INTENT(IN) :: size    ! Buffer size
+    CHARACTER(LEN=*), INTENT(INOUT) :: buf ! Buffer to hold attribute name
+    INTEGER, INTENT(OUT) :: hdferr ! Error code:
+                                   ! name length is successful, -1 if fail
+
+ +
+ +

h5aget_num_attrs_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

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        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces are added for
+  called C functions (it is needed for Windows
+  port).  February 27, 2001
+
+

SOURCE

+
  SUBROUTINE h5aget_num_attrs_f(obj_id, attr_num, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id  ! Object identifier
+    INTEGER, INTENT(OUT) :: attr_num      ! Number of attributes of the object
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5aget_space_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

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        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces are added for
+  called C functions (it is needed for Windows
+  port).  February 27, 2001
+
+

SOURCE

+
  SUBROUTINE h5aget_space_f(attr_id, space_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: attr_id   ! Attribute identifier
+    INTEGER(HID_T), INTENT(OUT) :: space_id ! Attribute dataspace identifier
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5aget_storage_size_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5aget_storage_size_f
+
+

PURPOSE

+
  Returns the amount of storage required for an attribute.
+
+

INPUTS

+
  attr_id       - attribute identifier
+
+

OUTPUTS

+
  size          - attribute storage size
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5aget_storage_size_f(attr_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: attr_id  ! Attribute identifier
+    INTEGER(HSIZE_T), INTENT(OUT) :: size  ! Attribute storage requirement
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5aget_type_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5aget_type_f
+
+

PURPOSE

+
  Gets an attribute datatype.
+
+

INPUTS

+
  attr_id       - attribute identifier
+
+

OUTPUTS

+
  type_id       - attribute datatype identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces are added for
+  called C functions (it is needed for Windows
+  port).  February 27, 2001
+
+

SOURCE

+
  SUBROUTINE h5aget_type_f(attr_id, type_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: attr_id  ! Attribute identifier
+    INTEGER(HID_T), INTENT(OUT) :: type_id ! Attribute datatype identifier
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5aopen_by_idx_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5aopen_by_idx_f
+
+

PURPOSE

+
  Opens an existing attribute that is attached to an object specified by location and name
+
+

INPUTS

+
  loc_id        - Location of object to which attribute is attached
+  obj_name      - Name of object to which attribute is attached, relative to location
+  idx_type      - Type of index
+  order         - Index traversal order
+  n             - Attribute’s position in index
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  aapl_id       - Attribute access property list
+  lapl_id       - Link access property list
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5aopen_by_idx_f(loc_id, obj_name, idx_type, order, n, attr_id, hdferr, aapl_id, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id      ! Object identifier
+    CHARACTER(LEN=*), INTENT(IN) :: obj_name  ! Name of object to which attribute is attached
+    INTEGER, INTENT(IN) :: idx_type           ! Type of index; Possible values are:
+                                              !    H5_INDEX_UNKNOWN_F   - Unknown index type
+                                              !    H5_INDEX_NAME_F      - Index on names
+                                              !    H5_INDEX_CRT_ORDER_F - Index on creation order
+                                              !    H5_INDEX_N_F       - Number of indices defined
+    INTEGER, INTENT(IN) :: order              ! Order in which to iterate over index; Possible values are:
+                                              !    H5_ITER_UNKNOWN_F  - Unknown order
+                                              !    H5_ITER_INC_F      - Increasing order
+                                              !    H5_ITER_DEC_F      - Decreasing order
+                                              !    H5_ITER_NATIVE_F   - No particular order, whatever is fastest
+
+    INTEGER(HSIZE_T), INTENT(IN) :: n       ! Attributeâs position in index
+
+    INTEGER(HID_T), INTENT(OUT) :: attr_id  ! Attribute identifier
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code:
+                                            ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: aapl_id  ! Attribute access property list
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id  ! Link access property list
+
+ +
+ +

H5Aopen_by_name_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  H5Aopen_by_name_f
+
+

PURPOSE

+
  Opens an attribute for an object by object name and attribute name.
+
+

INPUTS

+
  loc_id        - Location from which to find object to which attribute is attached
+  obj_name      - Object name either relative to loc_id, absolute from the file’s root group, or '.' (a dot)
+  attr_name     - Attribute name
+
+

OUTPUTS

+
  attr_id       - attribute identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  aapl_id       - Attribute access property list (Currently unused; should be passed in as H5P_DEFAULT.)
+  lapl_id       - Link access property list identifier
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February, 2008
+
+

SOURCE

+
  SUBROUTINE h5aopen_by_name_f(loc_id, obj_name, attr_name, attr_id, hdferr, aapl_id, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id    ! Location identifier
+    CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Object name either relative to loc_id,
+                                             ! absolute from the fileâs root group, or '.'
+    CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name
+    INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code:
+                                           ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: aapl_id ! Attribute access property list
+                                                    ! (Currently unused; should be passed in as H5P_DEFAULT_F)
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier
+
+ +
+ +

h5aopen_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5aopen_f
+
+

PURPOSE

+
  Opens an attribute for an object specified by object
+  identifier and attribute name
+
+

INPUTS

+
  obj_id        - Identifer for object to which attribute is attached
+  attr_name     - Name of attribute to open
+
+

OUTPUTS

+
  attr_id       - attribute identifier
+
+

OPTIONAL PARAMETERS

+
  aapl_id       - Attribute access property list
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5aopen_f(obj_id, attr_name, attr_id, hdferr, aapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id      ! Object identifier
+    CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name
+    INTEGER(HID_T), INTENT(OUT) :: attr_id    ! Attribute identifier
+    INTEGER, INTENT(OUT) :: hdferr            ! Error code
+                                              !   Success:  0
+                                              !   Failure: -1
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: aapl_id     ! Attribute access property list
+
+ +
+ +

h5aopen_idx_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

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        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces are added for
+  called C functions (it is needed for Windows
+  port).  February 27, 2001
+
+

SOURCE

+
  SUBROUTINE h5aopen_idx_f(obj_id, index, attr_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id    ! Object identifier
+    INTEGER, INTENT(IN) :: index            ! Attribute index
+    INTEGER(HID_T), INTENT(OUT) :: attr_id  ! Attribute identifier
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5aopen_name_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

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        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces are added for
+  called C functions (it is needed for Windows
+  port).  February 27, 2001
+
+

SOURCE

+
  SUBROUTINE h5aopen_name_f(obj_id, name, attr_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id    ! Object identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name    ! Attribute name
+    INTEGER(HID_T), INTENT(OUT) :: attr_id  ! Attribute identifier
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5arename_by_name_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5arename_by_name_f
+
+

PURPOSE

+
  Renames an attribute
+
+

INPUTS

+
  loc_id        - Location or object identifier; may be dataset or group
+  obj_name      - Name of object, relative to location,
+                  whose attribute is to be renamed
+  old_attr_name - Prior attribute name
+  new_attr_name - New attribute name
+  lapl_id       - Link access property list identifier
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5arename_by_name_f(loc_id, obj_name, old_attr_name, new_attr_name, &
+        hdferr, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id    ! Object identifier
+    CHARACTER(LEN=*), INTENT(IN) :: obj_name  ! Name of object, relative to location,
+                                              !  whose attribute is to be renamed
+    CHARACTER(LEN=*), INTENT(IN) :: old_attr_name ! Prior attribute name
+    CHARACTER(LEN=*), INTENT(IN) :: new_attr_name ! New attribute name
+
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code:
+                                         ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier
+
+ +
+ +

h5arename_f

+ +

[ Top ] [ H5A ] [ Subroutines ]

+

NAME

+
  h5arename_f
+
+

PURPOSE

+
  Renames an attribute
+
+

INPUTS

+
  loc_id        - Location or object identifier; may be dataset or group
+  old_attr_name - Prior attribute name
+  new_attr_name - New attribute name
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

HISTORY

+
  N/A
+
+

SOURCE

+
  SUBROUTINE h5arename_f(loc_id, old_attr_name, new_attr_name, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id    ! Object identifier
+    CHARACTER(LEN=*), INTENT(IN) :: old_attr_name ! Prior attribute name
+    CHARACTER(LEN=*), INTENT(IN) :: new_attr_name ! New attribute name
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code:
+                                         ! 0 on success and -1 on failure
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Df_c.html b/fortran/doc/DevelGuide/src/H5Df_c.html new file mode 100644 index 0000000..1e163f2 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Df_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5Df.c + + + + + +
+
+ +

H5Df

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for H5D Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Dff_F03_f90.html b/fortran/doc/DevelGuide/src/H5Dff_F03_f90.html new file mode 100644 index 0000000..0bb4173 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Dff_F03_f90.html @@ -0,0 +1,138 @@ + + + + + + + +./src/H5Dff_F03.f90 + + + + + +
+
+ +

H5D (F03)

+ +

[ Top ] [ Modules ]

+

NAME

+
  H5D_PROVISIONAL
+
+

PURPOSE

+
  This file contains Fortran 90 and Fortran 2003 interfaces for H5D functions.
+  It contains the same functions as H5Dff_DEPRECIATE.f90 but includes the
+  Fortran 2003 functions and the interface listings. This file will be compiled
+  instead of H5Dff_DEPRECIATE.f90 if Fortran 2003 functions are enabled.
+
+

NOTES

+
  (1) The maximum rank of an array allowed in Fortran is 7, therefore
+  we only provide an interface for arrays up to and including rank 7.
+
+  (2) Unfortunately we are using a generic interface and one of the factors
+  used in determining the proper routine to select is that of the array
+  rank being passed. Therefore, we can not create just one subroutine for
+  each array type (integer, real, etc...) and use a
+  rank 1 array of assumed size to handle multiple ranks, i.e.
+  (i.e. integer, dimension(*) :: ... )
+  (i.e. real   , dimension(*) :: ... ) etc...
+
+  (3) Could not place the USE ISO_C_BINDING in the module header because it may
+  conflict with the USE ISO_C_BINDING included in the user's program. Moved
+  the statement instead to each subroutine.
+
+
+  (4) C_LOC and character strings according to the Fortran 2003 standard:
+
+  15.1.2.5 C_LOC(X)
+
+  Argument. X shall either
+
+  (A) have interoperable type and type parameters and be
+  (a) a variable that has the TARGET attribute and is interoperable,
+  (b) an allocated allocatable variable that has the TARGET attribute
+  and is not an array of zero size, or
+  (c) an associated scalar pointer, or
+  (B) be a nonpolymorphic scalar, have no length type parameters, and be
+  (a) a nonallocatable, nonpointer variable that has the TARGET attribute,
+  (b) an allocated allocatable variable that has the TARGET attribute, or
+  (c) an associated pointer.
+
+        - When X is a character, for interoperability the standard is:
+
+  15.2.1 Interoperability of intrinsic types
+
+  ...if the type is character, interoperability also requires that the length type parameter
+  be omitted or be specified by an initialization expression whose value is one.
+
+  THEREFORE compilers that have not extended the standard require the
+  argument in C_LOC to be of the variant:
+
+  CHARACTER(LEN=1), TARGET :: chr
+  or
+  CHARACTER, TARGET :: chr
+  (B)
+                         *** IMPORTANT ***
+  If you add a new H5D function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5dvlen_reclaim

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dvlen_reclaim
+
+

PURPOSE

+
  Reclaims VL datatype memory buffers. 
+
+

INPUTS

+
  type_id  - Identifier of the datatype. 
+  space_id - Identifier of the dataspace. 
+  plist_id - Identifier of the property list used to create the buffer. 
+       buf - Pointer to the buffer to be reclaimed. 
+
+

OUTPUTS

+
  hdferr   - error code
+               Success:  0
+               Failure: -1
+
+

AUTHOR

+
 M. Scot Breitenfeld
+ January 11, 2011
+
+

SOURCE

+
  SUBROUTINE H5Dvlen_reclaim_f(type_id, space_id, plist_id, buf, hdferr)
+
+    USE ISO_C_BINDING
+    IMPLICIT NONE
+
+    INTEGER(HID_T), INTENT(IN) :: type_id   ! Identifier of the datatype. 
+    INTEGER(HID_T), INTENT(IN) :: space_id  ! Identifier of the dataspace. 
+    INTEGER(HID_T), INTENT(IN) :: plist_id  ! Identifier of the property list used to create the buffer. 
+    TYPE(C_PTR), INTENT(INOUT) :: buf       ! Pointer to the buffer to be reclaimed. 
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Dff_F90_f90.html b/fortran/doc/DevelGuide/src/H5Dff_F90_f90.html new file mode 100644 index 0000000..afebdd8 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Dff_F90_f90.html @@ -0,0 +1,116 @@ + + + + + + + +./src/H5Dff_F90.f90 + + + + + +
+
+ +

H5D (F90)

+ +

[ Top ] [ Modules ]

+

NAME

+
  H5D_PROVISIONAL
+
+

PURPOSE

+
  This file contains Fortran 90 interfaces for H5D functions. It contains
+  the same functions as H5Dff_F03.f90 but excludes the Fortran 2003 functions
+  and the interface listings. This file will be compiled instead of H5Dff_F03.f90
+  if Fortran 2003 functions are not enabled.
+
+

NOTES

+
  (1) The maximum rank of an array allowed in Fortran is 7, therefore
+  we only provide an interface for arrays up to and including rank 7.
+
+  (2) Unfortunately we are using a generic interface and one of the factors
+  used in determining the proper routine to select is that of the array
+  rank being passed, therefore we can not create just one subroutine for
+  each array type (integer, real, etc...) of various ranks and then use a
+  rank 1 array of assumed size in the just one subroutine,
+  (i.e. integer, dimension(*) :: ... )
+  (i.e. real   , dimension(*) :: ... ) etc...
+
+  (3)
+                         *** IMPORTANT ***
+  If you add a new H5D function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5dread_f

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dread_f
+
+

PURPOSE

+
  Reads raw data from the specified dataset into buf,
+  converting from file datatype and dataspace to memory
+  datatype and dataspace.
+
+

INPUTS

+
  dset_id       - dataset identifier
+  mem_type_id   - memory type identifier
+  dims          - 1-dim array of size 7; dims(k) has the size
+                  of k-th dimension of the buf array
+
+

OUTPUTS

+
  buf     - buffer to read data in
+  hdferr: - error code
+             Success:  0
+             Failure: -1
+
+

OPTIONAL PARAMETERS

+
  mem_space_id  - memory dataspace identifier
+  file_space_id - file dataspace identifier
+  xfer_prp      - trasfer property list identifier
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+  dims parameter was added to make code portable;
+  n parameter was replaced with dims parameter in
+  the h5dwrite_reference_obj and h5dwrite_reference_dsetreg
+  functions.  April 2, 2001
+
+

NOTES

+
  This function is overloaded to read INTEGER,
+  REAL, DOUBLE PRECISION and CHARACTER buffers
+  up to 7 dimensions, and one dimensional buffers
+  of the TYPE(hobj_ref_t_f) and TYPE(hdset_reg_ref_t_f) types.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Dff_f90.html b/fortran/doc/DevelGuide/src/H5Dff_f90.html new file mode 100644 index 0000000..5444a93 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Dff_f90.html @@ -0,0 +1,506 @@ + + + + + + + +./src/H5Dff.f90 + + + + + +
+
+ +

H5D

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5D
+
+

FILE

+
  fortran/src/H5Dff.f90
+
+

PURPOSE

+
  This file contains Fortran interfaces for H5D functions. It includes
+  all the functions that are independent on whether the Fortran 2003 functions
+  are enabled or disabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5D function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5dclose_f

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dclose_f
+
+

PURPOSE

+
  Closes a dataset.
+
+

INPUTS

+
  dset_id       - dataset identifier
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5dclose_f(dset_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5dcreate_anon_f

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dcreate_anon_f
+
+

PURPOSE

+
  Creates a dataset in a file without linking it into the file structure
+
+

INPUTS

+
  loc_id        - Identifier of the file or group within which to create the dataset.
+  type_id       - Identifier of the datatype to use when creating the dataset.
+  space_id      - Identifier of the dataspace to use when creating the dataset.
+
+

OUTPUTS

+
  dset_id       - dataset identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  dcpl_id       - Dataset creation property list identifier.
+  dapl_id       - Dataset access property list identifier.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 11, 2008
+
+

SOURCE

+
  SUBROUTINE h5dcreate_anon_f(loc_id, type_id, space_id, dset_id, hdferr, dcpl_id, dapl_id)
+    IMPLICIT NONE
+    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) :: space_id ! Dataspace identifier.
+    INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier.
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code.
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dcpl_id  ! Dataset creation property list identifier.
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dapl_id  ! Dataset access property list identifier.
+
+ +
+ +

h5dcreate_f

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dcreate_f
+
+

PURPOSE

+
  Creates a dataset at the specified location
+
+

INPUTS

+
  loc_id        - file or group identifier
+  name          - dataset name
+  type_id       - dataset datatype identifier
+  space_id      - dataset dataspace identifier
+
+

OUTPUTS

+
  dset_id       - dataset identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  creation_prp  - Dataset creation property list
+  lcpl_id       - Link creation property list
+  dapl_id       - Dataset access property list
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  - Explicit Fortran interfaces were added for
+    called C functions (it is needed for Windows
+    port).  February 28, 2001
+
+  - Added version's 1.8 new optional parameters
+    February, 2008
+
+

SOURCE

+
  SUBROUTINE h5dcreate_f(loc_id, name, type_id, space_id, dset_id, &
+       hdferr, dcpl_id, lcpl_id, dapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the dataset
+    INTEGER(HID_T), INTENT(IN) :: type_id  ! Datatype identifier
+    INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+    INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5dget_access_plist_f

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dget_access_plist_f
+
+

PURPOSE

+
  Returns a copy of the dataset creation property list.
+
+

INPUTS

+
  dset_id       - Dataset identifier
+
+

OUTPUTS

+
  plist_id      - Dataset access property list identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  April 13, 2009
+
+

SOURCE

+
SUBROUTINE h5dget_access_plist_f(dset_id, plist_id, hdferr)
+  IMPLICIT NONE
+  INTEGER(HID_T), INTENT(IN)  :: dset_id
+  INTEGER(HID_T), INTENT(OUT) :: plist_id 
+  INTEGER       , INTENT(OUT) :: hdferr  
+
+ +
+ +

h5dget_create_plist_f

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dget_create_plist_f
+
+

PURPOSE

+
  Returns an identifier for a copy of the dataset creation
+  property list for a dataset.
+
+

INPUTS

+
  dataset_id    - dataset identifier
+
+

OUTPUTS

+
  plist_id      - creation property list identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5dget_create_plist_f(dataset_id, plist_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dataset_id   ! Dataset identifier
+    INTEGER(HID_T), INTENT(OUT) :: plist_id    ! Dataset creation
+                                               ! property list identifier
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+
+ +
+ +

h5dget_space_f

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dget_space_f
+
+

PURPOSE

+
  Returns an identifier for a copy of the dataspace for a
+  dataset.
+
+

INPUTS

+
  dataset_id    - dataset identifier
+
+

OUTPUTS

+
  dataspace_id  - dataspace identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5dget_space_f(dataset_id, dataspace_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dataset_id      ! Dataset identifier
+    INTEGER(HID_T), INTENT(OUT) :: dataspace_id   ! Dataspace identifier
+    INTEGER, INTENT(OUT) :: hdferr                ! Error code
+
+ +
+ +

h5dget_space_status_f

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dget_space_status_f
+
+

PURPOSE

+
  Returns the status of data space allocation.
+
+

INPUTS

+
  dset_id       - dataset identifier
+
+

OUTPUTS

+
  flag          - status; may have one of the following values:
+                   H5D_SPACE_STS_ERROR_F
+                   H5D_SPACE_STS_NOT_ALLOCATED_F
+                   H5D_SPACE_STS_PART_ALLOCATED_F
+                   H5D_SPACE_STS_ALLOCATED_F
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  March 12, 2003
+
+

SOURCE

+
  SUBROUTINE h5dget_space_status_f(dset_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dset_id  ! Dataspace identifier
+    INTEGER, INTENT(IN)        :: flag     ! Memory buffer to fill in
+    INTEGER, INTENT(OUT)       :: hdferr   ! Error code
+
+ +
+ +

h5dget_storage_size_f

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dget_storage_size_f
+
+

PURPOSE

+
  Returns the amount of storage requires by a dataset
+
+

INPUTS

+
  dataset_id    - dataset identifier
+
+

OUTPUTS

+
  size          - datastorage size
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  October 15, 2002
+
+

SOURCE

+
  SUBROUTINE h5dget_storage_size_f(dataset_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier
+    INTEGER(HSIZE_T),  INTENT(OUT)  :: size  ! Amount of storage
+                                             ! allocated for dataset
+    INTEGER, INTENT(OUT) :: hdferr           ! Error code
+
+ +
+ +

h5dget_type_f

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dget_type_f
+
+

PURPOSE

+
  Returns an identifier for a copy of the datatype for a
+  dataset.
+
+

INPUTS

+
  dataset_id    - dataset identifier
+
+

OUTPUTS

+
  datatype_id   - dataspace identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

NOTES

+

SOURCE

+
  SUBROUTINE h5dget_type_f(dataset_id, datatype_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dataset_id      ! Dataset identifier
+    INTEGER(HID_T), INTENT(OUT) :: datatype_id    ! Datatype identifier
+    INTEGER, INTENT(OUT) :: hdferr                ! Error code
+
+ +
+ +

h5dopen_f

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dopen_f
+
+

PURPOSE

+
  Opens an existing dataset.
+
+

INPUTS

+
  loc_id        - file or group identifier
+  name          - dataset name
+
+

OUTPUTS

+
  dset_id       - dataset identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  dapl_id       - Dataset access property list
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  -Explicit Fortran interfaces were added for
+   called C functions (it is needed for Windows
+   port).  February 28, 2001
+
+  -Added 1.8 (optional) parameter dapl_id
+   February, 2008, M. Scot Breitenfeld
+
+

SOURCE

+
  SUBROUTINE h5dopen_f(loc_id, name, dset_id, hdferr, dapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the dataset
+    INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dapl_id ! Dataset access property list
+
+ +
+ +

h5dset_extent

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dset_extent (instead of obsolete name: h5dextend_f)
+
+

PURPOSE

+
  Extends a dataset with unlimited dimension.
+
+

INPUTS

+
  dataset_id    - dataset identifier
+  size          - array containing the new magnitude of
+                  each dimension
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+  Changed name from the now obsolete h5dextend_f
+  to h5dset_extent_f. Provided interface to old name
+  for backward compatability. -MSB- March 14, 2008
+
+

SOURCE

+
  SUBROUTINE h5dset_extent_f(dataset_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dataset_id      ! Dataset identifier
+    INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN)  :: size
+    ! Array containing
+    ! dimensions' sizes
+    INTEGER, INTENT(OUT) :: hdferr                ! Error code
+
+ +
+ +

h5dvlen_get_max_len_f

+ +

[ Top ] [ H5D ] [ Subroutines ]

+

NAME

+
  h5dvlen_get_max_len_f
+
+

PURPOSE

+
  Returns maximum length of the VL array elements
+
+

INPUTS

+
  dataset_id    - dataset identifier
+  type_id       - datatype identifier
+  space_id      - dataspace identifier
+
+

OUTPUTS

+
  size          - buffer size
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  NONE
+
+

AUTHOR

+
  Elena Pourmal
+  October 15, 2002
+
+

SOURCE

+
  SUBROUTINE h5dvlen_get_max_len_f(dataset_id, type_id, space_id, len,  hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dataset_id      ! Dataset identifier
+    INTEGER(HID_T), INTENT(IN) :: type_id         ! Datatype identifier
+    INTEGER(HID_T), INTENT(IN) :: space_id        ! Dataspace identifier
+    INTEGER(SIZE_T),  INTENT(OUT)  :: len         ! Maximum length of the element
+    INTEGER, INTENT(OUT) :: hdferr                ! Error code
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Ef_c.html b/fortran/doc/DevelGuide/src/H5Ef_c.html new file mode 100644 index 0000000..79b7914 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Ef_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5Ef.c + + + + + +
+
+ +

H5Ef

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for H5E Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Eff_f90.html b/fortran/doc/DevelGuide/src/H5Eff_f90.html new file mode 100644 index 0000000..7eb95e6 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Eff_f90.html @@ -0,0 +1,197 @@ + + + + + + + +./src/H5Eff.f90 + + + + + +
+
+ +

H5E

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5E
+
+

FILE

+
  fortran/src/H5Eff.f90
+
+

PURPOSE

+
  This Module contains Fortran interfaces for H5E functions.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5E function to the module you must add the function name
+  to the Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5eclear_f

+ +

[ Top ] [ H5E ] [ Subroutines ]

+

NAME

+
  h5eclear_f
+
+

PURPOSE

+
  Clears the error stack for the current thread.
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  estack_id     - Error Stack id
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  April 6, 2001
+
+  Added optional error stack identifier in order to bring
+  the function in line with the h5eclear2 routine.
+  MSB, July 9, 2009
+
+

SOURCE

+
  SUBROUTINE h5eclear_f(hdferr, estack_id)
+    IMPLICIT NONE
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: estack_id
+
+ +
+ +

h5eget_major_f

+ +

[ Top ] [ H5E ] [ Subroutines ]

+

NAME

+
  h5eget_major_f
+
+

PURPOSE

+
  Returns a character string describing an error specified
+  by a major error number.
+
+

INPUTS

+
  error_no      - major error number
+
+

OUTPUTS

+
  name          - character string describing the error
+  namelen       - number of characters in the name buffer
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  April 6, 2001
+
+

SOURCE

+
  SUBROUTINE h5eget_major_f(error_no, name, namelen, hdferr)
+    INTEGER, INTENT(IN) :: error_no        ! Major error number
+    CHARACTER(LEN=*), INTENT(OUT) :: name  ! Character string describing
+                                           ! the error.
+    INTEGER(SIZE_T), INTENT(IN) :: namelen ! Anticipated number of characters
+                                           ! in name.
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5eget_minor_f

+ +

[ Top ] [ H5E ] [ Subroutines ]

+

NAME

+
  h5eget_minor_f
+
+

PURPOSE

+
  Returns a character string describing an error specified
+  by a minor error number.
+
+

INPUTS

+
  error_no      - minor error number
+
+

OUTPUTS

+
  name          - character string describing the error
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  April 6, 2001
+
+

SOURCE

+
  SUBROUTINE h5eget_minor_f(error_no, name, hdferr)
+    INTEGER, INTENT(IN) :: error_no       ! Major error number
+    CHARACTER(LEN=*), INTENT(OUT) :: name ! Character string describing
+                                          ! the error
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5eprint_f

+ +

[ Top ] [ H5E ] [ Subroutines ]

+

NAME

+
  h5eprint_f
+
+

PURPOSE

+
  Prints the error stack in a default manner.
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  name          - name of the file that contains print output
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  April 6, 2001
+
+

SOURCE

+
  SUBROUTINE h5eprint_f(hdferr, name)
+    CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: name ! File name
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5FDmpiof_c.html b/fortran/doc/DevelGuide/src/H5FDmpiof_c.html new file mode 100644 index 0000000..74143d2 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5FDmpiof_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5FDmpiof.c + + + + + +
+
+ +

H5FDmpiof

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for Parallel Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5FDmpioff_f90.html b/fortran/doc/DevelGuide/src/H5FDmpioff_f90.html new file mode 100644 index 0000000..473b5db --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5FDmpioff_f90.html @@ -0,0 +1,253 @@ + + + + + + + +./src/H5FDmpioff.f90 + + + + + +
+
+ +

H5FDMPIO

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5FDMPIO
+
+

PURPOSE

+
  This file contains Fortran interfaces for H5P functions needed by
+  parallel MPI programs.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5P function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5pget_dxpl_mpio_f

+ +

[ Top ] [ H5FDMPIO ] [ Subroutines ]

+

NAME

+
  h5pget_dxpl_mpio_f
+
+

PURPOSE

+
  Returns the data transfer mode.
+
+

INPUTS

+
  prp_id        - data transfer property list identifier
+
+

OUTPUTS

+
  data_xfer_mode- transfer mode; possible values are:
+                     H5FD_MPIO_INDEPENDENT_F
+                     H5FD_MPIO_COLLECTIVE_F
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  November, 2000
+
+

SOURCE

+
  SUBROUTINE h5pget_dxpl_mpio_f(prp_id, data_xfer_mode, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id   ! Property list identifier
+    INTEGER, INTENT(OUT) :: data_xfer_mode ! Data transfer mode. Possible values are:
+                                           ! H5FD_MPIO_INDEPENDENT_F
+                                           ! H5FD_MPIO_COLLECTIVE_F
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5pget_fapl_mpio_f

+ +

[ Top ] [ H5FDMPIO ] [ Subroutines ]

+

NAME

+
  h5pget_fapl_mpio_f
+
+

PURPOSE

+
  Returns MPI communicator information.
+
+

INPUTS

+
  prp_id        - file access property list identifier
+
+

OUTPUTS

+
  comm          - MPI-2 communicator
+  info          - MPI-2 info object
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  November, 2000
+
+

SOURCE

+
  SUBROUTINE h5pget_fapl_mpio_f(prp_id, comm, info, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+    INTEGER, INTENT(OUT) :: comm ! buffer to return communicator
+    INTEGER, INTENT(OUT) :: info ! buffer to return info object
+                                 ! as defined in MPI_FILE_OPEN of MPI-2
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code
+
+ +
+ +

h5pget_fapl_mpiposix_f

+ +

[ Top ] [ H5FDMPIO ] [ Subroutines ]

+

NAME

+
  h5pget_fapl_mpiposix_f
+
+

PURPOSE

+
  Returns MPI communicator information.
+
+

INPUTS

+
  prp_id        - file access property list identifier
+
+

OUTPUTS

+
  comm          - MPI-2 communicator
+  use_gpfs      - flag to use GPFS hints
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  May 6, 2003
+
+

SOURCE

+
  SUBROUTINE h5pget_fapl_mpiposix_f(prp_id, comm, use_gpfs, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+    INTEGER, INTENT(OUT) :: comm         ! Buffer to return communicator
+    LOGICAL, INTENT(OUT) :: use_gpfs
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+
+ +
+ +

h5pset_dxpl_mpio_f

+ +

[ Top ] [ H5FDMPIO ] [ Subroutines ]

+

NAME

+
  h5pset_dxpl_mpio_f
+
+

PURPOSE

+
  Sets data transfer mode.
+
+

INPUTS

+
  prp_id         - data transfer property list identifier
+  data_xfer_mode - transfer mode; possible values are:
+                     H5FD_MPIO_INDEPENDENT_F
+                     H5FD_MPIO_COLLECTIVE_F
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  November, 2000
+
+

SOURCE

+
  SUBROUTINE h5pset_dxpl_mpio_f(prp_id, data_xfer_mode, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier
+    INTEGER, INTENT(IN) :: data_xfer_mode ! Data transfer mode. Possible values are:
+                                          ! H5FD_MPIO_INDEPENDENT_F
+                                          ! H5FD_MPIO_COLLECTIVE_F
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pset_fapl_mpio_f

+ +

[ Top ] [ H5FDMPIO ] [ Subroutines ]

+

NAME

+
  h5pset_fapl_mpio_f
+
+

PURPOSE

+
  Stores MPI IO communicator information to the file
+  access property list.
+
+

INPUTS

+
  prp_id        - file access property list identifier
+  comm          - MPI-2 communicator
+  info          - MPI-2 info object
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  November, 2000
+
+

SOURCE

+
  SUBROUTINE h5pset_fapl_mpio_f(prp_id, comm, info, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+    INTEGER, INTENT(IN) :: comm ! MPI communicator to be used for file open
+                                ! as defined in MPI_FILE_OPEN of MPI-2
+    INTEGER, INTENT(IN) :: info ! MPI info object to be used for file open
+                                ! as defined in MPI_FILE_OPEN of MPI-2
+    INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ +
+ +

h5pset_fapl_mpiposix_f

+ +

[ Top ] [ H5FDMPIO ] [ Subroutines ]

+

NAME

+
  h5pset_fapl_mpiposix_f
+
+

PURPOSE

+
  Stores MPI IO communicator information to the file
+  access property list.
+
+

INPUTS

+
  prp_id        - file access property list identifier
+  comm          - MPI-2 communicator
+  use_gpfs      - logical flag to use the GPFS hints
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  May 6, 2003
+
+

SOURCE

+
  SUBROUTINE h5pset_fapl_mpiposix_f(prp_id, comm, use_gpfs, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+    INTEGER, INTENT(IN) :: comm ! MPI communicator to be used for file open
+                                ! as defined in MPI_FILE_OPEN of MPI-2
+    LOGICAL, INTENT(IN) :: use_gpfs
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Ff_c.html b/fortran/doc/DevelGuide/src/H5Ff_c.html new file mode 100644 index 0000000..c91a62d --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Ff_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5Ff.c + + + + + +
+
+ +

H5Ff

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for H5F Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Fff_f90.html b/fortran/doc/DevelGuide/src/H5Fff_f90.html new file mode 100644 index 0000000..b0164c9 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Fff_f90.html @@ -0,0 +1,653 @@ + + + + + + + +./src/H5Fff.f90 + + + + + +
+
+ +

H5F

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5F
+
+

FILE

+
  H5Fff.f90
+
+

PURPOSE

+
  This file contains Fortran interfaces for H5F functions.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5F function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5fclose_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5fclose_f
+
+

PURPOSE

+
  Closes HDF5 file.
+
+

INPUTS

+
  file_id       - file identifier
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5fclose_f(file_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5fcreate_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5fcreate_f
+
+

PURPOSE

+
  Creates HDF5 files.
+
+

INPUTS

+
  name          - name of the file to create
+  access_flags  - File access flags. Allowable values are:
+                   H5F_ACC_TRUNC_F
+                   H5F_ACC_EXCL_F
+
+

OUTPUTS

+
  file_id       - file identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  creation_prp  - file creation property list identifier
+  access_prp    - file access property list identifier
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5fcreate_f(name, access_flags, file_id, hdferr, &
+       creation_prp, access_prp)
+    IMPLICIT NONE
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the file
+    INTEGER, INTENT(IN) :: access_flags    ! File access flags
+    INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: creation_prp
+                                           ! File creation propertly
+                                           ! list identifier
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp
+                                           ! File access property list
+                                           ! identifier
+
+ +
+ +

h5fflush_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5fflush_f
+
+

PURPOSE

+
  Flushes all buffers associated WITH a file to disk
+
+

INPUTS

+
  object_id     - identifier of object used to identify the file.
+  scope         - specifies the scope of the flushing action.
+                  Possible values are:
+                    H5F_SCOPE_GLOBAL_F
+                    H5F_SCOPE_LOCAL_F
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  creation_prp  - file creation property list identifier
+  access_prp    - file access property list identifier
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5fflush_f(object_id, scope, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: object_id !identifier for any object
+                                            !associate with a file,
+                                            !including the file itself,
+                                            !a dataset, a group, an
+                                            !attribute, or a named
+                                            !data type
+
+    INTEGER, INTENT(IN) :: scope            !scope of the flushing
+                                            !action, possible values
+                                            !are: H5F_SCOPE_GLOBAL_F
+                                            ! which flushes the entire
+                                            !virtual file,
+                                            !and H5F_SCOPE_LOCAL_F
+                                            !which flushes only the
+                                            !specified file.
+
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5fget_access_plist_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5fget_access_plist_f
+
+

PURPOSE

+
  Returns a file access property list identifier.
+
+

INPUTS

+
  file_id       - identifier of a file to creation property list of
+
+

OUTPUTS

+
  access_id     - access property list identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5fget_access_plist_f(file_id, access_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: file_id      ! File identifier
+    INTEGER(HID_T), INTENT(OUT) :: access_id   ! File access property
+                                               ! list identifier
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+
+ +
+ +

h5fget_create_plist_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5fget_create_plist_f
+
+

PURPOSE

+
  Returns a file creation property list identifier.
+
+

INPUTS

+
  file_id       - identifier of a file to creation property list of
+
+

OUTPUTS

+
  prop_id       - creation property list identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5fget_create_plist_f(file_id, prop_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: file_id    ! File identifier
+    INTEGER(HID_T), INTENT(OUT) :: prop_id   ! File creation property
+                                             ! list identifier
+    INTEGER, INTENT(OUT) :: hdferr           ! Error code
+
+ +
+ +

h5fget_filesize_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5fget_filesize_f
+
+

PURPOSE

+
  Retrieves the file size of the HDF5 file.
+
+

INPUTS

+
  file_id       - file identifier
+
+

OUTPUTS

+
  size          - file size
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  July 7, 2004
+
+

SOURCE

+
  SUBROUTINE h5fget_filesize_f(file_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: file_id  ! file identifier
+    INTEGER(HSIZE_T), INTENT(OUT) :: size  ! Size of the file
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code: 0 on success,
+                                           !     -1 if fail
+
+ +
+ +

h5fget_freespace_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5fget_freespace_f
+
+

PURPOSE

+
  Get amount of free space within a file
+
+

INPUTS

+
  file_id       - file identifier
+
+

OUTPUTS

+
  free_space    - amount of free space in file
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Quincey Koziol
+  October 7, 2003
+
+

SOURCE

+
  SUBROUTINE h5fget_freespace_f(file_id, free_space, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
+    INTEGER(HSSIZE_T), INTENT(OUT) :: free_space
+                                          ! amount of free space in file
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5fget_name_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5fget_name_f
+
+

PURPOSE

+
  Gets the name of the file from the object identifier
+
+

INPUTS

+
  obj_id        - object identifier
+
+

OUTPUTS

+
  buf           - buffer to store the read name
+  size          - actual size of the name
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  July 6, 2004
+
+

SOURCE

+
  SUBROUTINE h5fget_name_f(obj_id, buf, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id   ! Object identifier
+    CHARACTER(LEN=*), INTENT(INOUT) :: buf
+                                           ! Buffer to hold file name
+    INTEGER(SIZE_T), INTENT(OUT) :: size   ! Size of the file name
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code: 0 on success,
+                                           !     -1 if fail
+
+ +
+ +

h5fget_obj_count_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5fget_obj_count_f
+
+

PURPOSE

+
  Gets number of the objects open within a file
+
+

INPUTS

+
  file_id       - file identifier
+  obj_type      - type of the object; possible values are:
+                    H5F_OBJ_FILE_F
+                    H5F_OBJ_DATASET_F
+                    H5F_OBJ_GROUP_F
+                    H5F_OBJ_DATATYPE_F
+                    H5F_OBJ_ALL_F
+
+

OUTPUTS

+
  obj_count     - number of open objects
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  September 30, 2002
+
+

HISTORY

+
  Changed the type of obj_count to INTEGER(SIZE_T)
+  September 25, 2008 EIP
+
+

SOURCE

+
  SUBROUTINE h5fget_obj_count_f(file_id, obj_type, obj_count, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
+    INTEGER, INTENT(IN)  :: obj_type      ! Object type
+    INTEGER(SIZE_T), INTENT(OUT) :: obj_count
+                                          ! Number of open objects
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5fget_obj_ids_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5fget_obj_ids_f
+
+

PURPOSE

+
  Get list of open objects identifiers within a file
+
+

INPUTS

+
  file_id       - file identifier
+  obj_type      - type of the object; possible values are:
+                    H5F_OBJ_FILE_F
+                    H5F_OBJ_DATASET_F
+                    H5F_OBJ_GROUP_F
+                    H5F_OBJ_DATATYPE_F
+                    H5F_OBJ_ALL_F
+
+

OUTPUTS

+
  obj_ids       - array of open object identifiers
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  num_objs      - number of open objects
+
+

AUTHOR

+
  Elena Pourmal
+  September 30, 2002
+
+

HISTORY

+
  Added optional parameter num_objs for number of open objects
+  of the specified type and changed type of max_obj to
+  INTEGER(SIZE_T)
+  September 25, 2008 EIP
+
+

SOURCE

+
  SUBROUTINE h5fget_obj_ids_f(file_id, obj_type, max_objs, obj_ids, hdferr, num_objs)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: file_id      ! File identifier
+    INTEGER, INTENT(IN)  :: obj_type           ! Object type
+    INTEGER(SIZE_T), INTENT(IN)  :: max_objs   ! Maximum # of objects to retrieve
+    INTEGER(HID_T), DIMENSION(*), INTENT(INOUT) :: obj_ids
+                                               ! Array of open objects iidentifiers
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+    INTEGER(SIZE_T), INTENT(OUT), OPTIONAL :: num_objs ! number of open objects
+
+ +
+ +

h5fis_hdf5_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5fis_hdf5_f
+
+

PURPOSE

+
  Determines whether a file is in the HDF5 format.
+
+

INPUTS

+
  name          - name of the file to check
+
+

OUTPUTS

+
  status        - indicates if file is and HDF5 file
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5fis_hdf5_f(name, status, hdferr)
+    IMPLICIT NONE
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the file
+    LOGICAL, INTENT(OUT) :: status         ! Indicates if file
+                                           ! is an HDF5 file
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5fmount_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5fmount_f
+
+

PURPOSE

+
  Mounts a file.
+
+

INPUTS

+
  loc_id        - the identifier for of file or group in
+                  which name is defined
+  name          - the name of the group onto which the file
+                  specified by child_id is to be mounted.
+  child_id      - the identifier of the file to be mounted.
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  access_prp    - the identifier of the property list to be used
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5fmount_f(loc_id, name, child_id, hdferr, access_prp)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! Identifier for file or group
+                                           ! in which dsetname is defined
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the group
+    INTEGER(HID_T), INTENT(IN) :: child_id ! File identifier for the
+                                           ! file to be mounted
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp
+                                           ! File access property list
+                                           ! identifier
+
+ +
+ +

h5fopen_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5fopen_f
+
+

PURPOSE

+
  Opens HDF5 file.
+
+

INPUTS

+
  name          - name of the file to acecss
+  access_flags  - File access flags. Allowable values are:
+                   H5F_ACC_RDWR_F
+                   H5F_ACC_RDONLY_F
+
+

OUTPUTS

+
  file_id       - file identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  access_prp    - file access property list identifier
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5fopen_f(name, access_flags, file_id, hdferr, access_prp)
+    IMPLICIT NONE
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the file
+    INTEGER, INTENT(IN) :: access_flags    ! File access flags
+    INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp
+                                           ! File access property list
+                                           ! identifier
+
+ +
+ +

h5freopen_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5freopen_f
+
+

PURPOSE

+
  Reopens HDF5 file.
+
+

INPUTS

+
  file_id       - identifier of a file for which an
+                  additional identifier is required
+
+

OUTPUTS

+
  ret_file_id   - new file identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5freopen_f(file_id, ret_file_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: file_id      ! File identifier
+    INTEGER(HID_T), INTENT(OUT) :: ret_file_id ! New File identifier
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+
+ +
+ +

h5funmount_f

+ +

[ Top ] [ H5F ] [ Subroutines ]

+

NAME

+
  h5funmount_f
+
+

PURPOSE

+
  Unmounts a file.
+
+

INPUTS

+
  loc_id        - the identifier for of file or group in
+                  which name is defined
+  name          - the name of the mount point
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5funmount_f(loc_id, name, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! Identifier for file or group
+                                           ! at which the specified file
+                                           ! is to be unmounted
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the mount point
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Gf_c.html b/fortran/doc/DevelGuide/src/H5Gf_c.html new file mode 100644 index 0000000..a71f0e8 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Gf_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5Gf.c + + + + + +
+
+ +

H5Gf

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for H5G Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Gff_f90.html b/fortran/doc/DevelGuide/src/H5Gff_f90.html new file mode 100644 index 0000000..74ec2f4 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Gff_f90.html @@ -0,0 +1,840 @@ + + + + + + + +./src/H5Gff.f90 + + + + + +
+
+ +

H5G

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5G
+
+

FILE

+
  fortran/src/H5Gff.f90
+
+

PURPOSE

+
  This file contains Fortran interfaces for H5G functions.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5G function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5gclose_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gclose_f
+
+

PURPOSE

+
  Closes the specified group.
+
+

INPUTS

+
  grp_id        - group identifier
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 5, 2001
+
+

SOURCE

+
  SUBROUTINE h5gclose_f(grp_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: grp_id  ! Group identifier
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

H5Gcreate_anon_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  H5Gcreate_anon_f
+
+

PURPOSE

+
  Creates a new empty group without linking it into the file structure.
+
+

INPUTS

+
  loc_id        - Location identifier
+
+

OUTPUTS

+
  grp_id        - group identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  gcpl_id       - Group creation property list identifier
+  gapl_id       - Group access property list identifier
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 15, 2008
+
+

SOURCE

+
  SUBROUTINE h5Gcreate_anon_f(loc_id, grp_id, hdferr, gcpl_id, gapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! File or group identifier
+    INTEGER(HID_T), INTENT(OUT) :: grp_id  ! Group identifier
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gcpl_id  ! Property list for group creation
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id  ! Property list for group access
+
+ +
+ +

h5gcreate_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gcreate_f
+
+

PURPOSE

+
  Creates a new group.
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - group name at the specified location
+
+

OUTPUTS

+
  grp_id        - group identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  size_hint     - a parameter indicating the number of bytes to
+                  reserve for the names that will appear in the group
+  lcpl_id       - Property list for link creation
+  gcpl_id       - Property list for group creation
+  gapl_id       - Property list for group access
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 5, 2001
+
+  Added additional optional paramaters in 1.8
+  MSB - February 27, 2008
+
+

SOURCE

+
  SUBROUTINE h5gcreate_f(loc_id, name, grp_id, hdferr, size_hint, lcpl_id, gcpl_id, gapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the group
+    INTEGER(HID_T), INTENT(OUT) :: grp_id  ! Group identifier
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+    INTEGER(SIZE_T), OPTIONAL, INTENT(IN) :: size_hint
+                                           ! Parameter indicating
+                                           ! the number of bytes
+                                           ! to reserve for the
+                                           ! names that will appear
+                                           ! in the group. Set to OBJECT_NAMELEN_DEFAULT_F
+                                           ! if using any of the optional
+                                           ! parameters lcpl_id, gcpl_id, and/or gapl_id when not
+                                           ! using keywords in specifying the optional parameters
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id  ! Property list for link creation
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gcpl_id  ! Property list for group creation
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id  ! Property list for group access
+
+ +
+ +

h5gget_comment_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gget_comment_f
+
+

PURPOSE

+
  Retrieves comment for specified object.
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - name of the object at specified location
+  size          - size of the buffer required to hold comment
+
+

OUTPUTS

+
  buffer        - buffer to hold object's comment
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 5, 2001
+
+

SOURCE

+
  SUBROUTINE h5gget_comment_f(loc_id, name, size, buffer, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Current name of an object
+    INTEGER(SIZE_T), INTENT(IN) :: size    ! Maximum number of buffer
+    CHARACTER(LEN=size), INTENT(OUT) :: buffer
+                                           ! Buffer to hold a comment
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

H5Gget_create_plist_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  H5Gget_create_plist_f
+
+

PURPOSE

+
  Gets a group creation property list identifier.
+
+

INPUTS

+
  grp_id        - group identifier
+
+

OUTPUTS

+
  gcpl_id       - Group creation property list identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 15, 2008
+
+

SOURCE

+
  SUBROUTINE h5gget_create_plist_f(grp_id, gcpl_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN)  :: grp_id  ! Group identifier
+    INTEGER(HID_T), INTENT(OUT) :: gcpl_id ! Property list for group creation
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5gget_info_by_idx_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gget_info_by_idx_f
+
+

PURPOSE

+
  Retrieves information about a group, according to the group’s position within an index.
+
+

INPUTS

+
  loc_id        - File or group identifier
+  group_name    - Name of group containing group for which information is to be retrieved
+  index_type    - Index type
+  order         - Order of the count in the index
+  n             - Position in the index of the group for which information is retrieved
+
+

OUTPUTS

+
  storage_type  - Type of storage for links in group
+                    H5G_STORAGE_TYPE_COMPACT: Compact storage
+                    H5G_STORAGE_TYPE_DENSE: Indexed storage
+                    H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure
+  nlinks        - Number of links in group
+  max_corder    - Current maximum creation order value for group
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - Link access property list
+  mounted       - Whether group has a file mounted on it
+
+

NOTES

+
  In C the output is defined as a structure: H5G_info_t
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 18, 2008
+
+

HISTORY

+
  Added 'mounted' paramater
+  M. Scot Breitenfeld
+  July 16, 2008
+
+

SOURCE

+
  SUBROUTINE h5gget_info_by_idx_f(loc_id, group_name, index_type, order, n, &
+       storage_type, nlinks, max_corder, hdferr, lapl_id, mounted)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id       ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of group containing group for which information is to be retrieved
+    INTEGER, INTENT(IN) :: index_type ! Index type
+    INTEGER, INTENT(IN) :: order      ! Order of the count in the index
+    INTEGER(HSIZE_T), INTENT(IN) :: n ! Position in the index of the group for which information is retrieved
+
+    INTEGER, INTENT(OUT) :: storage_type ! Type of storage for links in group:
+                                         !   H5G_STORAGE_TYPE_COMPACT_F: Compact storage
+                                         !   H5G_STORAGE_TYPE_DENSE_F: Indexed storage
+                                         !   H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure
+    INTEGER, INTENT(OUT) :: nlinks      ! Number of links in group
+    INTEGER, INTENT(OUT) :: max_corder  ! Current maximum creation order value for group
+    INTEGER, INTENT(OUT) :: hdferr      ! Error code:
+                                        ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+    LOGICAL, INTENT(OUT), OPTIONAL :: mounted       ! Whether group has a file mounted on it
+
+ +
+ +

h5gget_info_by_name_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gget_info_by_name_f
+
+

PURPOSE

+
  Retrieves information about a group.
+
+

INPUTS

+
  loc_id        - File or group identifier
+  group_name    - Name of group containing group for which information is to be retrieved
+
+

OUTPUTS

+
  storage_type  - Type of storage for links in group
+                    H5G_STORAGE_TYPE_COMPACT: Compact storage
+                    H5G_STORAGE_TYPE_DENSE: Indexed storage
+                    H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure
+  nlinks        - Number of links in group
+  max_corder    - Current maximum creation order value for group
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - Link access property list
+  mounted       - Whether group has a file mounted on it
+
+

NOTES

+
  In C the output is defined as a structure: H5G_info_t
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 18, 2008
+
+

HISTORY

+
  Added 'mounted' paramater
+  M. Scot Breitenfeld
+  July 16, 2008
+
+

SOURCE

+
  SUBROUTINE h5gget_info_by_name_f(loc_id, group_name, &
+       storage_type, nlinks, max_corder, hdferr, lapl_id, mounted)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id       ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of group containing group for which information is to be retrieved
+
+    INTEGER, INTENT(OUT) :: storage_type  ! Type of storage for links in group:
+                                          ! H5G_STORAGE_TYPE_COMPACT_F: Compact storage
+                                          ! H5G_STORAGE_TYPE_DENSE_F: Indexed storage
+                                          ! H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure
+    INTEGER, INTENT(OUT) :: nlinks        ! Number of links in group
+    INTEGER, INTENT(OUT) :: max_corder    ! Current maximum creation order value for group
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code:
+                                          !   0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+    LOGICAL, INTENT(OUT), OPTIONAL :: mounted       ! Whether group has a file mounted on it
+
+ +
+ +

h5gget_info_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gget_info_f
+
+

PURPOSE

+
  Retrieves information about a group
+
+

INPUTS

+
  group_id      - Group identifier
+
+

OUTPUTS

+
  storage_type  - Type of storage for links in group
+                    H5G_STORAGE_TYPE_COMPACT: Compact storage
+                    H5G_STORAGE_TYPE_DENSE: Indexed storage
+                    H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure
+  nlinks        - Number of links in group
+  max_corder    - Current maximum creation order value for group
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  mounted       - Whether group has a file mounted on it
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 15, 2008
+
+

NOTES

+
  In C the output is defined as a structure: H5G_info_t
+
+

HISTORY

+
  - Added 'mounted' paramater
+    M. Scot Breitenfeld
+    July 16, 2008
+
+

SOURCE

+
  SUBROUTINE h5gget_info_f(group_id, storage_type, nlinks, max_corder, hdferr, mounted)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: group_id ! Group identifier
+
+    INTEGER, INTENT(OUT) :: storage_type  ! Type of storage for links in group:
+                                          ! H5G_STORAGE_TYPE_COMPACT_F: Compact storage
+                                          ! H5G_STORAGE_TYPE_DENSE_F: Indexed storage
+                                          ! H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure
+    INTEGER, INTENT(OUT) :: nlinks        ! Number of links in group
+    INTEGER, INTENT(OUT) :: max_corder    ! Current maximum creation order value for group
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code:
+                                          ! 0 on success and -1 on failure
+    LOGICAL, INTENT(OUT), OPTIONAL :: mounted  ! Whether group has a file mounted on it
+
+ +
+ +

h5gget_linkval_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gget_linkval_f
+
+

PURPOSE

+
  Returns the name of the object that the symbolic link
+  points to.
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - symbolic link to the object whose name
+                  is to be returned.
+  size          - maximum number of characters to be returned
+
+

OUTPUTS

+
  buffer        - a buffer to hold the name of the object
+  being sought
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 5, 2001
+
+

SOURCE

+
  SUBROUTINE h5gget_linkval_f(loc_id, name, size, buffer, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Current name of an object
+    INTEGER(SIZE_T), INTENT(IN) :: size    ! Maximum number of buffer
+    CHARACTER(LEN=size), INTENT(OUT) :: buffer
+                                           ! Buffer to hold a name of
+                                           ! the object symbolic link
+                                           ! points to
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5gget_obj_info_idx_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gget_obj_info_idx_f
+
+

PURPOSE

+
  Returns name and type of the group member identified by
+  its index.
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - name of the group at the specified location
+  idx           - object index (zero-based)
+
+

OUTPUTS

+
  obj_name      - object name
+  obj_type      - object type
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 5, 2001
+
+

SOURCE

+
  SUBROUTINE h5gget_obj_info_idx_f(loc_id, name, idx, &
+       obj_name, obj_type, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the group
+    INTEGER, INTENT(IN) :: idx             ! Index of member object
+    CHARACTER(LEN=*), INTENT(OUT) :: obj_name   ! Name of the object
+    INTEGER, INTENT(OUT) :: obj_type       ! Object type
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5glink2_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5glink2_f
+
+

PURPOSE

+
  Creates a link of the specified type from new_name
+  to current_name. current_name and new_name are interpreted
+  releative to current and new location identifiers.
+
+

INPUTS

+
  cur_loc_id    - location identifier
+  cur_name      - name of the existing object if link is a
+                  hard link. Can be anything for the soft link.
+  link_type     - link type; possible values are:
+                    H5G_LINK_HARD_F (0)
+                    H5G_LINK_SOFT_F (1)
+  new_loc_id    - new location identifier
+  new_name      - new name for the object
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  September 25, 2002
+
+

SOURCE

+
  SUBROUTINE h5glink2_f(cur_loc_id, cur_name, link_type, new_loc_id, &
+       new_name, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: cur_loc_id ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: cur_name
+                                             ! Current name of an object
+    INTEGER, INTENT(IN) :: link_type         ! link type
+                                                 ! Possible values are:
+                                                 ! H5G_LINK_HARD_F (0) or
+                                                 ! H5G_LINK_SOFT_F (1)
+
+    INTEGER(HID_T), INTENT(IN) :: new_loc_id ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object
+    INTEGER, INTENT(OUT) :: hdferr           ! Error code
+
+ +
+ +

h5glink_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5glink_f
+
+

PURPOSE

+
  Creates a link of the specified type from new_name
+  to current_name.
+
+

INPUTS

+
  loc_id        - location identifier
+  link_type     - link type; possible values are:
+                    H5G_LINK_HARD_F (0)
+                    H5G_LINK_SOFT_F (1)
+  current_name  - name of the existing object if link is a
+                  hard link. Can be anything for the soft link
+  new_name      - new name for the object
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 5, 2001
+
+

SOURCE

+
  SUBROUTINE h5glink_f(loc_id, link_type, current_name, &
+       new_name, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! File or group identifier
+    INTEGER, INTENT(IN) :: link_type       ! link type
+                                                   ! Possible values are:
+                                                   ! H5G_LINK_HARD_F (0) or
+                                                   ! H5G_LINK_SOFT_F (1)
+
+    CHARACTER(LEN=*), INTENT(IN) :: current_name
+                                                   ! Current name of an object
+    CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5gmove2_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gmove2_f
+
+

PURPOSE

+
  Renames an object within an HDF5 file.
+
+

INPUTS

+
  src_loc_id    - original location identifier
+  src_name      - object's name at specified original location
+  dst_loc_id    - original location identifier
+  dst_name      - object's new name
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  September 25, 2002
+
+

SOURCE

+
  SUBROUTINE h5gmove2_f(src_loc_id, src_name, dst_loc_id, dst_name, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN)   :: src_loc_id  ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: src_name    ! Original name of an object
+    INTEGER(HID_T), INTENT(IN)   :: dst_loc_id  ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: dst_name    ! New name of an object
+    INTEGER, INTENT(OUT)         :: hdferr      ! Error code
+
+ +
+ +

h5gmove_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gmove_f
+
+

PURPOSE

+
  Renames an object within an HDF5 file.
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - object's name at specified location
+  new_name      - object's new name
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 5, 2001
+
+

SOURCE

+
  SUBROUTINE h5gmove_f(loc_id, name, new_name, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id     ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name     ! Current name of an object
+    CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object
+    INTEGER, INTENT(OUT) :: hdferr           ! Error code
+
+ +
+ +

h5gn_members_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gn_members_f
+
+

PURPOSE

+
  Returns the number of group members.
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - name of the group at the specified location
+
+

OUTPUTS

+
  nmembers      - number of group members
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 5, 2001
+
+

SOURCE

+
  SUBROUTINE h5gn_members_f(loc_id, name, nmembers, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: loc_id   ! File or group identifier
+            CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the group
+            INTEGER, INTENT(OUT) :: nmembers       ! Number of members in the
+                                                   ! group
+            INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5gopen_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gopen_f
+
+

PURPOSE

+
  Opens an existing group.
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - name of the group to open
+
+

OUTPUTS

+
  grp_id        - group identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  gapl_id       - Group access property list identifier
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 5, 2001
+
+  Added 1.8 (optional) parameter gapl_id
+  February, 2008 M. Scot Breitenfeld
+
+

SOURCE

+
  SUBROUTINE h5gopen_f(loc_id, name, grp_id, hdferr, gapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the group
+    INTEGER(HID_T), INTENT(OUT) :: grp_id  ! File identifier
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id  ! Group access property list identifier
+
+ +
+ +

h5gset_comment_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gset_comment_f
+
+

PURPOSE

+
  Sets comment for specified object.
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - name of the object
+  comment       - comment to set for the object
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 5, 2001
+
+

SOURCE

+
  SUBROUTINE h5gset_comment_f(loc_id, name, comment, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Current name of an object
+    CHARACTER(LEN=*), INTENT(IN) :: comment ! New name of an object
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5gunlink_f

+ +

[ Top ] [ H5G ] [ Subroutines ]

+

NAME

+
  h5gunlink_f
+
+

PURPOSE

+
  Removes the specified name from the group graph and
+  decrements the link count for the object to which name
+  points
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - name of the object to unlink
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 5, 2001
+
+

SOURCE

+
  SUBROUTINE h5gunlink_f(loc_id, name, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of an object
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5If_c.html b/fortran/doc/DevelGuide/src/H5If_c.html new file mode 100644 index 0000000..8dccce7 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5If_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5If.c + + + + + +
+
+ +

H5If

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for H5I Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Iff_f90.html b/fortran/doc/DevelGuide/src/H5Iff_f90.html new file mode 100644 index 0000000..5987581 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Iff_f90.html @@ -0,0 +1,304 @@ + + + + + + + +./src/H5Iff.f90 + + + + + +
+
+ +

H5I

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5I
+
+

FILE

+
  fortran/src/H5Iff.f90
+
+

PURPOSE

+
  This file contains Fortran interfaces for H5I functions.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5I function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5idec_ref_f

+ +

[ Top ] [ H5I ] [ Subroutines ]

+

NAME

+
  h5idec_ref_f
+
+

PURPOSE

+
  Decrements the reference count of an ID
+
+

INPUTS

+
  obj_id        - Object identifier
+
+

OUTPUTS

+
  ref_count     - Current reference count of the ID
+  hdferr:       - Error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Quincey Koziol
+  December  9, 2003
+
+

SOURCE

+
  SUBROUTINE h5idec_ref_f(obj_id, ref_count, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
+    INTEGER, INTENT(OUT) :: ref_count    ! Current reference count of ID
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+
+ +
+ +

h5iget_file_id_f

+ +

[ Top ] [ H5I ] [ Subroutines ]

+

NAME

+
  h5iget_file_id_f
+
+

PURPOSE

+
  Obtains file identifier from the object identifier
+
+

INPUTS

+
  obj_id        - object identifier
+
+

OUTPUTS

+
  file_id       - file identifier
+  hdferr:       - error code
+                    Success:  0
+                    Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 23, 2004
+
+

SOURCE

+
  SUBROUTINE h5iget_file_id_f(obj_id, file_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN)  :: obj_id   ! Object identifier
+    INTEGER(HID_T), INTENT(OUT) :: file_id  ! File identifier
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5iget_name_f

+ +

[ Top ] [ H5I ] [ Subroutines ]

+

NAME

+
  h5iget_name_f
+
+

PURPOSE

+
  Gets a name of an object specified by its idetifier.
+
+

INPUTS

+
  obj_id    - attribute identifier
+  buf_size  - size of a buffer to read name in
+
+

OUTPUTS

+
  buf       - buffer to read name in, name will be truncated if
+              buffer is not big enough
+  name_size - name size
+  hdferr:   - error code
+               Success:  0
+               Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  March 12, 2003
+
+

SOURCE

+
  SUBROUTINE h5iget_name_f(obj_id, buf, buf_size, name_size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id      ! Object identifier
+    INTEGER(SIZE_T), INTENT(IN) :: buf_size   ! Buffer size
+    CHARACTER(LEN=*), INTENT(OUT) :: buf      ! Buffer to hold object name
+    INTEGER(SIZE_T), INTENT(OUT) :: name_size ! Actual name size
+    INTEGER, INTENT(OUT) :: hdferr            ! Error code:
+                                              !   0 if successful,
+                                              !   -1 if fail
+
+ +
+ +

h5iget_ref_f

+ +

[ Top ] [ H5I ] [ Subroutines ]

+

NAME

+
  h5iget_ref_f
+
+

PURPOSE

+
  Retrieves the reference count of an ID
+
+

INPUTS

+
  obj_id        - object identifier
+
+

OUTPUTS

+
  ref_count     - Current reference count of the ID
+  hdferr:         - error code
+  Success:  0
+  Failure: -1
+
+

AUTHOR

+
  Quincey Koziol
+  December  9, 2003
+
+

SOURCE

+
  SUBROUTINE h5iget_ref_f(obj_id, ref_count, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
+    INTEGER, INTENT(OUT) :: ref_count    ! Current reference count of ID
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+
+ +
+ +

h5iget_type_f

+ +

[ Top ] [ H5I ] [ Subroutines ]

+

NAME

+
  h5iget_type_f
+
+

PURPOSE

+
  Retrieves the type of an object.
+
+

INPUTS

+
  obj_id   - object identifier
+
+

OUTPUTS

+
  type     - type of the object, possible values:
+              H5I_FILE_F
+              H5I_GROUP_F
+              H5I_DATATYPE_F
+              H5I_DATASPACE_F
+              H5I_DATASET_F
+              H5I_ATTR_F
+              H5I_BADID_F
+  hdferr:  - error code
+              Success:  0
+              Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 5, 2001
+
+

SOURCE

+
  SUBROUTINE h5iget_type_f(obj_id, TYPE, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id  ! Object identifier
+    INTEGER, INTENT(OUT) :: TYPE ! type of an object.
+                                 ! possible values are:
+                                 !   H5I_FILE_F
+                                 !   H5I_GROUP_F
+                                 !   H5I_DATATYPE_F
+                                 !   H5I_DATASPACE_F
+                                 !   H5I_DATASET_F
+                                 !   H5I_ATTR_F
+                                 !   H5I_BADID_F
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code
+
+ +
+ +

h5iinc_ref_f

+ +

[ Top ] [ H5I ] [ Subroutines ]

+

NAME

+
  h5iinc_ref_f
+
+

PURPOSE

+
  Increments the reference count of an ID
+
+

INPUTS

+
  obj_id        - object identifier
+
+

OUTPUTS

+
  ref_count     - Current reference count of the ID
+  hdferr:              - error code
+  Success:  0
+  Failure: -1
+
+

AUTHOR

+
  Quincey Koziol
+  December  9, 2003
+
+

SOURCE

+
  SUBROUTINE h5iinc_ref_f(obj_id, ref_count, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
+    INTEGER, INTENT(OUT) :: ref_count    ! Current reference count of ID
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+
+ +
+ +

h5iis_valid_f

+ +

[ Top ] [ H5I ] [ Subroutines ]

+

NAME

+
  h5iget_file_id_f
+
+

PURPOSE

+
  Check if an ID is valid without producing an error message
+
+

INPUTS

+
  id           - identifier 
+
+

OUTPUTS

+
  valid        - status of id as a valid identifier
+  hdferr:      - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  April 13, 2009
+
+

SOURCE

+
  SUBROUTINE h5iis_valid_f(id, valid, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN)  :: id ! Identifier 
+    LOGICAL, INTENT(OUT) :: valid     ! Status of id as a valid identifier
+    INTEGER, INTENT(OUT) :: hdferr    ! Error code
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Lf_c.html b/fortran/doc/DevelGuide/src/H5Lf_c.html new file mode 100644 index 0000000..9adb759 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Lf_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5Lf.c + + + + + +
+
+ +

H5Lf

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for H5L Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Lff_F03_f90.html b/fortran/doc/DevelGuide/src/H5Lff_F03_f90.html new file mode 100644 index 0000000..6b9640b --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Lff_F03_f90.html @@ -0,0 +1,181 @@ + + + + + + + +./src/H5Lff_F03.f90 + + + + + +
+
+ +

H5L (F03)

+ +

[ Top ] [ Modules ]

+

NAME

+
  H5L_PROVISIONAL
+
+

FILE

+
  src/fortran/src/H5Lff_F03.f90
+
+

PURPOSE

+
  This file contains Fortran 90 and Fortran 2003 interfaces for H5L functions.
+  It contains the same functions as H5Lff_DEPRECIATE.f90 but includes the
+  Fortran 2003 functions and the interface listings. This file will be compiled
+  instead of H5Lff_DEPRECIATE.f90 if Fortran 2003 functions are enabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5A function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5literate_by_name_f

+ +

[ Top ] [ H5L (F03) ] [ Subroutines ]

+

NAME

+
  h5literate_by_name_f
+
+

PURPOSE

+
  Iterates through links in a group.
+
+

INPUTS

+
  loc_id        - File or group identifier specifying location of subject group
+  group_name    - Name of subject group
+  index_type    - Type of index which determines the order
+  order         - Order within index
+  idx           - Iteration position at which to start
+  op            - Callback function passing data regarding the link to the calling application
+  op_data       - User-defined pointer to data required by the application for its processing of the link
+
+

OUTPUTS

+
  idx      - Position at which an interrupted iteration may be restarted
+  hdferr   - Error code:
+               Success:  0
+               Failure: -1
+
+

OPTIONAL PARAMETERS

+
  lapl_id  - Link access property list
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  Augest 18, 2008
+
+

SOURCE

+
  SUBROUTINE h5literate_by_name_f(loc_id, group_name, index_type, order, idx, op, op_data, return_value, hdferr, lapl_id)
+    USE ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id    ! Identifier specifying subject group
+    CHARACTER(LEN=*) :: group_name          ! Name of subject group
+    INTEGER, INTENT(IN) :: index_type       ! Type of index which determines the order:
+                                                ! H5_INDEX_NAME_F - Alpha-numeric index on name
+                                                ! H5_INDEX_CRT_ORDER_F - Index on creation order
+    INTEGER, INTENT(IN) :: order            ! Order within index:
+                                                ! H5_ITER_INC_F - Increasing order
+                                                ! H5_ITER_DEC_F - Decreasing order
+                                                ! H5_ITER_NATIVE_F - Fastest available order
+    INTEGER(HSIZE_T), INTENT(INOUT) :: idx  ! IN : Iteration position at which to start
+                                            ! OUT: Position at which an interrupted iteration may be restarted
+
+    TYPE(C_FUNPTR):: op      ! Callback function passing data regarding the link to the calling application
+    TYPE(C_PTR)   :: op_data ! User-defined pointer to data required by the application for its processing of the link
+
+    INTEGER, INTENT(OUT) :: return_value ! Success:   The return value of the first operator that
+                                         !            returns non-zero, or zero if all members were
+                                         !            processed with no operator returning non-zero.
+
+                                         ! Failure:   Negative if something goes wrong within the
+                                         !            library, or the negative value returned by one
+                                         !            of the operators.
+
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code:
+                                         ! 0 on success and -1 on failure
+
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+
+ +
+ +

h5literate_f

+ +

[ Top ] [ H5L (F03) ] [ Subroutines ]

+

NAME

+
  h5literate_f
+
+

PURPOSE

+
  Iterates through links in a group.
+
+

INPUTS

+
  group_id      - Identifier specifying subject group
+  index_type    - Type of index which determines the order
+  order         - Order within index
+  idx           - Iteration position at which to start
+  op            - Callback function passing data regarding the link to the calling application
+  op_data       - User-defined pointer to data required by the application for its processing of the link
+
+

OUTPUTS

+
  idx           - Position at which an interrupted iteration may be restarted
+  hdferr        - Error code:
+                    Success:  0
+                    Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  July 8, 2008
+
+

SOURCE

+
  SUBROUTINE h5literate_f(group_id, index_type, order, idx, op, op_data, return_value, hdferr)
+    USE ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: group_id  ! Identifier specifying subject group
+    INTEGER, INTENT(IN) :: index_type       ! Type of index which determines the order:
+                                                ! H5_INDEX_NAME_F - Alpha-numeric index on name
+                                                ! H5_INDEX_CRT_ORDER_F - Index on creation order
+    INTEGER, INTENT(IN) :: order            ! Order within index:
+                                                ! H5_ITER_INC_F - Increasing order
+                                                ! H5_ITER_DEC_F - Decreasing order
+                                                ! H5_ITER_NATIVE_F - Fastest available order
+    INTEGER(HSIZE_T), INTENT(INOUT) :: idx  ! IN : Iteration position at which to start
+                                            ! OUT: Position at which an interrupted iteration may be restarted
+
+    TYPE(C_FUNPTR):: op      ! Callback function passing data regarding the link to the calling application
+    TYPE(C_PTR)   :: op_data ! User-defined pointer to data required by the application for its processing of the link
+
+    INTEGER, INTENT(OUT) :: return_value ! Success:   The return value of the first operator that
+                                         !            returns non-zero, or zero if all members were
+                                         !            processed with no operator returning non-zero.
+
+                                         ! Failure:   Negative if something goes wrong within the
+                                         !            library, or the negative value returned by one
+                                         !            of the operators.
+
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code:
+                                         ! 0 on success and -1 on failure
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Lff_F90_f90.html b/fortran/doc/DevelGuide/src/H5Lff_F90_f90.html new file mode 100644 index 0000000..6d1a9bb --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Lff_F90_f90.html @@ -0,0 +1,50 @@ + + + + + + + +./src/H5Lff_F90.f90 + + + + + +
+
+ +

H5L (F90)

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5L_PROVISIONAL
+
+

PURPOSE

+
  This file contains Fortran 90 interfaces for H5L functions. It contains
+  the same functions as H5Lff_F03.f90 but excludes the Fortran 2003 functions
+  and the interface listings. This file will be compiled instead of H5Lff_F03.f90
+  if Fortran 2003 functions are not enabled.
+
+ NOTE
+  Currently contains no functions.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Lff_f90.html b/fortran/doc/DevelGuide/src/H5Lff_f90.html new file mode 100644 index 0000000..1a209f2 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Lff_f90.html @@ -0,0 +1,637 @@ + + + + + + + +./src/H5Lff.f90 + + + + + +
+
+ +

H5L

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5L
+
+

PURPOSE

+
  This file contains Fortran interfaces for H5L functions. It includes
+  all the functions that are independent on whether the Fortran 2003 functions
+  are enabled or disabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5L function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5lcopy_f

+ +

[ Top ] [ H5L ] [ Subroutines ]

+

NAME

+
  h5lcopy_f
+
+

PURPOSE

+
  Copies a link from one location to another.
+
+

INPUTS

+
  src_loc_id    - Location identifier of the source link
+  src_name      - Name of the link to be copied
+  dest_loc_id   - Location identifier specifying the destination of the copy
+  dest_name     - Name to be assigned to the NEW copy
+  loc_id        - Identifier of the file or group containing the object
+  name          - Name of the link to delete
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lcpl_id       - Link creation property list identifier
+  lapl_id       - Link access property list identifier
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 27, 2008
+
+

SOURCE

+
  SUBROUTINE h5lcopy_f(src_loc_id, src_name, dest_loc_id, dest_name, hdferr, &
+       lcpl_id, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: src_loc_id  ! Location identifier of the source link
+    CHARACTER(LEN=*), INTENT(IN) :: src_name   ! Name of the link to be copied
+    INTEGER(HID_T), INTENT(IN) :: dest_loc_id ! Location identifier specifying the destination of the copy
+    CHARACTER(LEN=*), INTENT(IN) :: dest_name ! Name to be assigned to the NEW copy
+
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code:
+                                          ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier
+
+ +
+ +

H5Lcreate_external_f

+ +

[ Top ] [ H5L ] [ Subroutines ]

+

NAME

+
  H5Lcreate_external_f
+
+

PURPOSE

+
  Creates a soft link to an object in a different file.
+
+

INPUTS

+
  file_name     - Name of the file containing the target object. Neither the file nor the target object is
+  required to exist. May be the file the link is being created in.
+  obj_name      - Path within the target file to the target object.
+  link_loc_id   - The file or group identifier for the new link.
+  link_name     - The name of the new link.
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lcpl_id       - Link creation property list identifier.
+  lapl_id       - Link access property list identifier.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 27, 2008
+
+

SOURCE

+
  SUBROUTINE h5lcreate_external_f(file_name, obj_name, link_loc_id, link_name, hdferr, lcpl_id, lapl_id)
+    IMPLICIT NONE
+    CHARACTER(LEN=*), INTENT(IN) :: file_name ! Name of the file containing the target object. Neither
+                                              ! the file nor the target object is required to exist.
+                                              ! May be the file the link is being created in.
+    CHARACTER(LEN=*), INTENT(IN) :: obj_name  ! Name of the target object, which must already exist.
+    INTEGER(HID_T), INTENT(IN) :: link_loc_id ! The file or group identifier for the new link.
+    CHARACTER(LEN=*), INTENT(IN) :: link_name ! The name of the new link.
+
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code:
+                                          ! 0 on success and -1 on failure
+
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier.
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier.
+
+ +
+ +

H5Lcreate_hard_f

+ +

[ Top ] [ H5L ] [ Subroutines ]

+

NAME

+
  H5Lcreate_hard_f
+
+

PURPOSE

+
  Creates a hard link to an object.
+
+

INPUTS

+
  obj_loc_id    - The file or group identifier for the target object.
+  obj_name      - Name of the target object, which must already exist.
+  link_loc_id   - The file or group identifier for the new link.
+  link_name     - The name of the new link.
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lcpl_id       - Link creation property list identifier.
+  lapl_id       - Link access property list identifier.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 27, 2008
+
+

SOURCE

+
  SUBROUTINE h5lcreate_hard_f(obj_loc_id, obj_name, link_loc_id, link_name, hdferr, lcpl_id, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_loc_id  ! The file or group identifier for the target object.
+    CHARACTER(LEN=*), INTENT(IN) :: obj_name  ! Name of the target object, which must already exist.
+    INTEGER(HID_T), INTENT(IN) :: link_loc_id ! The file or group identifier for the new link.
+    CHARACTER(LEN=*), INTENT(IN) :: link_name ! The name of the new link.
+
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code:
+                                          ! 0 on success and -1 on failure
+
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) ::   lcpl_id         ! Link creation property list identifier.
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) ::   lapl_id         ! Link access property list identifier.
+
+ +
+ +

H5Lcreate_soft_f

+ +

[ Top ] [ H5L ] [ Subroutines ]

+

NAME

+
  H5Lcreate_soft_f
+
+

PURPOSE

+
  Creates a soft link to an object.
+
+

INPUTS

+
  target_path   - Path to the target object, which is not required to exist.
+  link_loc_id   - The file or group identifier for the new link.
+  link_name     - The name of the new link.
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lcpl_id       - Link creation property list identifier.
+  lapl_id       - Link access property list identifier.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 20, 2008
+
+

SOURCE

+
  SUBROUTINE h5lcreate_soft_f(target_path, link_loc_id, link_name, hdferr, lcpl_id, lapl_id)
+    IMPLICIT NONE
+    CHARACTER(LEN=*), INTENT(IN) :: target_path   ! Path to the target object, which is not required to exist.
+    INTEGER(HID_T), INTENT(IN) :: link_loc_id     ! The file or group identifier for the new link.
+    CHARACTER(LEN=*), INTENT(IN) :: link_name     ! The name of the new link.
+    INTEGER, INTENT(OUT) :: hdferr                ! Error code:
+                                                  !   0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier.
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier.
+
+ +
+ +

h5ldelete_by_idx_f

+ +

[ Top ] [ H5L ] [ Subroutines ]

+

NAME

+
  h5ldelete_by_idx_f
+
+

PURPOSE

+
  Removes the nth link in a group.
+
+

INPUTS

+
  loc_id        - File or group identifier specifying location of subject group
+  group_name    - Name of subject group
+  index_field   - Type of index; Possible values are:
+                    H5_INDEX_UNKNOWN_F = -1  - Unknown index type
+                    H5_INDEX_NAME_F          - Index on names
+                    H5_INDEX_CRT_ORDER_F     - Index on creation order
+                    H5_INDEX_N_F             - Number of indices defined
+
+  order         - Order within field or index; Possible values are:
+                    H5_ITER_UNKNOWN_F   - Unknown order
+                    H5_ITER_INC_F       - Increasing order
+                    H5_ITER_DEC_F       - Decreasing order
+                    H5_ITER_NATIVE_F    - No particular order, whatever is fastest
+                    H5_ITER_N_F         - Number of iteration orders
+
+  n             - Link for which to retrieve information
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - Link access property list
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 29, 2008
+
+

SOURCE

+
  SUBROUTINE h5ldelete_by_idx_f(loc_id, group_name, index_field, order, n, hdferr, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id       ! Identifer for object to which attribute is attached
+    CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of object, relative to location,
+                                               !  from which attribute is to be removed
+    INTEGER, INTENT(IN) :: index_field         ! Type of index; Possible values are:
+                                               !    H5_INDEX_UNKNOWN_F   - Unknown index type
+                                               !    H5_INDEX_NAME_F      - Index on names
+                                               !    H5_INDEX_CRT_ORDER_F - Index on creation order
+                                               !    H5_INDEX_N_F              - Number of indices defined
+    INTEGER, INTENT(IN) :: order               ! Order in which to iterate over index; Possible values are:
+                                               !    H5_ITER_UNKNOWN_F  - Unknown order
+                                               !    H5_ITER_INC_F      - Increasing order
+                                               !    H5_ITER_DEC_F      - Decreasing order
+                                               !    H5_ITER_NATIVE_F   - No particular order, whatever is fastest
+                                               !    H5_ITER_N_F     - Number of iteration orders
+    INTEGER(HSIZE_T), INTENT(IN) :: n      ! Offset within index
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code:
+                                           ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id     ! Link access property list
+
+ +
+ +

h5ldelete_f

+ +

[ Top ] [ H5L ] [ Subroutines ]

+

NAME

+
  h5ldelete_f
+
+

PURPOSE

+
  Removes a link from a group.
+
+

INPUTS

+
  loc_id        - Identifier of the file or group containing the object
+  name          - Name of the link to delete
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - Link access property list identifier
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5ldelete_f(loc_id, name, hdferr, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id  ! Identifier of the file or group containing the object
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of the link to delete
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code:
+                                          ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier
+
+ +
+ +

H5Lexists_f

+ +

[ Top ] [ H5L ] [ Subroutines ]

+

NAME

+
  H5Lexists_f
+
+

PURPOSE

+
  Check if a link with a particular name exists in a group.
+
+

INPUTS

+
  loc_id        - Identifier of the file or group to query.
+  name          - Link name to check
+
+

OUTPUTS

+
  link_exists   - link exists status (.TRUE.,.FALSE.)
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - Link access property list identifier.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 29, 2008
+
+

SOURCE

+
  SUBROUTINE h5lexists_f(loc_id, name, link_exists, hdferr, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id  ! Identifier of the file or group to query.
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Link name to check.
+    LOGICAL, INTENT(OUT) :: link_exists   ! .TRUE. if exists, .FALSE. otherwise
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code:
+                                          ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id
+                                          ! Link access property list identifier.
+
+ +
+ +

h5lget_info_by_idx_f

+ +

[ Top ] [ H5L ] [ Subroutines ]

+

NAME

+
  h5lget_info_by_idx_f
+
+

PURPOSE

+
  Retrieves metadata for a link in a group, according to the order within a field or index.
+
+

INPUTS

+
  loc_id        - File or group identifier specifying location of subject group
+  group_name    - Name of subject group
+  index_field   - Index or field which determines the order
+  order         - Order within field or index
+  n             - Link for which to retrieve information
+
+

OUTPUTS

+
            NOTE: In C these are defined as a structure: H5L_info_t
+  corder_valid  - Indicates whether the creation order data is valid for this attribute
+  corder        - Is a positive integer containing the creation order of the attribute
+  cset          - Indicates the character set used for the attribute’s name 
+ address        - If the link is a hard link, address specifies the file address that the link points to
+ val_size       - If the link is a symbolic link, val_size will be the length of the link value, e.g., 
+                  the length of the name of the pointed-to object with a null terminator.
+ hdferr         - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - Link access property list
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 29, 2008
+
+

HISTORY

+
   Changed the link_type names to match those in C (bug 1720) from,
+   H5L_LINK_HARD_F, H5L_LINK_SOFT_F,H5L_LINK_EXTERNAL_F,H5L_LINK_ERROR_F
+   to
+   H5L_TYPE_HARD_F, H5L_TYPE_SOFT_F,H5L_TYPE_EXTERNAL_F,H5L_TYPE_ERROR_F
+   MSB January 8, 2010.  
+
+

SOURCE

+
  SUBROUTINE h5lget_info_by_idx_f(loc_id, group_name, index_field, order, n, &
+       link_type, f_corder_valid, corder, cset, address, val_size, hdferr, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id       ! File or group identifier specifying location of subject group  
+    CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of subject group
+    INTEGER, INTENT(IN) :: index_field  ! Index or field which determines the order
+                                        !    H5_INDEX_UNKNOWN_F   - Unknown index type
+                                        !    H5_INDEX_NAME_F      - Index on names
+                                        !    H5_INDEX_CRT_ORDER_F - Index on creation order
+                                        !    H5_INDEX_N_F             - Number of indices defined
+    INTEGER, INTENT(IN) :: order        ! Order in which to iterate over index; Possible values are:
+                                        !    H5_ITER_UNKNOWN_F  - Unknown order
+                                        !    H5_ITER_INC_F      - Increasing order
+                                        !    H5_ITER_DEC_F      - Decreasing order
+                                        !    H5_ITER_NATIVE_F   - No particular order, whatever is fastest
+    INTEGER(HSIZE_T), INTENT(IN) :: n   ! Attributeâs position in index
+    INTEGER, INTENT(OUT) :: link_type ! Specifies the link class:
+                                      !  H5L_TYPE_HARD_F      - Hard link
+                                      !  H5L_TYPE_SOFT_F      - Soft link
+                                      !  H5L_TYPE_EXTERNAL_F  - External link
+                                      !  H5L_TYPE_ERROR _F    - Error
+    LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the creation order data is valid for this attribute 
+    INTEGER, INTENT(OUT) :: corder         ! Is a positive integer containing the creation order of the attribute
+    INTEGER, INTENT(OUT) :: cset           ! Indicates the character set used for the attributeâs name
+    INTEGER(HADDR_T), INTENT(OUT) :: address  ! If the link is a hard link, address specifies the file address that the link points to
+    INTEGER(SIZE_T), INTENT(OUT) :: val_size  ! If the link is a symbolic link, val_size will be the length of the link value, e.g., 
+                                              ! the length of the name of the pointed-to object with a null terminator. 
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code:
+                                         ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id  ! Link access property list
+
+ +
+ +

h5lget_info_f

+ +

[ Top ] [ H5L ] [ Subroutines ]

+

NAME

+
  h5lget_info_f
+
+

PURPOSE

+
  Returns information about a link.
+
+

INPUTS

+
  link_loc_id   - File or group identifier.
+  link_name     - Name of the link for which information is being sought
+
+

OUTPUTS

+
            NOTE: In C these are contained in the structure H5L_info_t
+
+  cset          - indicates the character set used for link’s name.
+  corder        - specifies the link’s creation order position.
+  corder_valid  - indicates whether the value in corder is valid.
+  link_type     - specifies the link class:
+                    H5L_TYPE_HARD_F     - Hard link
+                    H5L_TYPE_SOFT_F     - Soft link
+                    H5L_TYPE_EXTERNAL_F - External link
+                    H5L_TYPE_ERROR_ F   - Error
+  address       - If the link is a hard link, address specifies the file address that the link points to
+  val_size      - If the link is a symbolic link, val_size will be the length of the link value, e.g., 
+                  the length of the name of the pointed-to object with a null terminator. 
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - Link access property list
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 29, 2008
+
+

HISTORY

+
   Changed the link_type names to match those in C (bug 1720) from,
+   H5L_LINK_HARD_F, H5L_LINK_SOFT_F,H5L_LINK_EXTERNAL_F,H5L_LINK_ERROR_F
+   to
+   H5L_TYPE_HARD_F, H5L_TYPE_SOFT_F,H5L_TYPE_EXTERNAL_F,H5L_TYPE_ERROR_F
+   MSB January 8, 2010.
+
+

SOURCE

+
  SUBROUTINE h5lget_info_f(link_loc_id, link_name, &
+       cset, corder, f_corder_valid, link_type, address, val_size, &
+       hdferr, lapl_id)
+    IMPLICIT NONE
+
+    INTEGER(HID_T), INTENT(IN) :: link_loc_id ! File or group identifier.
+    CHARACTER(LEN=*), INTENT(IN) :: link_name ! Name of the link for which information is being sought
+
+! OUTPUTS  NOTE: In C these are contained in the structure H5L_info_t
+    INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the linkâs name.
+    INTEGER, INTENT(OUT) :: corder ! Specifies the linkâs creation order position.
+    LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the value in corder is valid.
+    INTEGER, INTENT(OUT) :: link_type ! Specifies the link class:
+                                      !  H5L_TYPE_HARD_F      - Hard link
+                                      !  H5L_TYPE_SOFT_F      - Soft link
+                                      !  H5L_TYPE_EXTERNAL_F  - External link
+                                      !  H5L_TYPE_ERROR _F    - Error
+    INTEGER(HADDR_T), INTENT(OUT) :: address ! If the link is a hard link, address specifies the file address that the link points to
+    INTEGER(SIZE_T), INTENT(OUT) :: val_size ! If the link is a symbolic link, val_size will be the length of the link value, e.g., 
+                                             ! the length of the name of the pointed-to object with a null terminator. 
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code:
+                                         ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id  ! Link access property list
+
+ +
+ +

h5lget_name_by_idx_f

+ +

[ Top ] [ H5L ] [ Subroutines ]

+

NAME

+
  h5lget_name_by_idx_f
+
+

PURPOSE

+
  Retrieves name of the nth link in a group, according to the order within a specified field or index.
+
+

INPUTS

+
  loc_id        - File or group identifier specifying location of subject group
+  group_name    - Name of subject group
+  index_field   - Index or field which determines the order
+  order         - Order within field or index
+  n             - Link for which to retrieve information
+
+

OUTPUTS

+
  name          - Buffer in which link value is returned
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - List access property list identifier.
+  size          - Maximum number of characters of link value to be returned.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 10, 2008
+
+

SOURCE

+
  SUBROUTINE h5lget_name_by_idx_f(loc_id, group_name, index_field, order, n, &
+        name, hdferr, size, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id       ! File or group identifier specifying location of subject group
+    CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of subject group
+    INTEGER, INTENT(IN) :: index_field  ! Index or field which determines the order
+                                        !    H5_INDEX_UNKNOWN_F   - Unknown index type
+                                        !    H5_INDEX_NAME_F      - Index on names
+                                        !    H5_INDEX_CRT_ORDER_F - Index on creation order
+                                        !    H5_INDEX_N_F             - Number of indices defined
+    INTEGER, INTENT(IN) :: order        ! Order in which to iterate over index; Possible values are:
+                                        !    H5_ITER_UNKNOWN_F  - Unknown order
+                                        !    H5_ITER_INC_F      - Increasing order
+                                        !    H5_ITER_DEC_F      - Decreasing order
+                                        !    H5_ITER_NATIVE_F   - No particular order, whatever is fastest
+    INTEGER(HSIZE_T), INTENT(IN) :: n   ! Attributeâs position in index
+    CHARACTER(LEN=*), INTENT(OUT) :: name ! Buffer in which link value is returned
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code:
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

h5lis_registered_f

+ +

[ Top ] [ H5L ] [ Subroutines ]

+

NAME

+
  h5lis_registered_f
+
+

PURPOSE

+
  Determines whether a class of user-defined links is registered.
+
+

INPUTS

+
  link_cls_id   - User-defined link class identifier
+
+

OUTPUTS

+
  registered    - .TRUE.  - if the link class has been registered
+                  .FALSE. - if it is unregistered
+  hdferr        - Error code
+  Success:  0
+  Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 29, 2008
+
+

SOURCE

+
  SUBROUTINE h5lis_registered_f(link_cls_id, registered, hdferr)
+    IMPLICIT NONE
+    INTEGER, INTENT(IN) :: link_cls_id  ! User-defined link class identifier
+    LOGICAL, INTENT(OUT) :: registered  ! .TRUE. - if the link class has been registered and
+                                        ! .FALSE. - if it is unregistered
+    INTEGER, INTENT(OUT) :: hdferr      ! Error code:
+                                        ! 0 on success and -1 on failure
+
+ +
+ +

h5lmove_f

+ +

[ Top ] [ H5L ] [ Subroutines ]

+

NAME

+
  h5lmove_f
+
+

PURPOSE

+
  Renames a link within an HDF5 file.
+
+

INPUTS

+
  src_loc_id    - Original file or group identifier.
+  src_name      - Original link name.
+  dest_loc_id   - Destination file or group identifier.
+  dest_name     - NEW link name.
+
+

OUTPUTS

+
  hdferr        - Error code:
+                   0 on success and -1 on failure
+
+

OPTIONAL PARAMETERS

+
  lcpl_id       - Link creation property list identifier to be associated WITH the NEW link.
+  lapl_id       - Link access property list identifier to be associated WITH the NEW link.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 3, 2008
+
+

SOURCE

+
  SUBROUTINE h5lmove_f(src_loc_id, src_name, dest_loc_id, dest_name, hdferr, lcpl_id, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: src_loc_id  ! Original file or group identifier.
+    CHARACTER(LEN=*), INTENT(IN) :: src_name  ! Original link name.
+    INTEGER(HID_T), INTENT(IN) :: dest_loc_id ! Destination file or group identifier.
+    CHARACTER(LEN=*), INTENT(IN) :: dest_name ! NEW link name.
+    INTEGER, INTENT(OUT) :: hdferr     ! Error code:
+                                              ! 0 on success and -1 on failure
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier
+                                                    ! to be associated WITH the NEW link.
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier
+                                                    ! to be associated WITH the NEW link.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Of_c.html b/fortran/doc/DevelGuide/src/H5Of_c.html new file mode 100644 index 0000000..e4a97e9 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Of_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5Of.c + + + + + +
+
+ +

H5Of

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for H5O Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Off_f90.html b/fortran/doc/DevelGuide/src/H5Off_f90.html new file mode 100644 index 0000000..790810e --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Off_f90.html @@ -0,0 +1,198 @@ + + + + + + + +./src/H5Off.f90 + + + + + +
+
+ +

H5O

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5O
+
+

FILE

+
  fortran/src/H5Off.f90
+
+

PURPOSE

+
  This file contains Fortran interfaces for H5O functions. It includes
+  all the functions that are independent on whether the Fortran 2003 functions
+  are enabled or disabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5O function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5oclose_f

+ +

[ Top ] [ H5O ] [ Subroutines ]

+

NAME

+
  h5oclose_f
+
+

PURPOSE

+
  Closes an object in an HDF5 file.
+
+

INPUTS

+
  object_id     - Object identifier
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  December 17, 2008
+
+

SOURCE

+
  SUBROUTINE h5oclose_f(object_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN)  :: object_id
+    INTEGER,        INTENT(OUT) :: hdferr
+
+ +
+ +

h5olink_f

+ +

[ Top ] [ H5O ] [ Subroutines ]

+

NAME

+
  h5olink_f
+
+

PURPOSE

+
  Creates a hard link to an object in an HDF5 file.
+
+

INPUTS

+
  object_id     - Object to be linked.
+  new_loc_id    - File or group identifier specifying location at which object is to be linked.
+  new_link_name - Name of link to be created, relative to new_loc_id.
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

OPTIONAL PARAMETERS

+
  lcpl_id       - Link creation property list identifier.
+  lapl_id       - Link access property list identifier.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  April 21, 2008
+
+

SOURCE

+
  SUBROUTINE h5olink_f(object_id, new_loc_id, new_link_name, hdferr, lcpl_id, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: object_id  ! Object to be linked
+    INTEGER(HID_T), INTENT(IN) :: new_loc_id ! File or group identifier specifying
+                                             ! location at which object is to be linked.
+    CHARACTER(LEN=*), INTENT(IN) :: new_link_name ! Name of link to be created, relative to new_loc_id.
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          !   Success:  0
+                                          !   Failure: -1
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier.
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link creation property list identifier.
+
+ +
+ +

h5oopen_f

+ +

[ Top ] [ H5O ] [ Subroutines ]

+

NAME

+
  h5oopen_f
+
+

PURPOSE

+
  Opens an object in an HDF5 file by location identifier and path name.
+
+

INPUTS

+
  loc_id        - File or group identifier
+  name          - Path to the object, relative to loc_id.
+
+

OUTPUTS

+
  obj_id        - Object identifier for the opened object
+  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

OPTIONAL PARAMETERS

+
  lapl_id       - Access property list identifier for the link pointing to the object
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  April 18, 2008
+
+

SOURCE

+
  SUBROUTINE h5oopen_f(loc_id, name, obj_id, hdferr, lapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id  ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Path to the object, relative to loc_id
+    INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier for the opened object
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          !   Success:  0
+                                          !   Failure: -1
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id  ! Attribute access property list
+
+ +
+ +

h5open_by_addr_f

+ +

[ Top ] [ H5O ] [ Subroutines ]

+

NAME

+
  h5oopen_by_addr_f 
+
+

PURPOSE

+
  Opens an object using its address within an HDF5 file. 
+
+

INPUTS

+
    loc_id - File or group identifier
+    addr   - Object’s address in the file
+ OUTPUTS: 
+    obj_id - Object identifier for the opened object
+    hdferr - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  September 14, 2009
+
+

SOURCE

+
  SUBROUTINE h5oopen_by_addr_f(loc_id, addr, obj_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id  ! File or group identifier
+    INTEGER(HADDR_T), INTENT(IN) :: addr  ! Objectâs address in the file
+    INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier for the opened object
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code:
+                                          ! 0 on success and -1 on failure
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Pf_c.html b/fortran/doc/DevelGuide/src/H5Pf_c.html new file mode 100644 index 0000000..6b8079a --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Pf_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5Pf.c + + + + + +
+
+ +

H5Pf

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for H5P Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Pff_F03_f90.html b/fortran/doc/DevelGuide/src/H5Pff_F03_f90.html new file mode 100644 index 0000000..51882ba --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Pff_F03_f90.html @@ -0,0 +1,832 @@ + + + + + + + +./src/H5Pff_F03.f90 + + + + + +
+
+ +

H5P (F03)

+ +

[ Top ] [ Modules ]

+

NAME

+
  H5P_PROVISIONAL
+
+

PURPOSE

+
  This file contains Fortran 90 and Fortran 2003 interfaces for H5P functions.
+  It contains the same functions as H5Pff_DEPRECIATE.f90 but includes the
+  Fortran 2003 functions and the interface listings. This file will be compiled
+  instead of H5Pff_DEPRECIATE.f90 if Fortran 2003 functions are enabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5P function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5pget_double

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pget_double
+
+

PURPOSE

+
  Gets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+
+

OUTPUTS

+
  value         - value of property
+  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pget_double(prp_id, name, value, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to modify
+    DOUBLE PRECISION,   INTENT(OUT), TARGET :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pcreate_class_f

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pcreate_class_f
+
+

PURPOSE

+
  Create a new property list class
+
+

INPUTS

+
  parent        - Property list identifier of the parent class
+                  Possible values include:
+                   H5P_ROOT_F
+                   H5P_FILE_CREATE_F
+                   H5P_FILE_ACCESS_F
+                   H5P_DATASET_CREATE_F
+                   H5P_DATASET_XFER_F
+                   H5P_FILE_MOUNT_F
+  name          - name of the class we are creating
+
+

OUTPUTS

+
  class         - porperty list class identifier
+  hdferr:       - error code
+
+  Success: 0
+  Failure: -1
+
+

OPTIONAL PARAMETERS

+
  H5P_cls_create_func_t (create) - Callback routine called when a property list is created
+  create_data                    - User pointer to any class creation information needed
+  H5P_cls_copy_func_t   (copy)   - Callback routine called when a property list is copied
+  copy_data                      - User pointer to any class copy information needed
+  H5P_cls_close_func_t  (close)  - Callback routine called when a property list is being closed
+  close_data                     - User pointer to any class close information needed
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

HISTORY

+
  Added callback arguments
+  M. Scot Breitenfeld, July 3, 2008
+
+

SOURCE

+
  SUBROUTINE h5pcreate_class_f(parent, name, class, hdferr, create, create_data, copy, copy_data, close, close_data)
+    USE iso_c_binding
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: parent  ! parent property list class identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! name of property tocreate
+    INTEGER(HID_T), INTENT(OUT) :: class  ! property list class identifier
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+    TYPE(C_PTR), OPTIONAL :: create_data, copy_data, close_data
+    TYPE(C_FUNPTR), OPTIONAL :: create, copy, close
+
+ +
+ +

h5pget_char

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pget_char
+
+

PURPOSE

+
  Gets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+
+

OUTPUTS

+
  value         - value of property
+  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pget_char(prp_id, name, value, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id   ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of property to modify
+    CHARACTER(LEN=*), INTENT(OUT) :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5pget_integer

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pget_integer
+
+

PURPOSE

+
  Gets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+
+

OUTPUTS

+
  value         - value of property
+  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pget_integer(prp_id, name, value, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id    ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name    ! Name of property to modify
+    INTEGER,   INTENT(OUT), TARGET :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5pget_real

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pget_real
+
+

PURPOSE

+
  Gets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+
+

OUTPUTS

+
  value         - value of property
+  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pget_real(prp_id, name, value, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify
+    REAL,   INTENT(OUT), TARGET :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+
+ +
+ +

h5pinsert_char

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pinsert_char
+
+

PURPOSE

+
  Registers a temporary property with a property list class.
+
+

INPUTS

+
  plist         - property list identifier
+                  permanent property within
+  name          - name of property to insert
+  size          - size of property in bytes
+  value         - initial value for the property
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pinsert_char(plist, name, size, value, hdferr)
+    USE iso_c_binding
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist      ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name     ! Name of property to insert
+    INTEGER(SIZE_T), INTENT(IN) :: size      ! Size of property value
+    CHARACTER(LEN=*),   INTENT(IN) :: value  ! Property value
+    INTEGER, INTENT(OUT) :: hdferr           ! Error code
+
+ +
+ +

h5pinsert_double

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pinsert_double
+
+

PURPOSE

+
  Registers a temporary property with a property list class.
+
+

INPUTS

+
  plist         - property list identifier
+                  permanent property within
+  name          - name of property to insert
+  size          - size of property in bytes
+  value         - initial value for the property
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

OPTIONAL PARAMETERS

+
  NONE
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pinsert_double(plist, name, size, value, hdferr)
+    USE iso_c_binding
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist   ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to insert
+    INTEGER(SIZE_T), INTENT(IN) :: size   ! Size of the property value
+    DOUBLE PRECISION, INTENT(IN), TARGET :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pinsert_integer

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pinsert_integer
+
+

PURPOSE

+
  Registers a temporary property with a property list class.
+
+

INPUTS

+
  plist         - property list identifier
+  name          - name of property to insert
+  size          - size of property in bytes
+  value         - initial value for the property
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pinsert_integer(plist, name, size, value, hdferr)
+    USE iso_c_binding
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist    ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of property to insert
+    INTEGER(SIZE_T), INTENT(IN) :: size    ! Size of the property value
+    INTEGER,   INTENT(IN), TARGET :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5pinsert_ptr

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pinsert_ptr
+
+

PURPOSE

+
  Registers a temporary property with a property list class.
+
+

INPUTS

+
  plist         - property list identifier
+                  permanent property within
+  name          - name of property to insert
+  size          - size of property in bytes
+  value         - initial value for the property
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  June 24, 2008
+
+

SOURCE

+
  SUBROUTINE h5pinsert_ptr(plist, name, size, value, hdferr)
+    USE iso_c_binding
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist  ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert
+    INTEGER(SIZE_T), INTENT(IN) :: size  ! Size of property value
+    TYPE(c_ptr),   INTENT(IN) :: value   ! Property value
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+
+ +
+ +

h5pinsert_real

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pinsert_real
+
+

PURPOSE

+
  Registers a temporary property with a property list class.
+
+

INPUTS

+
  plist         - property list identifier
+                  permanent property within
+  name          - name of property to insert
+  size          - size of property in bytes
+  value         - initial value for the property
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pinsert_real(plist, name, size, value, hdferr)
+    USE iso_c_binding
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist   ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to insert
+    INTEGER(SIZE_T), INTENT(IN) :: size   ! Size of the property value
+    REAL,   INTENT(IN), TARGET :: value   ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pregister_char

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pregister_char
+
+

PURPOSE

+
  Registers a permanent property with a property list class.
+
+

INPUTS

+
  class         - property list class to register
+                  permanent property within
+  name          - name of property to register
+  size          - size of property in bytes
+  value         - default value for property in newly
+                  created property lists
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pregister_char(class, name, size, value, hdferr)
+    USE ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: class     ! Property list class identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name    ! Name of property to register
+    INTEGER(SIZE_T), INTENT(IN) :: size     ! size of the property value
+    CHARACTER(LEN=*),   INTENT(IN) :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5pregister_double

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pregister_double
+
+

PURPOSE

+
  Registers a permanent property with a property list class.
+
+

INPUTS

+
  class         - property list class to register
+                  permanent property within
+  name          - name of property to register
+  size          - size of property in bytes
+  value         - default value for property in newly
+                  created property lists
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pregister_double(class, name, size, value, hdferr)
+    USE ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: class  ! Property list class identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register
+    INTEGER(SIZE_T), INTENT(IN) :: size  ! size of the property value
+    DOUBLE PRECISION,   INTENT(IN), TARGET :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+
+ +
+ +

h5pregister_integer

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pregister_integer
+
+

PURPOSE

+
  Registers a permanent property with a property list class.
+
+

INPUTS

+
  class         - property list class to register
+                  permanent property within
+  name          - name of property to register
+  size          - size of property in bytes
+  value         - default value for property in newly
+                  created property lists
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pregister_integer(class, name, size, value, hdferr)
+    USE ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: class    ! Property list class identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of property to register
+    INTEGER(SIZE_T), INTENT(IN) :: size    ! Size of the property value
+    INTEGER,   INTENT(IN), TARGET :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5pregister_ptr

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pregister_ptr
+
+

PURPOSE

+
  Registers a permanent property with a property list class.
+
+

INPUTS

+
  class         - property list class to register
+                  permanent property within
+  name          - name of property to register
+  size          - size of property in bytes
+  value         - default value for property in newly
+                  created property lists
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  June 24, 2008
+
+

SOURCE

+
  SUBROUTINE h5pregister_ptr(class, name, size, value, hdferr)
+    USE ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: class   ! Property list class identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to register
+    INTEGER(SIZE_T), INTENT(IN) :: size   ! Size of the property value
+    TYPE(C_PTR), INTENT(IN) :: value      ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pregister_real

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pregister_real
+
+

PURPOSE

+
  Registers a permanent property with a property list class.
+
+

INPUTS

+
  class         - property list class to register
+                  permanent property within
+  name          - name of property to register
+  size          - size of property in bytes
+  value         - default value for property in newly
+                  created property lists
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pregister_real(class, name, size, value, hdferr)
+    USE ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: class   ! Property list class identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to register
+    INTEGER(SIZE_T), INTENT(IN) :: size   ! size of the property value
+    REAL,   INTENT(IN), TARGET :: value   ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pset(get)fill_value_f

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pset(get)fill_value_f
+
+

PURPOSE

+
  Sets(gets) fill value for a dataset creation property list
+
+

INPUTS

+
  prp_id        - dataset creation property list identifier
+  type_id       - datatype identifier for fill value
+  fillvalue     - fill value
+
+

OUTPUTS

+
  type_id       - datatype identifier for fill value
+  fillvalue     - fill value
+  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 14, 2001
+
+  Added the recommended way of passing fillvalue
+  and that is by passing the C address, all other
+  ways are obsolete and should be avoided. June, 2008 MSB
+
+

NOTES

+
  h5pset(get)fill_value_f function is overloaded to support
+  INTEGER, REAL, DOUBLE PRECISION and CHARACTER dtatypes.
+
+

SOURCE

+
  SUBROUTINE h5pset_fill_value_integer(prp_id, type_id, fillvalue, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier
+    INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of
+                                          ! of fillvalue datatype
+                                          ! (in memory)
+    INTEGER, INTENT(IN), TARGET :: fillvalue   ! Fillvalue
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code
+
+ +
+ +

h5pset_char

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pset_char
+
+

PURPOSE

+
  Sets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+  value         - value to set property to
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

OPTIONAL PARAMETERS

+
  NONE
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pset_char(prp_id, name, value, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id    ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name    ! Name of property to modify
+    CHARACTER(LEN=*),   INTENT(IN) :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5pset_double

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pset_double
+
+

PURPOSE

+
  Sets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+  value         - value to set property to
+
+

OUTPUTS

+
  hdferr:       - error code
+                    Success:  0
+                    Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pset_double(prp_id, name, value, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to modify
+    DOUBLE PRECISION,   INTENT(IN), TARGET :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr                  ! Error code
+
+ +
+ +

h5pset_integer

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pset_integer
+
+

PURPOSE

+
  Sets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+  value         - value to set property to
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pset_integer(prp_id, name, value, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id   ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of property to modify
+    INTEGER,   INTENT(IN), TARGET :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5pset_real

+ +

[ Top ] [ H5P (F03) ] [ Subroutines ]

+

NAME

+
  h5pset_real
+
+

PURPOSE

+
  Sets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+  value         - value to set property to
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                    Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pset_real(prp_id, name, value, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify
+    REAL,   INTENT(IN), TARGET :: value  ! Property value
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Pff_F90_f90.html b/fortran/doc/DevelGuide/src/H5Pff_F90_f90.html new file mode 100644 index 0000000..5f8d579 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Pff_F90_f90.html @@ -0,0 +1,715 @@ + + + + + + + +./src/H5Pff_F90.f90 + + + + + +
+
+ +

H5P (_F90)

+ +

[ Top ] [ Modules ]

+

NAME

+
  H5P_PROVISIONAL
+
+

PURPOSE

+
  This file contains Fortran 90 interfaces for H5P functions. It contains
+  the same functions as H5Pff_F03.f90 but excludes the Fortran 2003 functions
+  and the interface listings. This file will be compiled instead of H5Pff_F03.f90
+  if Fortran 2003 functions are not enabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5P function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5pcreate_class_f

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pcreate_class_f
+
+

PURPOSE

+
  Create a new property list class
+
+

INPUTS

+
  parent        - Property list identifier of the parent class
+                  Possible values include:
+                    H5P_ROOT_F
+                    H5P_FILE_CREATE_F
+                    H5P_FILE_ACCESS_F
+                    H5P_DATASET_CREATE_F
+                    H5P_DATASET_XFER_F
+                    H5P_FILE_MOUNT_F
+  name          - name of the class we are creating
+
+

OUTPUTS

+
  class         - property list class identifier
+  hdferr        - error code
+                   Success: 0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pcreate_class_f(parent, name, class, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: parent  ! parent property list class
+                                          ! identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! name of property tocreate
+    INTEGER(HID_T), INTENT(OUT) :: class  ! property list class identifier
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pget_char

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pget_char
+
+

PURPOSE

+
  Gets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+
+

OUTPUTS

+
  value         - value of property
+  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pget_char(prp_id, name, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id     ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name     ! Name of property to modify
+    CHARACTER(LEN=*),   INTENT(OUT) :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr           ! Error code
+
+ +
+ +

h5pget_double

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pget_double
+
+

PURPOSE

+
  Gets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+
+

OUTPUTS

+
  value         - value of property
+  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pget_double(prp_id, name, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id     ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name     ! Name of property to modify
+    DOUBLE PRECISION,   INTENT(OUT) :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr           ! Error code
+
+ +
+ +

h5pget_integer

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pget_integer
+
+

PURPOSE

+
  Gets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+
+

OUTPUTS

+
  value         - value of property
+  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pget_integer(prp_id, name, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to modify
+    INTEGER,   INTENT(OUT) :: value       ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pget_real

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pget_real
+
+

PURPOSE

+
  Gets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+
+

OUTPUTS

+
  value         - value of property
+  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pget_real(prp_id, name, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to modify
+    REAL,   INTENT(OUT) :: value          ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pinsert_char

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pinsert_char
+
+

PURPOSE

+
  Registers a temporary property with a property list class.
+
+

INPUTS

+
  plist         - property list identifier
+                  permanent property within
+  name          - name of property to insert
+  size          - size of property in bytes
+  value         - initial value for the property
+
+

OUTPUTS

+
  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
SUBROUTINE h5pinsert_char(plist, name, size, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist      ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name     ! Name of property to insert
+    INTEGER(SIZE_T), INTENT(IN) :: size      ! Size of property value
+    CHARACTER(LEN=*),   INTENT(IN) :: value  ! Property value
+    INTEGER, INTENT(OUT) :: hdferr           ! Error code
+
+ +
+ +

h5pinsert_double

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pinsert_double
+
+

PURPOSE

+
  Registers a temporary property with a property list class.
+
+

INPUTS

+
  plist         - property list identifier
+                  permanent property within
+  name          - name of property to insert
+  size          - size of property in bytes
+  value         - initial value for the property
+
+

OUTPUTS

+
  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pinsert_double(plist, name, size, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist   ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to insert
+    INTEGER(SIZE_T), INTENT(IN) :: size   ! Size of the property value
+    DOUBLE PRECISION, INTENT(IN) :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pinsert_integer

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pinsert_integer
+
+

PURPOSE

+
  Registers a temporary property with a property list class.
+
+

INPUTS

+
  plist         - property list identifier
+  name          - name of property to insert
+  size          - size of property in bytes
+  value         - initial value for the property
+
+

OUTPUTS

+
  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pinsert_integer(plist, name, size, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist   ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to insert
+    INTEGER(SIZE_T), INTENT(IN) :: size   ! Size of the property value
+    INTEGER,   INTENT(IN) :: value        ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pinsert_real

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pinsert_real
+
+

PURPOSE

+
  Registers a temporary property with a property list class.
+
+

INPUTS

+
  plist         - property list identifier
+                  permanent property within
+  name          - name of property to insert
+  size          - size of property in bytes
+  value         - initial value for the property
+
+

OUTPUTS

+
  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pinsert_real(plist, name, size, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist   ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to insert
+    INTEGER(SIZE_T), INTENT(IN) :: size   ! Size of the property value
+    REAL,   INTENT(IN) :: value           ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pregister_char

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pregister_char
+
+

PURPOSE

+
  Registers a permanent property with a property list class.
+
+

INPUTS

+
  class         - property list class to register
+                  permanent property within
+  name          - name of property to register
+  size          - size of property in bytes
+  value         - default value for property in newly
+                  created property lists
+
+

OUTPUTS

+
  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pregister_char(class, name, size, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: class     ! Property list class identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name    ! Name of property to register
+    INTEGER(SIZE_T), INTENT(IN) :: size     ! size of the property value
+    CHARACTER(LEN=*),   INTENT(IN) :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5pregister_double

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pregister_double
+
+

PURPOSE

+
  Registers a permanent property with a property list class.
+
+

INPUTS

+
  class         - property list class to register
+                  permanent property within
+  name          - name of property to register
+  size          - size of property in bytes
+  value         - default value for property in newly
+                  created property lists
+
+

OUTPUTS

+
  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pregister_double(class, name, size, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: class     ! Property list class identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name    ! Name of property to register
+    INTEGER(SIZE_T), INTENT(IN) :: size     ! Size of the property value
+    DOUBLE PRECISION,   INTENT(IN) :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5pregister_integer

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pregister_integer
+
+

PURPOSE

+
  Registers a permanent property with a property list class.
+
+

INPUTS

+
  class         - property list class to register
+  permanent property within
+  name          - name of property to register
+  size          - size of property in bytes
+  value         - default value for property in newly
+  created property lists
+
+

OUTPUTS

+
  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pregister_integer(class, name, size, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: class   ! Property list class identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to register
+    INTEGER(SIZE_T), INTENT(IN) :: size   ! Size of the property value
+    INTEGER,   INTENT(IN) :: value        ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pregister_real

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pregister_real
+
+ PURPOSE       Registers a permanent property with a property list class.
+
+

INPUTS

+
  class         - property list class to register
+                  permanent property within
+  name          - name of property to register
+  size          - size of property in bytes
+  value         - default value for property in newly
+                  created property lists
+
+

OUTPUTS

+
  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 10, 2002
+
+

SOURCE

+
  SUBROUTINE h5pregister_real(class, name, size, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: class   ! Property list class identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to register
+    INTEGER(SIZE_T), INTENT(IN) :: size   ! size of the property value
+    REAL,   INTENT(IN) :: value           ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pset(get)fill_value_f

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pset(get)fill_value_f
+
+

PURPOSE

+
  Sets(gets) fill value for a dataset creation property list
+
+

INPUTS

+
  prp_id        - dataset creation property list identifier
+  type_id       - datatype identifier for fill value
+  fillvalue     - fill value
+
+

OUTPUTS

+
  type_id      - datatype identifier for fill value
+  fillvalue    - fill value
+  hdferr       - error code
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 14, 2001
+
+

NOTES

+
  h5pset(get)fill_value_f function is overloaded to support
+  INTEGER, REAL, DOUBLE PRECISION and CHARACTER dtatypes.
+
+

SOURCE

+
  SUBROUTINE h5pset_fill_value_integer(prp_id, type_id, fillvalue, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier
+    INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of
+                                          ! of fillvalue datatype
+                                          ! (in memory)
+    INTEGER, INTENT(IN) :: fillvalue      ! Fillvalue
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pset_char

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pset_char
+
+

PURPOSE

+
  Sets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+  value         - value to set property to
+
+

OUTPUTS

+
  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

OPTIONAL PARAMETERS

+
  NONE
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pset_char(prp_id, name, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id    ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name    ! Name of property to modify
+    CHARACTER(LEN=*),   INTENT(IN) :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5pset_double

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pset_double
+
+

PURPOSE

+
  Sets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+  value         - value to set property to
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pset_double(prp_id, name, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id    ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name    ! Name of property to modify
+    DOUBLE PRECISION,   INTENT(IN) :: value ! Property value
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5pset_integer

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pset_integer
+
+

PURPOSE

+
  Sets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+  value         - value to set property to
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pset_integer(prp_id, name, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to modify
+    INTEGER, INTENT(IN) :: value          ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5pset_real

+ +

[ Top ] [ H5P (F90) ] [ Subroutines ]

+

NAME

+
  h5pset_real
+
+

PURPOSE

+
  Sets a property list value
+
+

INPUTS

+
  prp_id        - iproperty list identifier to modify
+  name          - name of property to modify
+  value         - value to set property to
+
+

OUTPUTS

+
  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002
+
+

SOURCE

+
  SUBROUTINE h5pset_real(prp_id, name, value, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to modify
+    REAL, INTENT(IN) :: value             ! Property value
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Pff_f90.html b/fortran/doc/DevelGuide/src/H5Pff_f90.html new file mode 100644 index 0000000..0e9ff5c --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Pff_f90.html @@ -0,0 +1,4752 @@ + + + + + + + +./src/H5Pff.f90 + + + + + +
+
+ +

H5P (F90)

+ +

[ Top ] [ Modules ]

+

NAME

+
  H5P_PROVISIONAL
+
+

PURPOSE

+
  This file contains Fortran interfaces for H5P functions. It includes
+  all the functions that are independent on whether the Fortran 2003 functions
+  are enabled or disabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5P function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5pget_hyper_vector_size_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_hyper_vector_size_f 
+
+

PURPOSE

+
  Get the number of "I/O" vectors (vector size)
+
+

INPUTS

+
  plist_id     - dataset transfer property list identifier
+
+

OUTPUTS

+
  size         - vector size
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 7, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pget_hyper_vector_size_f(plist_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset transfer property list identifier 
+    INTEGER(SIZE_T), INTENT(OUT) :: size   ! Vector size
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_family_offset_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_family_offset_f 
+
+

PURPOSE

+
  Sets offset for family file driver.
+
+

INPUTS

+
  prp_id       - file creation property list identifier
+  offset       - file offset
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  19 March 2003
+
+

SOURCE

+
  SUBROUTINE h5pset_family_offset_f(prp_id, offset, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id   ! Property list identifier 
+    INTEGER(HSIZE_T), INTENT(IN) :: offset ! Offset in bytes
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_fapl_family_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pset_fapl_family_f 
+
+

PURPOSE

+
  Sets the file access property list to use the family driver. 
+
+

INPUTS

+
  prp_id       - file access property list identifier
+  memb_size    - size in bytes of each file member 
+  memb_plist   - identifier of the file access property 
+                 list to be used for each family member
+
+

OUTPUTS

+
  hdferr  - error code         
+             Success:  0
+             Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pset_fapl_family_f(prp_id, memb_size, memb_plist , hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id      ! Property list identifier 
+    INTEGER(HSIZE_T), INTENT(IN) :: memb_size ! Logical size, in bytes,
+                                              ! of each family member
+    INTEGER(HID_T), INTENT(IN) :: memb_plist  ! Identifier of the file 
+                                              ! access property list for 
+                                              ! each member of the family
+    INTEGER, INTENT(OUT) :: hdferr            ! Error code
+                                              ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_meta_block_size_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_meta_block_size_f 
+
+

PURPOSE

+
  Sets the minimum size of metadata block allocations 
+
+

INPUTS

+
  plist_id     - file access property list identifier
+  size         - metatdata block size
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 7, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pset_meta_block_size_f(plist_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id  ! File access property list identifier 
+    INTEGER(HSIZE_T), INTENT(IN) :: size    ! Block size in bytes; 
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+                                            ! 0 on success and -1 on failure
+
+ +
+ +

h5pall_filters_avail_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pall_filters_avail_f 
+
+

PURPOSE

+
  Checks if all filters set in the dataset creation
+  property list are available
+
+

INPUTS

+
  prp_id       - data creation property list identifier
+
+

OUTPUTS

+
  flag         - .TRUE. if all filters are available
+                 .FALSE. otherwise
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  April 10 2003
+
+

SOURCE

+
  SUBROUTINE h5pall_filters_avail_f(prp_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property 
+                                         !  list identifier 
+    LOGICAL, INTENT(OUT) :: flag         ! .TRUE. if all filters are available
+                                         ! .FALSE. otherwise
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pclose_class_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pclose_class_f 
+
+

PURPOSE

+
  Closes an existing property list class.
+
+

INPUTS

+
  class        - Property list class identifier
+
+

OUTPUTS

+
  hdferr       - error code         
+                  Success: 0 
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pclose_class_f(class, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier
+    INTEGER, INTENT(OUT) :: hdferr      ! Error code
+                                        ! 0 on success and -1 on failure
+
+ +
+ +

h5pclose_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pclose_f 
+
+

PURPOSE

+
  Terminates access to a property list. 
+
+

INPUTS

+
  prp_id - identifier of the property list to 
+           terminate access to. 
+
+

OUTPUTS

+
  hdferr - error code          
+           Success:  0
+           Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pclose_f(prp_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier 
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

h5pcopy_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pcopy_f 
+
+

PURPOSE

+
  Copies an existing property list to create a new 
+  property list
+
+

INPUTS

+
  prp_id       - property list identifier
+
+

OUTPUTS

+
  new_prp_id   - new property list identifier
+  hdferr:      - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001
+
+

SOURCE

+
  SUBROUTINE h5pcopy_f(prp_id, new_prp_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id      ! Property list identifier 
+    INTEGER(HID_T), INTENT(OUT) :: new_prp_id ! Identifier of property list
+    INTEGER, INTENT(OUT) :: hdferr            ! Error code
+                                              ! 0 on success and -1 on failure
+
+ +
+ +

h5pcopy_prop_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pcopy_prop_f 
+
+

PURPOSE

+
  Copies a property from one list or class to another.
+
+

INPUTS

+
  dst_id               - Identifier of the destination property list
+  src_id               - Identifier of the source property list 
+  name                 - name of the property to copy
+
+

OUTPUTS

+
  hdferr:              - error code
+                          Success: 0 
+                          Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pcopy_prop_f(dst_id, src_id, name, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dst_id  ! Destination property list 
+                                          ! identifier 
+    INTEGER(HID_T), INTENT(IN) :: src_id  ! Source property list identifier 
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Property name
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

h5pcreate_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pcreate_f 
+
+

PURPOSE

+
       Creates a new property as an instance of a property 
+       list class.
+
+

INPUTS

+
  class  - type of the property class to be created.
+           Possible values are:
+             H5P_FILE_CREATE_F
+             H5P_FILE_ACCESS_F
+             H5P_DATASET_CREATE_F
+             H5P_DATASET_XFER_F
+             H5P_FILE_MOUNT_F
+
+

OUTPUTS

+
  prp_id - property list identifier
+  hdferr - error code          
+            Success:  0
+            Failure: -1 
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+
+

SOURCE

+
  SUBROUTINE h5pcreate_f(class, prp_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: class   ! The type of the property list 
+                                          ! to be created. Possible values are: 
+                                          !  H5P_FILE_CREATE_F
+                                          !  H5P_FILE_ACCESS_F
+                                          !  H5P_DATASET_CREATE_F
+                                          !  H5P_DATASET_XFER_F
+                                          !  H5P_FILE_MOUNT_F
+    INTEGER(HID_T), INTENT(OUT) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

h5pequal_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pequal_f 
+
+

PURPOSE

+
  Checks if two property lists are eqaul
+
+

INPUTS

+
  plist1_id    - property list identifier
+  plist2_id    - property list identifier
+
+

OUTPUTS

+
  flag         - flag, possible values
+                   .TRUE. or .FALSE.
+  hdferr:      - error code            
+                  Success:  0
+                  Failure: -1, flag is set to .FALSE.   
+
+

AUTHOR

+
  Elena Pourmal
+  September 30, 2002   
+
+

SOURCE

+
  SUBROUTINE h5pequal_f(plist1_id, plist2_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist1_id ! Property list identifier 
+    INTEGER(HID_T), INTENT(IN) :: plist2_id ! Property list identifier 
+    LOGICAL, INTENT(OUT)       :: flag      ! Flag
+    INTEGER, INTENT(OUT)       :: hdferr    ! Error code
+                                            !  0 on success and -1 on failure
+
+ +
+ +

h5pexist_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pexist_f 
+
+

PURPOSE

+
  Queries whether a property name exists in a property list or class. 
+
+

INPUTS

+
  prp_id       - property list identifier to query
+  name         - name of property to check for
+
+

OUTPUTS

+
  flag         - logical flag
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pexist_f(prp_id, name, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier 
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to modify
+    LOGICAL, INTENT(OUT) :: flag          ! .TRUE. if exists, .FALSE. otherwise
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code
+                                    ! 0 on success and -1 on failure
+
+ +
+ +

h5pfill_value_defined_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pfill_value_defined_f
+
+

PURPOSE

+
  Check if fill value is defined.
+
+

INPUTS

+
  plist_id     - dataset creation property list identifier
+
+

OUTPUTS

+
  flag         - fill value status flag
+                 Possible values are:
+                   H5D_FILL_VALUE_ERROR_F
+                   H5D_FILL_VALUE_UNDEFINED_F
+                   H5D_FILL_VALUE_DEFAULT_F
+                   H5D_FILL_VALUE_USER_DEFINED_F
+  hdferr       - error code            
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 4, 2002
+
+

SOURCE

+
  SUBROUTINE h5pfill_value_defined_f(plist_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id  ! Dataset creation property list identifier
+    INTEGER, INTENT(OUT) :: flag            ! Fill value status flag
+                                            !  H5D_FILL_VALUE_ERROR_F
+                                            !  H5D_FILL_VALUE_UNDEFINED_F
+                                            !  H5D_FILL_VALUE_DEFAULT_F
+                                            !  H5D_FILL_VALUE_USER_DEFINED_F
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+                                            ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_alignment_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pget_alignment_f 
+
+

PURPOSE

+
  Retrieves the current settings for alignment 
+  properties from a file access property list. 
+
+

INPUTS

+
  prp_id       - file access property list identifier
+
+

OUTPUTS

+
  threshold    - threshold value       
+  alignment    - alignment value
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pget_alignment_f(prp_id, threshold,  alignment, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id       ! Property list identifier 
+    INTEGER(HSIZE_T), INTENT(OUT) :: threshold ! Threshold value
+    INTEGER(HSIZE_T), INTENT(OUT) :: alignment ! alignment value
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+                                             ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_alloc_time_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_alloc_time_f
+
+

PURPOSE

+
  Get space allocation time for dataset during creation.
+
+

INPUTS

+
  plist_id     - dataset creation property list identifier
+
+

OUTPUTS

+
  flag         - allocation time flag:
+                   H5D_ALLOC_TIME_ERROR_F
+                   H5D_ALLOC_TIME_DEFAULT_F
+                   H5D_ALLOC_TIME_EARLY_F
+                   H5D_ALLOC_TIME_LATE_F
+                   H5D_ALLOC_TIME_INCR_F
+  hdferr:      - error code            
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 4, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pget_alloc_time_f(plist_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id  ! Dataset creation property list identifier
+    INTEGER, INTENT(OUT) :: flag   ! Allocation time flag:
+                                   !  H5D_ALLOC_TIME_ERROR_F
+                                   !  H5D_ALLOC_TIME_DEFAULT_F
+                                   !  H5D_ALLOC_TIME_EARLY_F
+                                   !  H5D_ALLOC_TIME_LATE_F
+                                   !  H5D_ALLOC_TIME_INCR_F
+    INTEGER, INTENT(OUT) :: hdferr ! Error code
+                                   ! 0 on success and -1 on failure
+
+ +
+ +

H5Pget_attr_creation_order_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pget_attr_creation_order_f
+
+

PURPOSE

+
  Retrieves tracking and indexing settings for attribute creation order
+
+

INPUTS

+
  ocpl_id         - Object (group or dataset) creation property list identifier
+
+

OUTPUTS

+
  crt_order_flags - Flags specifying whether to track and index attribute creation order
+  hdferr          - Error code         
+                       Success:  0
+                       Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February, 2008
+
+

SOURCE

+
  SUBROUTINE h5pget_attr_creation_order_f(ocpl_id, crt_order_flags, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: ocpl_id   ! Object (group or dataset) creation property list identifier 
+    INTEGER, INTENT(OUT) :: crt_order_flags ! Flags specifying whether to track and index attribute creation order 
+    INTEGER, INTENT(OUT) :: hdferr   ! Error code
+                                     ! 0 on success and -1 on failure
+
+ +
+ +

H5Pget_attr_phase_change_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pget_attr_phase_change_f 
+
+

PURPOSE

+
  Retrieves attribute storage phase change thresholds 
+
+

INPUTS

+
  ocpl_id         - Object (dataset or group) creation property list identifier
+
+

OUTPUTS

+
  max_compact     - Maximum number of attributes to be stored in compact storage
+                    (Default: 8)
+  min_dense       - Minimum number of attributes to be stored in dense storage
+                    (Default: 6)
+  hdferr          - Error code         
+                     Success:  0
+                     Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5pget_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: ocpl_id ! Object (dataset or group) creation property list identifier
+    INTEGER, INTENT(OUT) :: max_compact   ! Maximum number of attributes to be stored in compact storage
+                                          ! (Default: 8)
+    INTEGER, INTENT(OUT) :: min_dense     ! Minimum number of attributes to be stored in dense storage
+                                          ! (Default: 6)
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_btree_ratios_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_btree_ratios_f
+
+

PURPOSE

+
  Gets B-tree split ratios for a dataset transfer property list
+
+

INPUTS

+
  prp_id       - the dataset transfer property list 
+                 identifier 
+
+

OUTPUTS

+
  left         - the B-tree split ratio for left-most nodes 
+  middle       - the B-tree split ratio for all other nodes
+  right        - the B-tree split ratio for right-most nodes
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+
+

SOURCE

+
  SUBROUTINE h5pget_btree_ratios_f(prp_id, left, middle, right, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+    REAL, INTENT(OUT) :: left   ! The B-tree split ratio for left-most nodes.
+    REAL, INTENT(OUT) :: middle ! The B-tree split ratio for all other nodes 
+    REAL, INTENT(OUT) :: right  ! The B-tree split ratio for right-most 
+                                !  nodes and lone nodes.
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code
+                                    ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_buffer_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_buffer_f 
+
+

PURPOSE

+
  Gets size for conversion buffer
+
+

INPUTS

+
  plist_id     - data transfer property list identifier
+
+

OUTPUTS

+
  size         - buffer size 
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 2, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pget_buffer_f(plist_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! Data transfer property list identifier 
+    INTEGER(HSIZE_T), INTENT(OUT) :: size  ! Buffer size in bytes; 
+                                           !  buffer is allocated and freed by 
+                                           !  the library.
+    INTEGER, INTENT(OUT)       :: hdferr   ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_cache_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pget_cache_f 
+
+

PURPOSE

+
  Queries the meta data cache and raw data chunk cache 
+  parameters.  
+
+

INPUTS

+
  prp_id       - file access property list identifier
+
+

OUTPUTS

+
  mdc_nelmts   - number of elements (objects) in the meta 
+                 data cache 
+  rdcc_nelmts  - number of elements (objects) in the raw 
+                 data chunk cache 
+  rdcc_nbytes  - total size of the raw data chunk cache, in bytes 
+  rdcc_w0      - preemption policy (0 or 1)
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+
+  Bug fix: type of the rdcc_nelmts parameter should be INTEGER
+  instead of INTEGER(SIZE_T) October 10, 2003 
+               
+
+

SOURCE

+
  SUBROUTINE h5pget_cache_f(prp_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(OUT) :: mdc_nelmts   ! Number of elements (objects)
+                                         !  in the meta data cache
+    INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nelmts  ! Number of elements (objects)
+                                                 !  in the meta data cache
+    INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nbytes  ! Total size of the raw data 
+                                                 !  chunk cache, in bytes 
+    REAL, INTENT(OUT) :: rdcc_w0                 ! Preemption policy
+    INTEGER, INTENT(OUT) :: hdferr               ! Error code
+                                                 ! 0 on success and -1 on failure
+
+ +
+ +

H5Pget_char_encoding_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pget_char_encoding_f
+
+

PURPOSE

+
  Retrieves the character encoding used to create a string
+
+

INPUTS

+
  plist_id - Property list identifier
+
+

OUTPUTS

+
  encoding - Valid values for encoding are:
+               H5T_CSET_ASCII_F -> US ASCII
+               H5T_CSET_UTF8_F -> UTF-8 Unicode encoding
+  hdferr   - Error code                
+               Success:  0
+               Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 3, 2008
+
+

SOURCE

+
  SUBROUTINE  h5pget_char_encoding_f(plist_id, encoding, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! Property list identifier
+
+    INTEGER, INTENT(OUT) :: encoding       ! Valid values for encoding are:
+                                           !  H5T_CSET_ASCII_F -> US ASCII
+                                           !  H5T_CSET_UTF8_F  -> UTF-8 Unicode encoding
+    INTEGER, INTENT(OUT) :: hdferr   ! Error code
+                                     ! 0 on success and -1 on failure
+
+ +
+ +

H5Pget_chunk_cache_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pget_chunk_cache_f
+
+

PURPOSE

+
  Retrieves the maximum possible number of elements in the meta
+  data cache and the maximum possible number of elements and
+  bytes and the RDCC_W0 value in the raw data chunk cache.  Any
+  (or all) arguments may be null pointers in which case the
+  corresponding datum is not returned.  If these properties have
+  not been set on this property list, the default values for a
+  file access property list are returned.
+
+

INPUTS

+
  dapl_id            - Dataset access property list identifier.
+
+

OUTPUTS

+
  rdcc_nslots        - Number of chunk slots in the raw data chunk cache hash table. 
+  rdcc_nbytes        - Total size of the raw data chunk cache, in bytes. 
+  rdcc_w0            - Preemption policy. 
+  hdferr             - Error code              
+                        Success:  0
+                        Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  April 13, 2009
+
+

HISTORY

+

SOURCE

+
  SUBROUTINE h5pget_chunk_cache_f(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dapl_id       ! Dataset access property list identifier.
+    INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nslots ! Number of chunk slots in the raw data chunk cache hash table.
+    INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nbytes ! Total size of the raw data chunk cache, in bytes. 
+    REAL, INTENT(OUT) :: rdcc_w0                ! Preemption policy.
+    INTEGER, INTENT(OUT) :: hdferr              ! Error code:
+                                                ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_chunk_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pget_chunk_f 
+
+

PURPOSE

+
  Retrieves the size of chunks for the raw data of a 
+  chunked layout dataset
+
+

INPUTS

+
  prp_id       - property list identifier
+  ndims        - size of dims array
+
+

OUTPUTS

+
  dims         - array with dimension sizes for each chunk
+  hdferr       - error code            
+                  Success:  number of chunk dimensions
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pget_chunk_f(prp_id, ndims, dims, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(IN) :: ndims         ! Number of chunk dimensions to
+                                         ! to return
+    INTEGER(HSIZE_T), DIMENSION(ndims), INTENT(OUT) :: dims    
+                                         ! Array containing sizes of
+                                         ! chunk dimensions
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code:
+                                         !  number of chunk dimensions on success,
+                                         !  -1 on failure
+
+ +
+ +

h5pget_class_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_class_f 
+
+

PURPOSE

+
  Returns the property list class for a property list.
+
+

INPUTS

+
  prp_id       - property list identifier
+
+

OUTPUTS

+
  classtype    - property list class
+                 Possible values are:
+                  H5P_ROOT_F
+                  H5P_FILE_CREATE_F
+                  H5P_FILE_ACCESS_F
+                  H5PE_DATASET_CREATE_F
+                  H5P_DATASET_XFER_F
+                  H5P_FILE_MOUNT_F
+  hdferr:      - error code            
+                  Success:  0
+                  Failure: -1 
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+
+

SOURCE

+
  SUBROUTINE h5pget_class_f(prp_id, classtype, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(OUT) :: classtype    ! The type of the property list 
+                                         ! to be created. Possible values are: 
+                                         !  H5P_ROOT_F
+                                         !  H5P_FILE_CREATE_F
+                                         !  H5P_FILE_ACCESS_F
+                                         !  H5PE_DATASET_CREATE_F 
+                                         !  H5P_DATASET_XFER_F
+                                         !  H5P_FILE_MOUNT_F
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_class_name_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_class_name_f 
+
+

PURPOSE

+
  Queries the name of a class.
+
+

INPUTS

+
  prp_id       - property list identifier to query
+
+

OUTPUTS

+
  name         - name of a class
+  size         - Actual length of the class name
+                   NOTE: If provided buffer "name" is smaller,
+                   than name will be truncated to fit into
+                   provided user buffer
+  hdferr:      - error code
+                  Success: 0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002      
+
+

HISTORY

+
 Returned the size of name as an argument      
+
+

SOURCE

+
  SUBROUTINE h5pget_class_name_f(prp_id, name, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier 
+    CHARACTER(LEN=*), INTENT(OUT) :: name ! Buffer to retireve class name
+    INTEGER, INTENT(OUT) :: size          ! Actual length of the class name
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_class_parent_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_class_parent_f 
+
+

PURPOSE

+
  Retrieves the parent class of a genric property class. 
+
+

INPUTS

+
  prp_id       - property list identifier to query
+
+

OUTPUTS

+
  parent_id    - identifier of the parent class
+  hdferr:      - error code          
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pget_class_parent_f(prp_id, parent_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id     ! Property list identifier 
+    INTEGER(HID_T), INTENT(OUT) :: parent_id ! Parent class property list 
+                                             ! identifier 
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code
+                                    ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_copy_object_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_copy_object_f 
+
+

PURPOSE

+
  Retrieves the properties to be used when an object is copied.
+
+

INPUTS

+
  ocp_plist_id - Object copy property list identifier
+
+

OUTPUTS

+
  copy_options - Copy option(s) to be get
+  hdferr       - Error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 3, 2008
+
+

HISTORY

+

SOURCE

+
  SUBROUTINE h5pget_copy_object_f(ocp_plist_id, copy_options, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: ocp_plist_id ! Object copy property list identifier
+    INTEGER, INTENT(OUT) :: copy_options       ! Valid copy options returned are:
+                                               !   H5O_COPY_SHALLOW_HIERARCHY_F
+                                               !   H5O_COPY_EXPAND_SOFT_LINK_F 
+                                               !   H5O_COPY_EXPAND_EXT_LINK_F
+                                               !   H5O_COPY_EXPAND_REFERENCE_F
+                                               !   H5O_COPY_WITHOUT_ATTR_FLAG_F
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+                                               ! 0 on success and -1 on failure
+
+ +
+ +

H5Pget_create_inter_group_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pget_create_inter_group_f
+
+

PURPOSE

+
  Determines whether property is set to enable creating missing intermediate groups.
+
+

INPUTS

+
  lcpl_id            - Link creation property list identifier
+  crt_intermed_group - Specifying whether to create intermediate groups upon 
+                       the creation of an object
+
+

OUTPUTS

+
  hdferr             - Error code              
+                        Success:  0
+                        Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  April 4, 2008
+
+

HISTORY

+
 The long subroutine name (>31) on older f90 compilers causes problems
+          so the name was shortened
+
+

SOURCE

+
  SUBROUTINE h5pget_create_inter_group_f(lcpl_id, crt_intermed_group, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: lcpl_id      ! Link creation property list identifier
+    INTEGER, INTENT(IN) :: crt_intermed_group  ! Flag specifying whether to create intermediate groups
+                                               ! upon creation of an object
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+                                               ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_data_transform_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_data_transform_f 
+
+

PURPOSE

+
  Retrieves a data transform expression.
+
+

INPUTS

+
  plist_id   - Identifier of the property list or class
+
+

OUTPUTS

+
  expression - buffer to hold transform expression
+  hdferr     - Error code
+                 Success:  Actual lenght of the expression
+                           If provided buffer "expression" is 
+                           smaller, than expression will be 
+                           truncated to fit into
+                           provided user buffer
+                 Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 19, 2008
+
+

HISTORY

+
 Should hdferr return just 0 or 1 and add another arguement for the size?
+
+

SOURCE

+
SUBROUTINE h5pget_data_transform_f(plist_id, expression, hdferr, size)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id         ! Identifier of the property list or class
+    CHARACTER(LEN=*), INTENT(OUT) :: expression    ! Buffer to hold transform expression
+    INTEGER(SIZE_T), INTENT(OUT), OPTIONAL :: size ! Registered size of the transform expression
+    INTEGER, INTENT(OUT) :: hdferr                 ! Error code
+                                                   !  0 on success and -1 on failure
+
+ +
+ +

h5pget_driver_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_driver_f 
+
+

PURPOSE

+
  Returns low-lever driver identifier. 
+
+

INPUTS

+
  prp_id  - file access or data transfer property 
+            list identifier. 
+
+

OUTPUTS

+
  driver  - low-level driver identifier
+  hdferr  - error code         
+             Success:  0
+             Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pget_driver_f(prp_id, driver, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier 
+    INTEGER(HID_T), INTENT(OUT) :: driver ! Low-level file driver identifier
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_edc_check_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_edc_check_f 
+
+

PURPOSE

+
  Queries error detecting  
+
+

INPUTS

+
  prp_id       - dataset creation property list identifier
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  March 13, 2003
+
+

SOURCE

+
  SUBROUTINE h5pget_edc_check_f(prp_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset transfer property list identifier 
+    INTEGER, INTENT(OUT) :: flag         ! Checksum filter flag
+                                         ! May have one of the following values:
+                                         !  H5Z_ERROR_EDC_F
+                                         !  H5Z_DISABLE_EDC_F
+                                         !  H5Z_ENABLE_EDC_F
+                                         !  H5Z_NO_EDC_F
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

H5Pget_est_link_info_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pget_est_link_info_f 
+
+

PURPOSE

+
  Queries data required to estimate required local heap or object header size.
+
+

INPUTS

+
  gcpl_id         - Group creation property list identifier
+
+

OUTPUTS

+
  est_num_entries - Estimated number of links to be inserted into group
+  est_name_len    - Estimated average length of link names
+  hdferr          - Error code
+                     Success:  0
+                     Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 21, 2008
+
+

HISTORY

+

SOURCE

+
  SUBROUTINE h5pget_est_link_info_f(gcpl_id, est_num_entries, est_name_len, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: gcpl_id   ! Group creation property list identifier  
+    INTEGER, INTENT(OUT) :: est_num_entries ! Estimated number of links to be inserted into group
+    INTEGER, INTENT(OUT) :: est_name_len    ! Estimated average length of link names
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+                                            ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_external_count_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pget_external_count_f 
+
+

PURPOSE

+
  Returns the number of external files for a dataset. 
+
+

INPUTS

+
  prp_id       - dataset creation property list identifier
+
+

OUTPUTS

+
  count        - number of external files for the 
+                 specified dataset
+  hdferr       - error code            
+                   Success:  0
+                   Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+
+

SOURCE

+
  SUBROUTINE h5pget_external_count_f (prp_id, count, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(OUT) :: count        ! Number of external files for the 
+                                         ! Specified dataset
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_external_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_external_f 
+
+

PURPOSE

+
  Returns information about an external file. 
+
+

INPUTS

+
  prp_id       - dataset creation property list identifier
+
+

OUTPUTS

+
  idx          - external file index 
+  name_size    - maximum size of name array
+  name         - name of the external file     
+  name         - name of external file
+  offset       - offset in bytes from the beginning of the 
+                 file to the location in the file
+                 where the data starts
+  bytes        - size of the external file data
+  hdferr       - error code            
+                  Success:  0
+                   Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+
+

SOURCE

+
  SUBROUTINE h5pget_external_f(prp_id, idx, name_size, name, offset,bytes, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+    INTEGER, INTENT(IN) :: idx           ! External file index.
+    INTEGER(SIZE_T), INTENT(IN) :: name_size ! Maximum length of name array 
+    CHARACTER(LEN=*), INTENT(OUT) :: name    ! Name of an external file
+    INTEGER, INTENT(OUT) :: offset           ! Offset, in bytes, from the beginning 
+                                             !  of the file to the location in the file 
+                                             !  where the data starts.
+    INTEGER(HSIZE_T), INTENT(OUT) :: bytes   ! Number of bytes reserved in the 
+                                             !  file for the data
+    INTEGER, INTENT(OUT) :: hdferr           ! Error code
+                                             ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_fapl_core_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pget_fapl_core_f 
+
+

PURPOSE

+
  Queries core file driver properties. 
+
+

INPUTS

+
  prp_id        - file access property list identifier
+
+

OUTPUTS

+
  increment     - size, in bytes, of memory increments 
+  backing_store - boolean flag indicating whether to write 
+                  the file contents to disk when the file is closed. 
+  hdferr        - error code           
+                   Success:  0
+                   Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pget_fapl_core_f(prp_id, increment, backing_store, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id      ! Property list identifier 
+    INTEGER(SIZE_T), INTENT(OUT) :: increment ! File block size in bytes.
+    LOGICAL, INTENT(OUT) :: backing_store   ! Flag to indicate that
+                                            ! entire file contents are flushed to a file 
+                                            ! with the same name as this core file.
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+                                            ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_fapl_direct_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_fapl_direct_f
+
+

PURPOSE

+
  Gets up use of the direct I/O driver.
+
+

INPUTS

+
  fapl_id      - File access property list identifier
+
+

OUTPUTS

+
  alignment    - Required memory alignment boundary
+  block_size   - File system block size
+  cbuf_size    - Copy buffer size
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 21, 2008
+
+

SOURCE

+
  SUBROUTINE h5pget_fapl_direct_f(fapl_id, alignment, block_size, cbuf_size, hdferr)
+    IMPLICIT NONE  
+    INTEGER(HID_T), INTENT(IN) :: fapl_id       ! File access property list identifier
+    INTEGER(SIZE_T), INTENT(OUT) :: alignment   ! Required memory alignment boundary!
+    INTEGER(SIZE_T), INTENT(OUT) :: block_size  ! File system block size
+    INTEGER(SIZE_T), INTENT(OUT) :: cbuf_size   ! Copy buffer size
+    INTEGER, INTENT(OUT) :: hdferr              ! Error code
+                                                ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_fapl_family_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_fapl_family_f 
+
+

PURPOSE

+
  Returns file access property list information.       
+
+

INPUTS

+
  prp_id       - file access property list identifier
+
+

OUTPUTS

+
  memb_size    - size in bytes of each file member 
+  memb_plist   - identifier of the file access property 
+                 list to be used for each family member
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pget_fapl_family_f(prp_id, memb_size, memb_plist , hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id       ! Property list identifier 
+    INTEGER(HSIZE_T), INTENT(OUT) :: memb_size ! Logical size, in bytes,
+                                               ! of each family member
+    INTEGER(HID_T), INTENT(OUT) :: memb_plist  ! Identifier of the file 
+                                               ! access property list for 
+                                               ! each member of the family
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+                                               ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_fapl_multi_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_fapl_multi_f 
+
+

PURPOSE

+
  Sets up use of the multi-file driver. 
+
+

INPUTS

+
  prp_id       - file creation property list identifier
+
+

OUTPUTS

+
  mem_map      - mapping array
+  memb_fapl    - property list for each memory usage type
+  memb_name    - names of member file
+  relax        - flag 
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1
+
+

OPTIONAL PARAMETERS

+
  maxlen_out   - maximum length for memb_name array element 
+
+

AUTHOR

+
  Elena Pourmal
+  24 March 2003
+
+

SOURCE

+
  SUBROUTINE h5pget_fapl_multi_f(prp_id, memb_map, memb_fapl, memb_name, memb_addr, relax, hdferr, maxlen_out)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier 
+    INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_map
+    INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_fapl
+    CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_name
+    !INTEGER(HADDR_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_addr
+    REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_addr
+    INTEGER, OPTIONAL, INTENT(OUT) :: maxlen_out 
+    LOGICAL, INTENT(OUT) :: relax
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_fclose_degree_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_fclose_degree_f 
+
+

PURPOSE

+
  Returns the degree for the file close behavior.
+
+

INPUTS

+
  fapl_id      - File access property list identifier
+
+

OUTPUTS

+
  degree       - Possible values are:
+                  H5F_CLOSE_DEFAULT_F
+                  H5F_CLOSE_WEAK_F
+                  H5F_CLOSE_SEMI_F
+                  H5F_CLOSE_STRONG_F
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  September 26, 2002   
+
+

HISTORY

+

SOURCE

+
  SUBROUTINE h5pget_fclose_degree_f(fapl_id, degree, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: fapl_id ! File Access Property list identifier 
+    INTEGER, INTENT(OUT) :: degree        ! Possible values are: 
+                                          !  H5F_CLOSE_DEFAULT_F
+                                          !  H5F_CLOSE_WEAK_F
+                                          !  H5F_CLOSE_SEMI_F
+                                          !  H5F_CLOSE_STRONG_F
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_fill_time_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pget_fill_time_f
+
+

PURPOSE

+
  Get fill value writing time for dataset
+
+

INPUTS

+
  plist_id     - dataset creation property list identifier
+
+

OUTPUTS

+
  hdferr:      - error code            
+                  Success:  0
+                  Failure: -1
+
+

OPTIONAL PARAMETERS

+
  flag         - fill time flag:
+                  H5D_FILL_TIME_ERROR_F
+                  H5D_FILL_TIME_ALLOC_F
+                  H5D_FILL_TIME_NEVER_F
+
+

AUTHOR

+
  Elena Pourmal
+  October 4, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pget_fill_time_f(plist_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id  ! Dataset creation property list identifier
+    INTEGER, INTENT(OUT) :: flag   ! Fill time flag:
+                                   !  H5D_FILL_TIME_ERROR_F
+                                   !  H5D_FILL_TIME_ALLOC_F
+                                   !  H5D_FILL_TIME_NEVER_F
+    INTEGER, INTENT(OUT) :: hdferr ! Error code
+                                   ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_filter_by_id_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_filter_by_id_f 
+
+

PURPOSE

+
  Returns information about a filter in a pipeline
+
+

INPUTS

+
  prp_id       - data creation or transfer property list 
+                 identifier
+
+

OUTPUTS

+
  filter_id    - filter identifier
+  flags        - bit vector specifying certain general
+                 properties of the filter
+  cd_nelmts    - number of elements in cd_values
+  cd_values    - auxiliary data for the filter
+  namelen      - number of characters in the name buffer
+  name         - buffer to retrieve filter name
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  April 10 2003
+
+

SOURCE

+
  SUBROUTINE h5pget_filter_by_id_f(prp_id, filter_id, flags, cd_nelmts, cd_values, namelen, name, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id   ! Property list identifier 
+    INTEGER, INTENT(IN) :: filter_id       ! Filter identifier
+    INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts     ! Number of elements in cd_values.
+    INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values ! Auxiliary data for the filter.
+    INTEGER, INTENT(OUT) :: flags          ! Bit vector specifying certain general
+                                           ! properties of the filter.
+    INTEGER(SIZE_T), INTENT(IN) :: namelen ! Anticipated number of characters in name.
+    CHARACTER(LEN=*), INTENT(OUT) :: name  ! Name of the filter
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_filter_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pget_filter_f 
+
+

PURPOSE

+
  Returns information about a filter in a pipeline
+
+

INPUTS

+
  prp_id        - data creation or transfer property list 
+                  identifier
+  filter_number - sequence number within the filter
+                  pipeline of the filter for which 
+                  information is sought
+
+

OUTPUTS

+
  filter_id    - filter identification number
+  flags        - bit vector specifying certain general
+                 properties of the filter
+  cd_nelmts    - number of elements in cd_values
+  cd_values    - auxiliary data for the filter
+  namelen      - number of characters in the name buffer
+  name         - buffer to retrieve filter name
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+
+

SOURCE

+
  SUBROUTINE h5pget_filter_f(prp_id, filter_number, flags, cd_nelmts, cd_values, namelen, name, filter_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(IN) :: filter_number ! Sequence number within the filter
+                                         !  pipeline of the filter for which 
+                                         !  information is sought
+    INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values  ! Auxiliary data for the filter.
+    INTEGER, INTENT(OUT) :: flags        ! Bit vector specifying certain general
+                                         !  properties of the filter.
+    INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts  ! Number of elements in cd_values.
+    INTEGER(SIZE_T), INTENT(IN) :: namelen       ! Anticipated number of characters in name.
+    CHARACTER(LEN=*), INTENT(OUT) :: name        ! Name of the filter
+    INTEGER, INTENT(OUT) :: filter_id            ! Filter identification number  
+    INTEGER, INTENT(OUT) :: hdferr               ! Error code
+                                                 ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_gc_references_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pget_gc_references_f 
+
+

PURPOSE

+
  Returns garbage collecting references setting.       
+
+

INPUTS

+
  prp_id       - file access property list identifier
+
+

OUTPUTS

+
  gc_reference - flag for stting garbage collection on 
+                 and off (1 or 0)
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pget_gc_references_f(prp_id, gc_reference, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(OUT) :: gc_reference ! The flag for garbage collecting
+                                         !  references for the file
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_istore_k_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_istore_k_f 
+
+

PURPOSE

+
  Queries the 1/2 rank of an indexed storage B-tree. 
+
+

INPUTS

+
  prp_id       - file creation property list identifier
+
+

OUTPUTS

+
  ik           - 1/2 rank of chunked storage B-tree
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pget_istore_k_f(prp_id, ik, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(OUT) :: ik           ! 1/2 rank of chunked storage B-tree
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_layout_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pget_layout_f 
+
+

PURPOSE

+
  Returns the layout of the raw data for a dataset. 
+
+

INPUTS

+
  prp_id       - data creation property list identifier
+
+

OUTPUTS

+
  layout       - type of storage layout for raw data
+                 possible values are:
+                  H5D_COMPACT_F
+                  H5D_CONTIGUOUS_F
+                  H5D_CHUNKED_F
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+
+

SOURCE

+
  SUBROUTINE h5pget_layout_f (prp_id, layout, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(OUT) :: layout       ! Type of storage layout for raw data
+                                         ! possible values are:
+                                         !  H5D_COMPACT_F(0)
+                                         !  H5D_CONTIGUOUS_F(1)
+                                         !  H5D_CHUNKED_F(2)
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

H5Pget_link_creation_order_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pget_link_creation_order_f
+
+

PURPOSE

+
  Queries whether link creation order is tracked and/or indexed in a group.
+
+

INPUTS

+
  gcpl_id - Group creation property list identifier
+
+

OUTPUTS

+
  crt_order_flags - Creation order flag(s)
+  hdferr          - Error code         
+                     Success:  0
+                     Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 3, 2008
+
+

SOURCE

+
  SUBROUTINE h5pget_link_creation_order_f(gcpl_id, crt_order_flags, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: gcpl_id   ! Group creation property list identifier
+    INTEGER, INTENT(OUT) :: crt_order_flags ! Creation order flag(s)
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+                                            ! 0 on success and -1 on failure
+
+ +
+ +

H5Pget_link_phase_change_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pget_link_phase_change_f
+
+

PURPOSE

+
  Queries the settings for conversion between compact and dense groups.
+
+

INPUTS

+
  gcpl_id      - Group creation property list identifier
+
+

OUTPUTS

+
  max_compact  - Maximum number of attributes to be stored in compact storage
+  min_dense    - Minimum number of attributes to be stored in dense storage
+  hdferr       - Error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 20, 2008
+
+

SOURCE

+
  SUBROUTINE h5pget_link_phase_change_f(gcpl_id, max_compact, min_dense, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier
+    INTEGER, INTENT(OUT) :: max_compact   ! Maximum number of attributes to be stored in compact storage
+    INTEGER, INTENT(OUT) :: min_dense     ! Minimum number of attributes to be stored in dense storage
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

H5Pget_local_heap_size_hint_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pget_local_heap_size_hint_f 
+
+

PURPOSE

+
  Queries the local heap size hint for original-style groups.
+
+

INPUTS

+
  gcpl_id   - Group creation property list identifier
+
+

OUTPUTS

+
  size_hint - Hint for size of local heap
+  hdferr    - Error code
+               Success:  0
+               Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 21, 2008
+
+

SOURCE

+
  SUBROUTINE h5pget_local_heap_size_hint_f(gcpl_id, size_hint, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: gcpl_id     ! Group creation property list identifier
+    INTEGER(SIZE_T), INTENT(OUT) :: size_hint ! Hint for size of local heap
+    INTEGER, INTENT(OUT) :: hdferr            ! Error code
+                                              ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_meta_block_size_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_meta_block_size_f 
+
+

PURPOSE

+
  Gets the minimum size of metadata block allocations 
+
+

INPUTS

+
  plist_id     - file access property list identifier
+
+

OUTPUTS

+
  size         - metatdata block size
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 7, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pget_meta_block_size_f(plist_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id  ! File access property list identifier 
+    INTEGER(HSIZE_T), INTENT(OUT) :: size   ! Block size in bytes; 
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+                                            ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_nfilters_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pget_nfilters_f 
+
+

PURPOSE

+
  Returns the number of filters in the pipeline. 
+
+

INPUTS

+
  prp_id       - data creation or transfer property list 
+                 identifier
+
+

OUTPUTS

+
  nfilters     - number of filters in the pipeline
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+
+

SOURCE

+
  SUBROUTINE h5pget_nfilters_f (prp_id, nfilters, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(OUT) :: nfilters     ! The number of filters in the pipeline
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_nlinks_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_nlinks_f 
+
+

PURPOSE

+
  Gets maximum number of soft or user-defined link traversals.
+
+

INPUTS

+
  lapl_id - File access property list identifier
+  nlinks  - Maximum number of links to traverse
+
+

OUTPUTS

+
  hdferr  - error code
+             Success:  0
+             Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 24, 2008
+
+

SOURCE

+
  SUBROUTINE h5pget_nlinks_f(lapl_id, nlinks, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: lapl_id  ! File access property list identifier
+    INTEGER(SIZE_T), INTENT(OUT) :: nlinks ! Maximum number of links to traverse
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_npros_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pget_npros_f 
+
+

PURPOSE

+
  Queries number of properties in property list or class
+
+

INPUTS

+
  prp_id       - iproperty list identifier to query
+
+

OUTPUTS

+
  nprops       - number of properties in property object
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pget_nprops_f(prp_id, nprops, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id    ! Property list identifier 
+    INTEGER(SIZE_T), INTENT(OUT) :: nprops  ! Number of properties
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+                                            ! 0 on success and -1 on failure
+
+ +
+ +

H5Pget_obj_track_times_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pget_obj_track_times_f 
+
+

PURPOSE

+
  Returns whether times are tracked for an object.
+
+

INPUTS

+
  plist_id     - property list id
+  flag         - object timestamp setting
+                 .TRUE.,.FALSE.
+
+

OUTPUTS

+
  hdferr       - error code            
+                 Success:  0
+                 Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 22, 2008
+
+

SOURCE

+
  SUBROUTINE h5pget_obj_track_times_f(plist_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property 
+                                           ! list identifier 
+    LOGICAL, INTENT(OUT) :: flag   ! Object timestamp setting
+    INTEGER, INTENT(OUT) :: hdferr ! Error code
+                                   ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_preserve_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_preserve_f 
+
+

PURPOSE

+
  Checks status of the dataset transfer property list.
+
+

INPUTS

+
  prp_id  - property list identifier
+
+

OUTPUTS

+
  flag    - status flag
+  hdferr  - error code         
+       Success:  0
+       Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001
+ 
+  Datatype of the flag parameter is changed from 
+  INTEGER to LOGICAL 
+  June 4, 2003 
+
+

SOURCE

+
  SUBROUTINE h5pget_preserve_f(prp_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    LOGICAL, INTENT(OUT) ::  flag        ! TRUE/FALSE flag. Shows status of the dataset's
+                                         ! transfer property for partial writing/reading
+                                         ! compound datatype
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_sec2_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pget_sec2_f 
+
+

PURPOSE

+
  NOT AVAILABLE
+
+

INPUTS

+

OUTPUTS

+
  hdferr  - error code         
+             Success:  0
+             Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+ SOURCE!          SUBROUTINE h5pget_sec2_f (prp_id, sec2, hdferr) 
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+            INTEGER, INTENT(OUT) :: sec2   ! value indicates whether the file
+            INTEGER, INTENT(OUT) :: hdferr  ! Error code
+ 0 on success and -1 on failure
+
+ +
+ +

h5pget_sieve_buf_size_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_sieve_buf_size_f 
+
+

PURPOSE

+
  Gets the maximum size of the data sieve buffer
+
+

INPUTS

+
  plist_id     - file access property list identifier
+
+

OUTPUTS

+
  size         - sieve buffer size
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 7, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pget_sieve_buf_size_f(plist_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier 
+    INTEGER(SIZE_T), INTENT(OUT) :: size   ! Buffer size in bytes 
+    INTEGER, INTENT(OUT)       :: hdferr   ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_size_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_size_f 
+
+

PURPOSE

+
  Queries the size of a property value in bytes.
+
+

INPUTS

+
  prp_id       - property list identifier to query
+  name         - name of property to query
+
+

OUTPUTS

+
  size         - size of property in bytes
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002      
+
+

HISTORY

+

SOURCE

+
  SUBROUTINE h5pget_size_f(prp_id, name, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier 
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of property to query
+    INTEGER(SIZE_T), INTENT(OUT) :: size  ! Size in bytes
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_sizes_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_sizes_f 
+
+

PURPOSE

+
  Retrieves the size of the offsets and lengths used 
+  in an HDF5 file
+
+

INPUTS

+
  prp_id       - file creation property list identifier
+
+

OUTPUTS

+
  sizeof_addr  - size of an object offset in bytes 
+  sizeof_size  - size of an object length in bytes
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pget_sizes_f(prp_id, sizeof_addr, sizeof_size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id        ! Property list identifier 
+    INTEGER(SIZE_T), INTENT(OUT) :: sizeof_addr ! Size of an object
+                                                ! offset in bytes 
+    INTEGER(SIZE_T), INTENT(OUT) :: sizeof_size ! Size of an object
+                                                ! length in bytes 
+    INTEGER, INTENT(OUT) :: hdferr              ! Error code
+                                                ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_small_data_block_size_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_small_data_block_size_f 
+
+

PURPOSE

+
  Gets the minimum size of "small" raw data block
+
+

INPUTS

+
  plist_id     - file access property list identifier
+
+

OUTPUTS

+
  size         - small raw data block size
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 7, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pget_small_data_block_size_f(plist_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id  ! File access property list identifier 
+    INTEGER(HSIZE_T), INTENT(OUT) :: size   ! Small raw data block size
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+                                            ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_split_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pget_split_f 
+
+

PURPOSE

+
  NOT AVAILABLE
+
+

INPUTS

+

OUTPUTS

+
  hdferr  - error code         
+             Success:  0
+             Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
!          SUBROUTINE h5pget_split_f(prp_id, meta_ext_size, meta_ext, meta_plist,raw_ext_size,&
+!                                     raw_ext, raw_plist, hdferr)
+!            IMPLICIT NONE
+!            INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+!            INTEGER(SIZE_T), INTENT(IN) :: meta_ext_size ! Number of characters of the meta
+                                                         ! file extension to be copied to the
+                                                         ! meta_ext buffer
+
+!            CHARACTER(LEN=*), INTENT(OUT) :: meta_ext  !Name of the extension for
+                                                      !the metafile filename
+!            INTEGER(HID_T), INTENT(OUT) :: meta_plist  ! Identifier of the meta file
+                                                      ! access property list
+!            INTEGER(SIZE_T), INTENT(IN) :: raw_ext_size ! Number of characters of the raw
+                                                         ! file extension to be copied to the
+                                                         ! raw_ext buffer
+!            CHARACTER(LEN=*), INTENT(OUT) :: raw_ext  !Name extension for the raw file filename
+!            INTEGER(HID_T), INTENT(OUT) :: raw_plist  !Identifier of the raw file
+                                                     !access property list
+!            INTEGER, INTENT(OUT) :: hdferr  ! Error code
+                                     ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_stdio_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_stdio_f 
+
+

PURPOSE

+
  NOT AVAILABLE
+
+

INPUTS

+

OUTPUTS

+
  hdferr  - error code         
+             Success:  0
+             Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
!          SUBROUTINE h5pget_stdio_f (prp_id, io, hdferr)
+!
+!            IMPLICIT NONE
+!            INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+!            INTEGER, INTENT(OUT) :: io   ! value indicates that the file
+                                         !access property list is set to
+                                         !the stdio driver
+!            INTEGER, INTENT(OUT) :: hdferr  ! Error code
+                                     ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_sym_k_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_sym_k_f 
+
+

PURPOSE

+
  Retrieves the size of the symbol table B-tree 1/2 rank
+  and the symbol table leaf node 1/2 size. 
+
+

INPUTS

+
  prp_id       - file creation property list identifier
+
+

OUTPUTS

+
  ik           - symbol table tree 1/2 rank
+  lk           - symbol table node 1/2 size
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pget_sym_k_f(prp_id, ik, lk, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(OUT) :: ik           ! Symbol table tree rank
+    INTEGER, INTENT(OUT) :: lk           ! Symbol table node size
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_userblock_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_userblock_f 
+
+

PURPOSE

+
  Gets user block size.
+
+

INPUTS

+
  prp_id       - file creation property list identifier
+
+

OUTPUTS

+
  block_size   - size of the user block in bytes
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pget_userblock_f(prp_id, block_size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id         ! Property list identifier 
+    INTEGER(HSIZE_T), INTENT(OUT) ::  block_size ! Size of the 
+                                                 ! user-block in bytes 
+    INTEGER, INTENT(OUT) :: hdferr               ! Error code
+                                                 ! 0 on success and -1 on failure
+
+ +
+ +

h5pget_version_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pget_version_f 
+
+

PURPOSE

+
  Retrieves the version information of various objects 
+  for a file creation property list
+
+

INPUTS

+
  prp_id       - file createion property list identifier
+
+

OUTPUTS

+
  boot         - super block version number
+  freelist     - global freelist version number
+  stab         - symbol table version number
+  shhdr        - shared object header version number
+  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pget_version_f(prp_id, boot, freelist, &
+       stab, shhdr, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id        ! Property list identifier 
+    INTEGER, DIMENSION(:), INTENT(OUT) :: boot  ! Array to put boot
+                                                ! block version number
+    INTEGER, DIMENSION(:), INTENT(OUT) :: freelist  ! Array to put global
+                                                    ! Freelist version number
+
+    INTEGER, DIMENSION(:), INTENT(OUT) :: stab  ! Array to put symbol
+                                                ! table version number
+    INTEGER, DIMENSION(:), INTENT(OUT) :: shhdr ! Array to put shared
+                                                ! object header version number
+    INTEGER, INTENT(OUT) :: hdferr              ! Error code
+                                                ! 0 on success and -1 on failure
+
+ +
+ +

h5pisa_class_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pisa_class_f 
+
+

PURPOSE

+
  Determines whether a property list is a member of a class. 
+
+

INPUTS

+
  plist        - property list identifier 
+  pclass       - identifier of the property class
+
+

OUTPUTS

+
  flag         - .TRUE. if a member, .FALSE. otherwise
+  hdferr:      - error code           
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pisa_class_f(plist, pclass, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist     ! Property list identifier 
+    INTEGER(HID_T), INTENT(IN) :: pclass    ! Class identifier
+    LOGICAL, INTENT(OUT) :: flag            ! logical flag
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code
+                                    ! 0 on success and -1 on failure
+
+ +
+ +

h5pmodify_filter_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pmodify_filter_f 
+
+

PURPOSE

+
  Adds a filter to the filter pipeline. 
+
+

INPUTS

+
  prp_id       - data creation or transfer property list 
+                 identifier
+  filter       - filter to be modified
+  flags        - bit vector specifying certain general
+                 properties of the filter
+  cd_nelmts    - number of elements in cd_values
+  cd_values    - auxiliary data for the filter
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  April 10 2003
+
+

SOURCE

+
  SUBROUTINE h5pmodify_filter_f(prp_id, filter, flags, cd_nelmts, cd_values,  hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(IN) :: filter        ! Filter to be modified
+    INTEGER, INTENT(IN) :: flags         ! Bit vector specifying certain general
+                                         !  properties of the filter
+    INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts       ! Number of elements in cd_values
+    INTEGER, DIMENSION(*), INTENT(IN) :: cd_values ! Auxiliary data for the filter
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5premove_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5premove_f 
+
+

PURPOSE

+
  Removes a property from a property list. 
+
+

INPUTS

+
  plid         - Property list identofoer
+  name         - name of the property to remove
+
+

OUTPUTS

+
  hdferr:      - error code
+                  Success: 0 
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002      
+
+

SOURCE

+
  SUBROUTINE h5premove_f(plid, name, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plid   ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to remove
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         !  0 on success and -1 on failure
+
+ +
+ +

h5premove_filter_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5premove_filter_f 
+
+

PURPOSE

+
  Delete one or more filters from the filter pipeline. 
+
+

INPUTS

+
  prp_id       - data creation or transfer property list 
+                 identifier
+  filter       - filter to be removed
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Quincey Koziol
+  January 27 2004
+
+

SOURCE

+
  SUBROUTINE h5premove_filter_f(prp_id, filter, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property list
+                                         ! identifier
+    INTEGER, INTENT(IN) :: filter        ! Filter to be removed
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_alignment_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_alignment_f 
+
+

PURPOSE

+
  Sets alignment properties of a file access property list. 
+
+

INPUTS

+
  prp_id       - file access property list identifier
+  threshold    - threshold value       
+  alignment    - alignment value
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pset_alignment_f(prp_id, threshold,  alignment, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id      ! Property list identifier 
+    INTEGER(HSIZE_T), INTENT(IN) :: threshold ! Threshold value
+    INTEGER(HSIZE_T), INTENT(IN) :: alignment ! alignment value
+    INTEGER, INTENT(OUT) :: hdferr            ! Error code
+                                              ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_alloc_time_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_alloc_time_f
+
+

PURPOSE

+
  Set space allocation time for dataset during creation.
+
+

INPUTS

+
  plist_id     - dataset creation property list identifier
+  flag         - allocation time flag:
+                   H5D_ALLOC_TIME_ERROR_F
+                   H5D_ALLOC_TIME_DEFAULT_F
+                   H5D_ALLOC_TIME_EARLY_F
+                   H5D_ALLOC_TIME_LATE_F
+                   H5D_ALLOC_TIME_INCR_F
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 4, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pset_alloc_time_f(plist_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id  ! Dataset creation property list identifier
+    INTEGER, INTENT(IN) :: flag             ! Allocation time flag:
+                                            !  H5D_ALLOC_TIME_ERROR_F
+                                            !  H5D_ALLOC_TIME_DEFAULT_F
+                                            !  H5D_ALLOC_TIME_EARLY_F
+                                            !  H5D_ALLOC_TIME_LATE_F
+                                            !  H5D_ALLOC_TIME_INCR_F
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+                                            ! 0 on success and -1 on failure
+
+ +
+ +

H5Pset_attr_creation_order_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pset_attr_creation_order_f 
+
+

PURPOSE

+
  Sets tracking and indexing of attribute creation order
+
+

INPUTS

+
  ocpl_id         - Object creation property list identifier
+  crt_order_flags - Flags specifying whether to track and index attribute creation order
+
+

OUTPUTS

+
  hdferr          - Error code         
+                     Success:  0
+                     Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5pset_attr_creation_order_f(ocpl_id, crt_order_flags , hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: ocpl_id   ! Object (dataset or group) creation property list identifier
+    INTEGER, INTENT(IN) :: crt_order_flags  ! Flags specifying whether to track and index attribute creation order
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+                                            ! 0 on success and -1 on failure
+
+ +
+ +

H5Pset_attr_phase_change_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pset_attr_phase_change_f 
+
+

PURPOSE

+
  Sets attribute storage phase change thresholds.
+
+

INPUTS

+
  ocpl_id - Object (dataset or group) creation property list identifier
+
+

OUTPUTS

+
  max_compact     - Maximum number of attributes to be stored in compact storage
+                    (Default: 8)
+  min_dense       - Minimum number of attributes to be stored in dense storage
+                    (Default: 6)
+  hdferr          - Error code         
+                     Success:  0
+                     Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: ocpl_id ! Object (dataset or group) creation property list identifier
+    INTEGER, INTENT(IN) :: max_compact    ! Maximum number of attributes to be stored in compact storage
+                                          !(Default: 8)
+    INTEGER, INTENT(IN) :: min_dense      ! Minimum number of attributes to be stored in dense storage
+                                          ! (Default: 6)
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_btree_ratios_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pset_btree_ratios_f 
+
+

PURPOSE

+
  Sets B-tree split ratios for a dataset transfer 
+  property list. 
+
+

INPUTS

+
  prp_id       - the dataset transfer property list 
+                 identifier 
+  left         - the B-tree split ratio for left-most nodes 
+  middle       - the B-tree split ratio for all other nodes
+  right        - the B-tree split ratio for right-most nodes
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+
+

SOURCE

+
  SUBROUTINE h5pset_btree_ratios_f(prp_id, left, middle, right, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+    REAL, INTENT(IN) :: left   ! The B-tree split ratio for left-most nodes.
+    REAL, INTENT(IN) :: middle ! The B-tree split ratio for all other nodes 
+    REAL, INTENT(IN) :: right  ! The B-tree split ratio for right-most 
+                               !  nodes and lone nodes. 
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code
+                                    ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_buffer_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_buffer_f 
+
+

PURPOSE

+
  Sets sixe for conversion buffer
+
+

INPUTS

+
  plist_id     - data transfer property list identifier
+  size         - buffer size 
+
+

OUTPUTS

+
  hdferr:      - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 2, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pset_buffer_f(plist_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! Data transfer property list identifier 
+    INTEGER(HSIZE_T), INTENT(IN) :: size   ! Buffer size in bytes; 
+                                           ! buffer is allocated and freed by 
+                                           ! the library.
+    INTEGER, INTENT(OUT)       :: hdferr   ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_cache_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pset_cache_f 
+
+

PURPOSE

+
  Sets the meta data cache and raw data chunk 
+  cache parameters
+
+

INPUTS

+
  prp_id       - file access property list identifier
+  mdc_nelmts   - number of elements (objects) in the meta 
+                 data cache 
+  rdcc_nelmts  - number of elements (objects) in the raw 
+                 data chunk cache 
+  rdcc_nbytes  - total size of the raw data chunk cache, in bytes 
+  rdcc_w0      - preemption policy (0 or 1)
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pset_cache_f(prp_id, mdc_nelmts,rdcc_nelmts, rdcc_nbytes, rdcc_w0, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(IN) :: mdc_nelmts    ! Number of elements (objects)
+                                         !  in the meta data cache
+    INTEGER(SIZE_T), INTENT(IN) :: rdcc_nelmts ! Number of elements (objects)
+                                               !  in the meta data cache
+    INTEGER(SIZE_T), INTENT(IN) :: rdcc_nbytes ! Total size of the raw data 
+                                               !  chunk cache, in bytes 
+    REAL, INTENT(IN) :: rdcc_w0                ! Preemption policy
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+                                               !  0 on success and -1 on failure
+
+ +
+ +

H5Pset_char_encoding_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pset_char_encoding_f
+
+

PURPOSE

+
  Sets the character encoding used to encode a string.
+
+

INPUTS

+
  plist_id - Property list identifier
+  encoding - Valid values for encoding are:
+               H5T_CSET_ASCII_F -> US ASCII
+               H5T_CSET_UTF8_F -> UTF-8 Unicode encoding
+
+

OUTPUTS

+
  hdferr   - Error code                
+               Success:  0
+               Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 3, 2008
+
+

SOURCE

+
  SUBROUTINE h5pset_char_encoding_f(plist_id, encoding, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! Property list identifier
+    INTEGER, INTENT(IN) :: encoding        ! String encoding character set:
+                                           !   H5T_CSET_ASCII_F -> US ASCII
+                                           !   H5T_CSET_UTF8_F  -> UTF-8 Unicode encoding
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

H5Pset_chunk_cache_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pset_chunk_cache_f
+
+

PURPOSE

+
  Set the number of objects in the meta data cache and the
+  maximum number of chunks and bytes in the raw data chunk cache.
+  Once set, these values will override the values in the file access
+  property list.  Each of these values can be individually unset
+  (or not set at all) by passing the macros:
+    H5D_CHUNK_CACHE_NSLOTS_DFLT_F,
+    H5D_CHUNK_CACHE_NBYTES_DFLT_F, and/or
+    H5D_CHUNK_CACHE_W0_DFLT_F
+    as appropriate.
+
+  The RDCC_W0 value should be between 0 and 1 inclusive and
+  indicates how much chunks that have been fully read or fully
+  written are favored for preemption.  A value of zero means
+  fully read or written chunks are treated no differently than
+  other chunks (the preemption is strictly LRU) while a value
+  of one means fully read chunks are always preempted before
+  other chunks.
+
+

INPUTS

+
  dapl_id          - Dataset access property list identifier.
+  rdcc_nslots      - The number of chunk slots in the raw data chunk cache for this dataset.
+  rdcc_nbytes      - The total size of the raw data chunk cache for this dataset.
+  rdcc_w0          - The chunk preemption policy for this dataset.
+
+

OUTPUTS

+
  hdferr           - Error code                
+                       Success:  0
+                       Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  April 13, 2009
+
+

HISTORY

+

SOURCE

+
  SUBROUTINE h5pset_chunk_cache_f(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dapl_id      ! Dataset access property list identifier.
+    INTEGER(SIZE_T), INTENT(IN) :: rdcc_nslots ! The number of chunk slots in the raw data 
+                                               ! chunk cache for this dataset.
+    INTEGER(SIZE_T), INTENT(IN) :: rdcc_nbytes ! The total size of the raw data chunk cache 
+                                               ! for this dataset.
+    REAL, INTENT(IN) :: rdcc_w0                ! The chunk preemption policy for this dataset.
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+                                               ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_chunk_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pset_chunk_f 
+
+

PURPOSE

+
  Sets the size of the chunks used to store 
+  a chunked layout dataset. 
+
+

INPUTS

+
  prp_id  - datatset creation property list identifier
+  ndims   - number of dimensions for each chunk
+  dims    - array with dimension sizes for each chunk
+
+

OUTPUTS

+
  hdferr  - error code         
+             Success:  0
+             Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
   Explicit Fortran interfaces were added for 
+   called C functions (it is needed for Windows
+   port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pset_chunk_f(prp_id, ndims, dims, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(IN) :: ndims         ! Number of chunk dimensions
+    INTEGER(HSIZE_T), DIMENSION(ndims), INTENT(IN) :: dims    
+                                         ! Array containing sizes of
+                                         ! chunk dimensions
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_copy_object_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_copy_object_f 
+
+

PURPOSE

+
  Sets properties to be used when an object is copied.
+
+

INPUTS

+
  ocp_plist_id - Object copy property list identifier
+  copy_options - Copy option(s) to be set
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 3, 2008
+
+

HISTORY

+

SOURCE

+
  SUBROUTINE h5pset_copy_object_f(ocp_plist_id, copy_options, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: ocp_plist_id ! Object copy property list identifier
+    INTEGER, INTENT(IN) :: copy_options ! Copy option(s) to be set, valid options are:
+                                        !   H5O_COPY_SHALLOW_HIERARCHY_F
+                                        !   H5O_COPY_EXPAND_SOFT_LINK_F
+                                        !   H5O_COPY_EXPAND_EXT_LINK_F
+                                        !   H5O_COPY_EXPAND_REFERENCE_F
+                                        !   H5O_COPY_WITHOUT_ATTR_FLAG_F
+    INTEGER, INTENT(OUT) :: hdferr      ! Error code
+                                        ! 0 on success and -1 on failure
+
+ +
+ +

H5Pset_create_inter_group_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pset_create_inter_group_f
+
+

PURPOSE

+
  Specifies in property list whether to create missing intermediate groups.
+
+

INPUTS

+
  lcpl_id            - Link creation property list identifier
+  crt_intermed_group - crt_intermed_group specifying whether 
+                       to create intermediate groups upon the creation 
+                       of an object
+
+

OUTPUTS

+
  hdferr             - Error code              
+                         Success:  0
+                         Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 22, 2008
+
+

HISTORY

+
 The long subroutine name (>31) on older f90 compilers causes problems
+          so had to shorten the name
+
+

SOURCE

+
  SUBROUTINE h5pset_create_inter_group_f(lcpl_id, crt_intermed_group, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: lcpl_id      ! Link creation property list identifier
+    INTEGER, INTENT(IN) :: crt_intermed_group  ! specifying whether to create intermediate groups
+                                               ! upon the creation of an object
+    INTEGER, INTENT(OUT) :: hdferr ! Error code
+                                   ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_data_transform_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_data_transform_f 
+
+

PURPOSE

+
  Sets a data transform expression.
+
+

INPUTS

+
  plist_id   - Identifier of the property list or class 
+  expression - Buffer to hold transform expression
+
+

OUTPUTS

+
  hdferr     - error code
+                 Success:  0
+                 Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 19, 2008
+
+

SOURCE

+
  SUBROUTINE h5pset_data_transform_f(plist_id, expression, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id     ! Identifier of the property list or class
+    CHARACTER(LEN=*), INTENT(IN) :: expression ! Buffer to hold transform expression
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+                                               ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_deflate_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pset_deflate_f 
+
+

PURPOSE

+
   Sets compression method and compression level. 
+
+

INPUTS

+
   prp_id  - property list identifier
+   level   - compression level
+
+

OUTPUTS

+
  hdferr  - error code         
+             Success:  0
+             Failure: -1
+
+

AUTHOR

+
       Elena Pourmal
+               August 12, 1999
+
+

HISTORY

+
       Explicit Fortran interfaces were added for 
+                       called C functions (it is needed for Windows
+                       port).  March 14, 2001
+               
+
+

SOURCE

+
  SUBROUTINE h5pset_deflate_f(prp_id, level, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(IN) :: level         ! Compression level 
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_edc_check_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_edc_check_f 
+
+

PURPOSE

+
  Enables/disables error detecting  
+
+

INPUTS

+
  prp_id       - dataset creation property list identifier
+  flag         - EDC flag; possible values:
+                   H5Z_DISABLE_EDC_F
+                   H5Z_ENABLE_EDC_F
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  March 13, 2003
+
+

SOURCE

+
  SUBROUTINE h5pset_edc_check_f(prp_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(IN) :: flag          ! Checksum filter flag
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_est_link_info_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_est_link_info_f 
+
+

PURPOSE

+
  Sets estimated number of links and length of link names in a group.
+
+

INPUTS

+
 gcpl_id         - Group creation property list identifier  
+ est_num_entries - Estimated number of links to be inserted into group
+ est_name_len    - Estimated average length of link names
+
+

OUTPUTS

+
  hdferr         - Error code
+                    Success:  0
+                    Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 21, 2008
+
+

SOURCE

+
  SUBROUTINE h5pset_est_link_info_f(gcpl_id, est_num_entries, est_name_len, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: gcpl_id  ! Group creation property list identifier  
+    INTEGER, INTENT(IN) :: est_num_entries ! Estimated number of links to be inserted into group
+    INTEGER, INTENT(IN) :: est_name_len    ! Estimated average length of link names
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_external_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pset_external_f 
+
+

PURPOSE

+
  Adds an external file to the list of external files. 
+
+

INPUTS

+
  prp_id       - dataset creation property list identifier
+  name         - name of external file
+  offset       - offset in bytes from the beginning of the 
+                 file to the location in the file
+                 where the data starts
+  bytes        - size of the external file data. 
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+
+

SOURCE

+
  SUBROUTINE h5pset_external_f(prp_id, name, offset,bytes, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name  ! Name of an external file
+    INTEGER, INTENT(IN) :: offset         ! Offset, in bytes, from the beginning 
+                                          !  of the file to the location in the file 
+                                          !  where the data starts.
+    INTEGER(HSIZE_T), INTENT(IN) :: bytes ! Number of bytes reserved in the 
+                                          !  file for the data
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_fapl_core_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pset_fapl_core_f 
+
+

PURPOSE

+
  Modifies the file access property list to use the 
+  H5FD_CORE driver. 
+
+

INPUTS

+
  prp_id           - file access property list identifier
+  increment        - size, in bytes, of memory increments 
+  backing_store    - boolean flag indicating whether to write 
+                     the file contents to disk when the file is closed. 
+
+

OUTPUTS

+
  hdferr           - error code                
+                       Success:  0
+                       Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pset_fapl_core_f(prp_id, increment, backing_store, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id     ! Property list identifier 
+    INTEGER(SIZE_T), INTENT(IN) :: increment ! File block size in bytes.
+    LOGICAL, INTENT(IN) :: backing_store ! Flag to indicate that
+                                         ! entire file contents are flushed to a file 
+                                         ! with the same name as this core file.
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_fapl_direct_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_fapl_direct_f
+
+

PURPOSE

+
  Sets up use of the direct I/O driver.
+
+

INPUTS

+
  fapl_id      - File access property list identifier
+  alignment    - Required memory alignment boundary
+  block_size   - File system block size
+  cbuf_size    - Copy buffer size
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 21, 2008
+
+

SOURCE

+
SUBROUTINE h5pset_fapl_direct_f(fapl_id, alignment, block_size, cbuf_size, hdferr)
+    IMPLICIT NONE  
+    INTEGER(HID_T), INTENT(IN) :: fapl_id     ! File access property list identifier
+    INTEGER(SIZE_T), INTENT(IN) :: alignment  ! Required memory alignment boundary!
+    INTEGER(SIZE_T), INTENT(IN) :: block_size ! File system block size
+    INTEGER(SIZE_T), INTENT(IN) :: cbuf_size  ! Copy buffer size
+    INTEGER, INTENT(OUT) :: hdferr            ! Error code
+                                              ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_fapl_multi_l

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_fapl_multi_l 
+
+

PURPOSE

+
  Sets up use of the multi-file driver. 
+
+

INPUTS

+
  prp_id       - file creation property list identifier
+  mem_map      - mapping array
+  memb_fapl    - property list for each memory usage type
+  memb_name    - names of member file
+  relax        - flag 
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  20 March 2003
+
+

SOURCE

+
  SUBROUTINE h5pset_fapl_multi_l(prp_id, memb_map, memb_fapl, memb_name, memb_addr, relax, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier 
+    INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_map ! Mapping array
+    INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_fapl ! Property list for each memory usage type
+    CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_name ! Names of member file
+    REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_addr 
+    LOGICAL, INTENT(IN) :: relax     ! Flag
+    INTEGER, INTENT(OUT) :: hdferr   ! Error code
+                                     ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_fapl_multi_s

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_fapl_multi_s 
+
+

PURPOSE

+
  Sets up use of the multi-file driver. 
+
+

INPUTS

+
  prp_id       - file creation property list identifier
+  relax        - flag 
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  31 March 2003
+
+

SOURCE

+
  SUBROUTINE h5pset_fapl_multi_s(prp_id, relax, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier 
+    LOGICAL, INTENT(IN) :: relax
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_fapl_sec2_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_fapl_sec2_f 
+
+

PURPOSE

+
  Sets the sec2 driver. 
+
+

INPUTS

+
  prp_id  - file access property list identifier
+
+

OUTPUTS

+
  hdferr  - error code         
+             Success:  0
+             Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pset_fapl_sec2_f (prp_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_fapl_split_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pset_fapl_split_f 
+
+

PURPOSE

+
  Emulates the old split file driver. 
+
+

INPUTS

+
  prp_id       - file access property list identifier
+  meta_ext     - name of the extension for the metafile 
+                 filename
+  meta_plist   - identifier of the meta file access property 
+                 list
+  raw_ext      - name extension for the raw file filename
+  raw_plist    - identifier of the raw file access property list
+
+

OUTPUTS

+
  hdferr       - error code            
+                   Success:  0
+                   Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pset_fapl_split_f(prp_id, meta_ext, meta_plist, raw_ext, raw_plist, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id     ! Property list identifier 
+    CHARACTER(LEN=*), INTENT(IN) :: meta_ext ! Name of the extension for
+                                             !  the metafile filename
+    INTEGER(HID_T), INTENT(IN) :: meta_plist ! Identifier of the meta file
+                                             !  access property list
+    CHARACTER(LEN=*), INTENT(IN) :: raw_ext  ! Name extension for the raw file filename
+    INTEGER(HID_T), INTENT(IN) :: raw_plist  ! Identifier of the raw file 
+                                             !  access property list
+    INTEGER, INTENT(OUT) :: hdferr           ! Error code
+                                             ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_fapl_stdio_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_fapl_stdio_f 
+
+

PURPOSE

+
  Sets the standard I/O driver. 
+
+

INPUTS

+
  prp_id  - file access property list identifier
+
+

OUTPUTS

+
  hdferr  - error code         
+             Success:  0
+             Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pset_fapl_stdio_f (prp_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_fclose_degree_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_fclose_degree_f 
+
+

PURPOSE

+
  Sets the degree for the file close behavior.
+
+

INPUTS

+
  fapl_id      - file access property list identifier
+  degree       - Possible values are:
+                   H5F_CLOSE_DEFAULT_F
+                   H5F_CLOSE_WEAK_F
+                   H5F_CLOSE_SEMI_F
+                   H5F_CLOSE_STRONG_F
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  September 26, 2002   
+
+

SOURCE

+
  SUBROUTINE h5pset_fclose_degree_f(fapl_id, degree, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: fapl_id ! File Access Property list identifier 
+    INTEGER, INTENT(IN) :: degree         ! Possible values are: 
+                                          !  H5F_CLOSE_DEFAULT_F
+                                          !  H5F_CLOSE_WEAK_F
+                                          !  H5F_CLOSE_SEMI_F
+                                          !  H5F_CLOSE_STRONG_F
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_fill_time_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_fill_time_f
+
+

PURPOSE

+
  Set fill value writing time for dataset
+
+

INPUTS

+
  plist_id     - dataset creation property list identifier
+  flag         - fill time flag:
+                   H5D_FILL_TIME_ERROR_F
+                   H5D_FILL_TIME_ALLOC_F
+                   H5D_FILL_TIME_NEVER_F
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 4, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pset_fill_time_f(plist_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id  ! Dataset creation property list identifier
+    INTEGER, INTENT(IN) :: flag             ! Fill time flag:
+                                            !  H5D_FILL_TIME_ERROR_F
+                                            !  H5D_FILL_TIME_ALLOC_F
+                                            !  H5D_FILL_TIME_NEVER_F
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+                                            ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_filter_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_filter_f 
+
+

PURPOSE

+
  Adds a filter to the filter pipeline. 
+
+

INPUTS

+
  prp_id       - data creation or transfer property list 
+                 identifier
+  filter       - filter to be added to the pipeline 
+  flags        - bit vector specifying certain general
+                 properties of the filter
+  cd_nelmts    - number of elements in cd_values
+  cd_values    - auxiliary data for the filter
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  February, 2003
+
+

SOURCE

+
  SUBROUTINE h5pset_filter_f(prp_id, filter, flags, cd_nelmts, cd_values,  hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(IN) :: filter        ! Filter to be added to the pipeline.
+    INTEGER, INTENT(IN) :: flags         ! Bit vector specifying certain general
+                                       !  properties of the filter.
+    INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts       ! Number of elements in cd_values.
+    INTEGER, DIMENSION(*), INTENT(IN) :: cd_values ! Auxiliary data for the filter.
+    INTEGER, INTENT(OUT) :: hdferr                 ! Error code
+                                                 ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_fletcher32_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_fletcher32_f 
+
+

PURPOSE

+
  Sets Fletcher32 checksum of EDC for a dataset creation 
+  property list.
+
+

INPUTS

+
  prp_id       - dataset creation property list identifier
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  March 13, 2003
+
+

SOURCE

+
  SUBROUTINE h5pset_fletcher32_f(prp_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_gc_references_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pset_gc_references_f 
+
+

PURPOSE

+
  Sets garbage collecting references flag. 
+
+

INPUTS

+
  prp_id       - file access property list identifier
+  gc_reference - flag for stting garbage collection on 
+                 and off (1 or 0)
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pset_gc_references_f (prp_id, gc_reference, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(IN) :: gc_reference  ! The flag for garbage collecting
+                                         !  references for the file
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_hyper_vector_size_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_hyper_vector_size_f 
+
+

PURPOSE

+
  Set the number of "I/O" vectors (vector size)
+
+

INPUTS

+
  plist_id     - dataset transfer property list identifier
+  size         - vector size
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 7, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pset_hyper_vector_size_f(plist_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset transfer property list identifier 
+    INTEGER(SIZE_T), INTENT(IN) :: size    ! Vector size
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_istore_k_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_istore_k_f 
+
+

PURPOSE

+
  Sets the size of the parameter used to control the 
+  B-trees for indexing chunked datasets
+
+

INPUTS

+
  prp_id       - file creation property list identifier
+  ik           - 1/2 rank of chunked storage B-tree
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pset_istore_k_f (prp_id, ik, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(IN) :: ik            ! 1/2 rank of chunked storage B-tree
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_layout_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pset_layout_f 
+
+

PURPOSE

+
  Sets the type of storage used store the raw data 
+  for a dataset. 
+
+

INPUTS

+
  prp_id       - data creation property list identifier
+  layout       - type of storage layout for raw data
+                 possible values are:
+                   H5D_COMPACT_F
+                   H5D_CONTIGUOUS_F
+                   H5D_CHUNKED_F
+
+

OUTPUTS

+
  hdferr      - error code             
+                 Success:  0
+                 Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+
+

SOURCE

+
  SUBROUTINE h5pset_layout_f (prp_id, layout, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(IN) :: layout        ! Type of storage layout for raw data
+                                         ! possible values are:
+                                         !   H5D_COMPACT_F
+                                         !   H5D_CONTIGUOUS_F
+                                         !   H5D_CHUNKED_F
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

H5Pset_libver_bounds_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
             H5Pset_libver_bounds_f
+
+

PURPOSE

+
    Sets bounds on library versions, and indirectly format versions, to be used when creating objects.
+
+

INPUTS

+
  fapl_id - File access property list identifier
+  low     - The earliest version of the library that will be used for writing objects.
+  high    - The latest version of the library that will be used for writing objects.
+
+

OUTPUTS

+
  hdferr  - error code         
+             Success:  0
+             Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 18, 2008
+
+

SOURCE

+
  SUBROUTINE h5pset_libver_bounds_f(fapl_id, low, high, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: fapl_id ! File access property list identifier
+    INTEGER, INTENT(IN) :: low   ! The earliest version of the library that will be used for writing objects.
+                                 ! Currently, low must be one of two pre-defined values:
+                                 !            HDF_LIBVER_EARLIEST_F
+                                 !            HDF_LIBVER_LATEST_F
+    INTEGER, INTENT(IN) :: high  ! The latest version of the library that will be used for writing objects.
+                                 ! Currently, low must set to the pre-defined value:
+                                 !            HDF_LIBVER_LATEST_F
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code
+                                    ! 0 on success and -1 on failure
+
+ +
+ +

H5Pset_link_creation_order_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pset_link_creation_order_f 
+
+

PURPOSE

+
    Sets creation order tracking and indexing for links in a group.
+
+

INPUTS

+
  gcpl_id         - Group creation property list identifier
+  crt_order_flags - Creation order flag(s)
+
+

OUTPUTS

+
  hdferr           - Error code                
+                       Success:  0
+                       Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 18, 2008
+
+

SOURCE

+
  SUBROUTINE h5pset_link_creation_order_f(gcpl_id, crt_order_flags, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: gcpl_id  ! File access property list identifier
+    INTEGER, INTENT(IN) :: crt_order_flags ! Creation order flag(s)
+    INTEGER, INTENT(OUT) :: hdferr   ! Error code
+                                     ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_link_phase_change_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_link_phase_change_f
+
+

PURPOSE

+
  Sets the parameters for conversion between compact and dense groups.
+
+

INPUTS

+
  gcpl_id         - Group creation property list identifier  
+  max_compact     - Maximum number of attributes to be stored in compact storage
+  min_dense       - Minimum number of attributes to be stored in dense storage
+
+

OUTPUTS

+
  hdferr          - error code         
+                     Success:  0
+                     Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 21, 2008
+
+

SOURCE

+
SUBROUTINE h5pset_link_phase_change_f(gcpl_id, max_compact, min_dense, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier
+    INTEGER, INTENT(IN) :: max_compact    ! Maximum number of attributes to be stored in compact storage
+    INTEGER, INTENT(IN) :: min_dense      ! Minimum number of attributes to be stored in dense storage
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

H5Pset_local_heap_size_hint_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pset_local_heap_size_hint_f 
+
+

PURPOSE

+
  Sets the local heap size hint for original-style groups.
+
+

INPUTS

+
  gcpl_id   - Group creation property list identifier
+  size_hint - Hint for size of local heap
+
+

OUTPUTS

+
  hdferr    - Error code
+               Success:  0
+               Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 21, 2008
+
+

SOURCE

+
  SUBROUTINE h5pset_local_heap_size_hint_f(gcpl_id, size_hint, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: gcpl_id    ! Group creation property list identifier
+    INTEGER(SIZE_T), INTENT(IN) :: size_hint ! Hint for size of local heap
+    INTEGER, INTENT(OUT) :: hdferr           ! Error code
+                                             ! 0 on success and -1 on failure
+
+ +
+ +

H5Pset_nbit_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pset_nbit_f 
+
+

PURPOSE

+
  Sets up the use of the N-Bit filter.
+
+

INPUTS

+
  plist_id - Dataset creation property list identifier.
+
+

OUTPUTS

+
  hdferr   - Error code
+              Success:  0
+              Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 21, 2008
+
+

HISTORY

+

SOURCE

+
  SUBROUTINE h5pset_nbit_f(plist_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property list identifier
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_nlinks_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_nlinks_f 
+
+

PURPOSE

+
  Sets maximum number of soft or user-defined link traversals.
+
+

INPUTS

+
  lapl_id - File access property list identifier
+   nlinks - Maximum number of links to traverse
+
+

OUTPUTS

+
  hdferr  - Error code
+             Success:  0
+             Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 24, 2008
+
+

HISTORY

+

SOURCE

+
  SUBROUTINE h5pset_nlinks_f(lapl_id, nlinks, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: lapl_id ! File access property list identifier
+    INTEGER(SIZE_T), INTENT(IN) :: nlinks ! Maximum number of links to traverse
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code   
+                                          ! 0 on success and -1 on failure
+
+ +
+ +

H5Pset_obj_track_times_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pset_obj_track_times_f 
+
+

PURPOSE

+
  Set whether the birth, access, modification & change times for
+  an object are stored.
+
+  Birth time is the time the object was created.  Access time is
+  the last time that metadata or raw data was read from this
+  object.  Modification time is the last time the data for
+  this object was changed (either writing raw data to a dataset
+  or inserting/modifying/deleting a link in a group).  Change
+  time is the last time the metadata for this object was written
+  (adding/modifying/deleting an attribute on an object, extending
+  the size of a dataset, etc).
+
+   If these times are not tracked, they will be reported as
+   12:00 AM UDT, Jan. 1, 1970 (i.e. 0 seconds past the UNIX
+   epoch) when queried.
+
+

INPUTS

+
  plist_id     - property list id
+  flag         - object timestamp setting
+                 .TRUE.,.FALSE.
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 22, 2008
+       
+
+

SOURCE

+
  SUBROUTINE h5pset_obj_track_times_f(plist_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property
+                                           ! list identifier
+    LOGICAL, INTENT(IN) :: flag    ! Object timestamp setting
+    INTEGER, INTENT(OUT) :: hdferr ! Error code
+                                   ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_preserve_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
   h5pset_preserve_f 
+
+

PURPOSE

+
  Sets the dataset transfer property list status to 
+  TRUE or FALSE for initializing compound datatype
+  members during write/read operations.
+
+

INPUTS

+
  prp_id       - property list identifier
+  flag         - status flag
+
+

OUTPUTS

+
  hdferr       - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  NONE
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+                       
+  Datatype of the flag parameter is changed from 
+  INTEGER to LOGICAL June 4, 2003
+
+

SOURCE

+
  SUBROUTINE h5pset_preserve_f(prp_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    LOGICAL, INTENT(IN) ::  flag         ! TRUE/FALSE flag to set the dataset
+                                         ! transfer property for partila writing/reading
+                                         ! compound datatype
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_scaleoffset_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_scaleoffset_f 
+
+

PURPOSE

+
  Sets up the use of the Scale-Offset filter.
+
+

INPUTS

+
  plist_id     - Dataset creation property list identifier.
+  scale_type   - Flag indicating compression method.
+  scale_factor - Parameter related to scale.
+
+

OUTPUTS

+
  hdferr        - Error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 21, 2008
+
+

HISTORY

+

SOURCE

+
  SUBROUTINE h5pset_scaleoffset_f(plist_id, scale_type, scale_factor, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property list identifier
+    INTEGER, INTENT(IN) :: scale_type      ! Flag indicating compression method.
+    INTEGER, INTENT(IN) :: scale_factor    ! Parameter related to scale.
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

H5Pset_shared_mesg_index_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pset_shared_mesg_index_f
+
+

PURPOSE

+
  Configures the specified shared object header message index
+
+

INPUTS

+
  fcpl_id         - File creation property list identifier.
+  index_num       - Index being configured.
+  mesg_type_flags - Types of messages that should be stored in this index.
+  min_mesg_size   - Minimum message size.
+
+

OUTPUTS

+
  hdferr  - error code         
+             Success:  0
+             Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5pset_shared_mesg_index_f(fcpl_id, index_num, mesg_type_flags, min_mesg_size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: fcpl_id  ! file creation property list
+    INTEGER, INTENT(IN) :: index_num       ! Index being configured.
+    INTEGER, INTENT(IN) :: mesg_type_flags ! Types of messages that should be stored in this index.
+    INTEGER, INTENT(IN) :: min_mesg_size   ! Minimum message size.
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

H5Pset_shared_mesg_nindexes_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  H5Pset_shared_mesg_nindexes_f 
+
+

PURPOSE

+
  Sets number of shared object header message indexes 
+
+

INPUTS

+
  plist_id - file creation property list
+  nindexes - Number of shared object header message indexes to be available in files created with this property list
+
+

OUTPUTS

+
  hdferr  - error code         
+             Success:  0
+             Failure: -1   
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  January, 2008
+
+

SOURCE

+
  SUBROUTINE h5pset_shared_mesg_nindexes_f( plist_id, nindexes, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! File creation property list
+    INTEGER, INTENT(IN) :: nindexes  ! Number of shared object header message indexes 
+                                     !  available in files created WITH this property list
+    INTEGER, INTENT(OUT) :: hdferr   ! Error code
+                                     ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_shuffle_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_shuffle_f 
+
+

PURPOSE

+
  Sets shuffling filter
+
+

INPUTS

+
  prp_id       - dataset creation property list identifier
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  March 12, 2003
+
+

SOURCE

+
  SUBROUTINE h5pset_shuffle_f(prp_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_sieve_buf_size_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_sieve_buf_size_f 
+
+

PURPOSE

+
  Sets the maximum size of the data sieve buffer
+
+

INPUTS

+
  plist_id     - file access property list identifier
+  size         - sieve buffer size
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 7, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pset_sieve_buf_size_f(plist_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier 
+    INTEGER(SIZE_T), INTENT(IN) :: size    ! Buffer size in bytes; 
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_sizes_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_sizes_f 
+
+

PURPOSE

+
  Sets the byte size of the offsets and lengths used 
+  to address objects in an HDF5 file.
+
+

INPUTS

+
  prp_id       - file creation property list identifier
+  sizeof_addr  - size of an object offset in bytes 
+  sizeof_size  - size of an object length in bytes
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pset_sizes_f (prp_id, sizeof_addr, sizeof_size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id       ! Property list identifier 
+    INTEGER(SIZE_T), INTENT(IN) :: sizeof_addr ! Size of an object 
+                                               !  offset in bytes 
+    INTEGER(SIZE_T), INTENT(IN) :: sizeof_size ! Size of an object 
+                                               !  length in bytes 
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+                                               ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_small_data_block_size_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_small_data_block_size_f 
+
+

PURPOSE

+
  Sets the minimum size of "small" raw data block
+
+

INPUTS

+
  plist_id     - file access property list identifier
+  size         - small raw data block size
+
+

OUTPUTS

+
  hdferr       - error code            
+                  Success:  0
+                  Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  October 7, 2002      
+
+

SOURCE

+
  SUBROUTINE h5pset_small_data_block_size_f(plist_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier 
+    INTEGER(HSIZE_T), INTENT(IN) :: size   ! Small raw data block size
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+                                           ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_sym_k_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_sym_k_f 
+
+

PURPOSE

+
  Sets the size of parameters used to control the 
+
+

INPUTS

+
  prp_id  - file creation property list identifier
+  ik      - symbol table tree rank
+  lk      - symbol table node size
+
+

OUTPUTS

+
  hdferr  - error code         
+             Success:  0
+             Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+               
+
+

SOURCE

+
  SUBROUTINE h5pset_sym_k_f (prp_id, ik, lk, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER, INTENT(IN) :: ik            ! Symbol table tree rank 
+    INTEGER, INTENT(IN) :: lk            ! Symbol table node size 
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_szip_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_szip_f 
+
+

PURPOSE

+
  Sets up use of szip compression
+
+

INPUTS

+
  prp_id           - dataset creation property list identifier
+  options_mask     - A bit-mask conveying the desired SZIP options.
+                     Current valid values in Fortran are:
+                        H5_SZIP_EC_OM_F
+                        H5_SZIP_NN_OM_F
+  pixels_per_block - szip parameters
+
+

OUTPUTS

+
  hdferr           - error code                
+                       Success:  0
+                       Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  April 10 2003
+
+

SOURCE

+
  SUBROUTINE h5pset_szip_f(prp_id, options_mask, pixels_per_block, hdferr) 
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property 
+                                         ! list identifier 
+    INTEGER, INTENT(IN) :: options_mask  ! A bit-mask conveying the desired
+                                         ! SZIP options
+                                         ! Current valid values in Fortran are:
+                                         !    H5_SZIP_EC_OM_F
+                                         !    H5_SZIP_NN_OM_F
+    INTEGER, INTENT(IN) :: pixels_per_block ! The number of pixels or data elements 
+                                            ! in each data block
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5pset_userblock_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5pset_userblock_f 
+
+

PURPOSE

+
   Sets user block size
+
+

INPUTS

+
   prp_id - file creation property list to modify
+   size   - size of the user-block in bytes
+
+

OUTPUTS

+
  hdferr  - error code         
+             Success:  0
+             Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999      
+
+

HISTORY

+
  Explicit Fortran interfaces were added for 
+  called C functions (it is needed for Windows
+  port).  March 14, 2001 
+
+

SOURCE

+
  SUBROUTINE h5pset_userblock_f (prp_id, size, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier 
+    INTEGER(HSIZE_T), INTENT(IN) :: size ! Size of the user-block in bytes 
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5punregister_f

+ +

[ Top ] [ Subroutines ]

+

NAME

+
  h5punregister_f 
+
+

PURPOSE

+
  Removes a property from a property list class. 
+
+

INPUTS

+
  class        - Property list class identifier
+  name         - name of the property to remove
+
+

OUTPUTS

+
  hdferr:      - error code
+                  Success: 0 
+                  Failure: -1   
+
+

AUTHOR

+
  Elena Pourmal
+  October 9, 2002      
+
+

SOURCE

+
  SUBROUTINE h5punregister_f(class, name, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: class  ! property list class identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name ! name of property to remove
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+                                         ! 0 on success and -1 on failure
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Rf_c.html b/fortran/doc/DevelGuide/src/H5Rf_c.html new file mode 100644 index 0000000..bba197e --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Rf_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5Rf.c + + + + + +
+
+ +

H5Rf

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for H5R Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Rff_F03_f90.html b/fortran/doc/DevelGuide/src/H5Rff_F03_f90.html new file mode 100644 index 0000000..3202540 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Rff_F03_f90.html @@ -0,0 +1,492 @@ + + + + + + + +./src/H5Rff_F03.f90 + + + + + +
+
+ +

H5R (F03)

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5R_PROVISIONAL
+
+

FILE

+
  fortran/src/H5Rff_F03.f90
+
+

PURPOSE

+
  This file contains Fortran 90 and Fortran 2003 interfaces for H5R functions.
+  It contains the same functions as H5Rff_DEPRECIATE.f90 but includes the
+  Fortran 2003 functions and the interface listings. This file will be compiled
+  instead of H5Rff_DEPRECIATE.f90 if Fortran 2003 functions are enabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5R function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5rcreate_object_f

+ +

[ Top ] [ H5R (F03) ] [ Subroutines ]

+

NAME

+
  h5rcreate_object_f
+
+

PURPOSE

+
  Creates reference to the object
+
+

INPUTS

+
  loc_id    - location identifier
+  name      - name of the object at the specified location
+
+

OUTPUTS

+
  ref       - reference to the specified object
+  hdferr:   - error code
+               Success:  0
+               Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

NOTES

+
  This is a module procedure for the h5rcreate_f subroutine.
+
+

SOURCE

+
  SUBROUTINE h5rcreate_object_f(loc_id, name, ref, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! Location identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the object at location specified
+                                           ! by loc_id identifier
+    TYPE(hobj_ref_t_f), INTENT(INOUT), TARGET :: ref   ! Object reference
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5rcreate_ptr_f

+ +

[ Top ] [ H5R (F03) ] [ Subroutines ]

+

NAME

+
  h5rcreate_ptr_f
+
+

PURPOSE

+
  Creates a reference.
+
+

INPUTS

+
  loc_id     - location identifier
+  name       - name of the dataset at the specified location
+  ref_type   - type of reference:
+                H5R_OBJECT
+                H5T_STD_REF_DSETREG
+
+

OUTPUTS

+
  ref        - reference created by the function call.
+  hdferr     - error code
+                  Success:  0
+                  Failure: -1
+ OPTIONAL
+  space_id   - dataspace identifier that describes selected region
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  June 20, 2008
+
+

NOTES

+
  This is a module procedure for the h5rcreate_f
+  subroutine where the output is a pointer.
+
+

SOURCE

+
  SUBROUTINE h5rcreate_ptr_f(loc_id, name, ref_type, ref, hdferr, space_id)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id     ! Location identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name     ! Name of the dataset at location specified
+                                             ! by loc_id identifier
+    INTEGER, INTENT(IN) :: ref_type          ! type of reference
+    TYPE(C_PTR), INTENT(INOUT) :: ref        ! Reference created by the function call
+    INTEGER, INTENT(OUT) :: hdferr           ! Error code
+    INTEGER(HID_T), INTENT(IN), OPTIONAL :: space_id ! Dataset's dataspace identifier
+
+ +
+ +

h5rcreate_region_f

+ +

[ Top ] [ H5R (F03) ] [ Subroutines ]

+

NAME

+
  h5rcreate_region_f
+
+

PURPOSE

+
  Creates reference to the dataset region
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - name of the dataset at the specified location
+  space_id      - dataspace identifier that describes selected region
+
+

OUTPUTS

+
  ref           - reference to the dataset region
+  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

NOTES

+
  This is a module procedure for the h5rcreate_f subroutine.
+
+

SOURCE

+
  SUBROUTINE h5rcreate_region_f(loc_id, name, space_id, ref, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! Location identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the dataset at location specified
+                                           ! by loc_id identifier
+    INTEGER(HID_T), INTENT(IN) :: space_id ! Dataset's dataspace identifier
+    TYPE(hdset_reg_ref_t_f), INTENT(INOUT), TARGET :: ref ! Dataset region reference
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5rdereference_object_f

+ +

[ Top ] [ H5R (F03) ] [ Subroutines ]

+

NAME

+
  h5rdereference_object_f
+
+

PURPOSE

+
  Opens the HDF5 object referenced
+
+

INPUTS

+
  dset_id  - identifier of the dataset containing
+             reference
+  ref      - reference to open
+
+

OUTPUTS

+
  obj_id   - object_identifier
+  hdferr:  - error code
+              Success:  0
+              Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

NOTES

+
  This is a module procedure for the h5rdereference_f subroutine.
+
+

SOURCE

+
  SUBROUTINE h5rdereference_object_f(obj_id, ref, ref_obj_id, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id          ! Dataset identifier
+    TYPE(hobj_ref_t_f), INTENT(IN), TARGET :: ref ! Object reference
+    INTEGER(HID_T), INTENT(OUT) :: ref_obj_id     ! Object identifier
+    INTEGER, INTENT(OUT) :: hdferr                ! Error code
+
+ +
+ +

h5rdereference_ptr_f

+ +

[ Top ] [ H5R (F03) ] [ Subroutines ]

+

NAME

+
  h5rdereference_ptr_f
+
+

PURPOSE

+
  Opens the HDF5 object referenced.
+
+

INPUTS

+
  obj_id     - valid identifier for the file containing the
+               referenced object or any object in that file.
+  ref_type   - the reference type of ref.
+  ref        - Reference to open.
+
+

OUTPUTS

+
  ref_obj_id - identifier of referenced object
+  hdferr     - error code
+                Success:  0
+                Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  June 20, 2008
+
+

NOTES

+
  This is a module procedure for the h5rdereference_f
+  subroutine using pointers.
+
+

SOURCE

+
  SUBROUTINE h5rdereference_ptr_f(obj_id, ref_type, ref, ref_obj_id, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id  ! Valid identifier for the file containing the
+                                          !  referenced object or any object in that file.
+    INTEGER, INTENT(IN) :: ref_type       ! The reference type of ref.
+    TYPE(C_PTR), INTENT(IN) :: ref        ! Object reference
+    INTEGER(HID_T), INTENT(OUT) :: ref_obj_id
+                                          ! Identifier of referenced object
+    INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5rdereference_region_f

+ +

[ Top ] [ H5R (F03) ] [ Subroutines ]

+

NAME

+
  h5rdereference_region_f
+
+

PURPOSE

+
  Opens the dataset region
+
+

INPUTS

+
  dset_id       - identifier of the dataset containing
+                  reference to teh regions
+  ref           - reference to open
+
+

OUTPUTS

+
  obj_id        - dataspace identifier
+  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

NOTES

+
  This is a module procedure for the h5rdereference_f subroutine.
+
+

SOURCE

+
  SUBROUTINE h5rdereference_region_f(obj_id, ref, ref_obj_id, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id   ! Dataset identifier
+    TYPE(hdset_reg_ref_t_f), INTENT(IN), TARGET :: ref   ! Object reference
+    INTEGER(HID_T), INTENT(OUT) :: ref_obj_id  ! Dataspace identifier
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5rget_name_object_f

+ +

[ Top ] [ H5R (F03) ] [ Subroutines ]

+

NAME

+
  h5rget_name_object_f
+
+

PURPOSE

+
  Retrieves a name of a referenced object.
+
+

INPUTS

+
  loc_id    - Identifier for the dataset containing the reference or for the group that dataset is in.
+  ref       - An object or dataset region reference.
+
+

OUTPUTS

+
  name      - A name associated with the referenced object or dataset region.
+
+  hdferr:   - error code
+               Success:  0
+               Failure: -1
+
+

OPTIONAL PARAMETERS

+
  size     - The size of the name buffer.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 28, 2008
+
+ SOURCES
+ or for the group that dataset is in.
+ returning 0 (zero) if no name is associated
+ with the identifier
+
+ +
+ +

h5rget_name_ptr_f

+ +

[ Top ] [ H5R (F03) ] [ Subroutines ]

+

NAME

+
  h5rget_name_ptr_f
+
+

PURPOSE

+
  Retrieves a name of a referenced object.
+
+

INPUTS

+
  loc_id   - Identifier for the dataset containing the reference or
+             for the group that dataset is in.
+  ref_type - Type of reference.
+  ref      - An object or dataset region reference.
+
+

OUTPUTS

+
  name     - A name associated with the referenced object or dataset ptr.
+
+  hdferr   - error code
+               Success:  0
+               Failure: -1
+
+

OPTIONAL PARAMETERS

+
   size   - The size of the name buffer.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 28, 2008
+
+

SOURCE

+
  SUBROUTINE h5rget_name_ptr_f(loc_id, ref_type, ref, name, hdferr, size)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! Identifier for the dataset containing the reference
+                                           !  or for the group that dataset is in.
+    INTEGER, INTENT(IN) :: ref_type ! Type of reference.
+    TYPE(C_PTR), INTENT(IN) :: ref  ! An object or dataset region reference.
+    CHARACTER(LEN=*), INTENT(OUT) :: name  ! A name associated with the referenced object or dataset ptr.
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+    INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size   ! The size of the name buffer,
+                                                     ! returning 0 (zero) if no name is associated
+                                                     ! with the identifier
+
+ +
+ +

h5rget_name_region_f

+ +

[ Top ] [ H5R (F03) ] [ Subroutines ]

+

NAME

+
  h5rget_name_region_f
+
+

PURPOSE

+
  Retrieves a name of a dataset region.
+
+

INPUTS

+
  loc_id  - Identifier for the dataset containing the reference or
+            for the group that dataset is in.
+  ref     - An object or dataset region reference.
+
+

OUTPUTS

+
  name    - A name associated with the referenced object or dataset region.
+  hdferr  - error code
+              Success:  0
+              Failure: -1
+
+

OPTIONAL PARAMETERS

+
  size    - The size of the name buffer.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 28, 2008
+
+

SOURCE

+
  SUBROUTINE h5rget_name_region_f(loc_id, ref, name, hdferr, size)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! Identifier for the dataset containing the reference
+                                           ! or for the group that dataset is in.
+    TYPE(hdset_reg_ref_t_f), INTENT(IN), TARGET :: ref ! Object reference
+    INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size     ! The size of the name buffer,
+                                                       ! returning 0 (zero) if no name is associated with the identifier
+    CHARACTER(LEN=*), INTENT(OUT) :: name  ! A name associated with the referenced object or dataset region.
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5rget_obj_type_f

+ +

[ Top ] [ H5R (F03) ] [ Subroutines ]

+

NAME

+
  h5rget_obj_type_f
+
+

PURPOSE

+
  Retrieves the type of object that an object reference points to.
+
+

INPUTS

+
  loc_id   - Identifier for the dataset containing the reference or
+             for the group that dataset is in.
+  ref_type - Type of reference to query.
+  ref      - Reference to query.
+
+

OUTPUTS

+
  obj_type - Type of referenced object. 
+               H5G_UNKNOWN_F (-1)
+               H5G_LINK_F      0
+               H5G_GROUP_F     1
+               H5G_DATASET_F   2
+               H5G_TYPE_F      3
+              
+  hdferr   - error code
+               Success:  0
+               Failure: -1
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  Decemeber 17, 2008
+
+

SOURCE

+
  SUBROUTINE h5rget_obj_type_f(loc_id, ref_type, ref, obj_type, hdferr)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id
+    INTEGER, INTENT(IN) :: ref_type
+    TYPE(C_PTR), INTENT(IN) :: ref
+    INTEGER, INTENT(OUT) :: obj_type
+    INTEGER, INTENT(OUT) :: hdferr
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Rff_F90_f90.html b/fortran/doc/DevelGuide/src/H5Rff_F90_f90.html new file mode 100644 index 0000000..7d20d0c --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Rff_F90_f90.html @@ -0,0 +1,305 @@ + + + + + + + +./src/H5Rff_F90.f90 + + + + + +
+
+ +

H5R (F90)

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5R_PROVISIONAL
+
+

FILE

+
  fortran/src/H5Rff_F90.f90
+
+

PURPOSE

+
  This file contains Fortran 90 interfaces for H5R functions. It contains
+  the same functions as H5Rff_F03.f90 but excludes the Fortran 2003 functions
+  and the interface listings. This file will be compiled instead of H5Rff_F03.f90
+  if Fortran 2003 functions are not enabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5R function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5rcreate_object_f

+ +

[ Top ] [ H5R (F90) ] [ Subroutines ]

+

NAME

+
  h5rcreate_object_f
+
+

PURPOSE

+
  Creates reference to the object
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - name of the object at the specified location
+
+

OUTPUTS

+
  ref           - reference to the specified object
+  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

NOTES

+
  This is a module procedure for the h5rcreate_f subroutine.
+
+

SOURCE

+
  SUBROUTINE h5rcreate_object_f(loc_id, name, ref, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! Location identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the object at location specified
+                                           ! by loc_id identifier
+    TYPE(hobj_ref_t_f), INTENT(OUT) :: ref ! Object reference
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5rcreate_region_f

+ +

[ Top ] [ H5R (F90) ] [ Subroutines ]

+

NAME

+
  h5rcreate_region_f
+
+

PURPOSE

+
  Creates reference to the dataset region
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - name of the dataset at the specified location
+  space_id      - dataspace identifier that describes selected region
+
+

OUTPUTS

+
  ref           - reference to the dataset region
+  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

NOTES

+
  This is a module procedure for the h5rcreate_f subroutine.
+
+

SOURCE

+
  SUBROUTINE h5rcreate_region_f(loc_id, name, space_id, ref, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! Location identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the dataset at location specified
+                                           ! by loc_id identifier
+    INTEGER(HID_T), INTENT(IN) :: space_id ! Dataset's dataspace identifier
+    TYPE(hdset_reg_ref_t_f), INTENT(OUT) :: ref ! Dataset region reference
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5rdereference_object_f

+ +

[ Top ] [ H5R (F90) ] [ Subroutines ]

+

NAME

+
  h5rdereference_object_f
+
+

PURPOSE

+
  Opens the HDF5 object referenced
+
+

INPUTS

+
  dset_id  - identifier of the dataset containing reference
+  ref      - reference to open
+
+

OUTPUTS

+
  obj_id   - object_identifier
+  hdferr   - error code
+              Success:  0
+              Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

NOTES

+
  This is a module procedure for the h5rdereference_f subroutine.
+
+

SOURCE

+
  SUBROUTINE h5rdereference_object_f(dset_id, ref, obj_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dset_id   ! Dataset identifier
+    TYPE(hobj_ref_t_f), INTENT(IN) :: ref   ! Object reference
+    INTEGER(HID_T), INTENT(OUT) :: obj_id   ! Object identifier
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5rdereference_region_f

+ +

[ Top ] [ H5R (F90) ] [ Subroutines ]

+

NAME

+
  h5rdereference_region_f
+
+

PURPOSE

+
  Opens the dataset region
+
+

INPUTS

+
  dset_id       - identifier of the dataset containing
+                  reference to teh regions
+  ref           - reference to open
+
+

OUTPUTS

+
  obj_id        - dataspace identifier
+  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

NOTES

+
  This is a module procedure for the h5rdereference_f subroutine.
+
+

SOURCE

+
  SUBROUTINE h5rdereference_region_f(dset_id, ref, obj_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dset_id      ! Dataset identifier
+    TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Object reference
+    INTEGER(HID_T), INTENT(OUT) :: obj_id   ! Dataspace identifier
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5rget_name_object_f

+ +

[ Top ] [ H5R (F90) ] [ Subroutines ]

+

NAME

+
  h5rget_name_object_f
+
+

PURPOSE

+
  Retrieves a name of a referenced object.
+
+

INPUTS

+
  loc_id  - Identifier for the dataset containing the reference or for the group that dataset is in.
+  ref     - An object or dataset region reference.
+
+

OUTPUTS

+
  name    - A name associated with the referenced object or dataset region.
+
+  hdferr  - error code
+             Success:  0
+             Failure: -1
+
+

OPTIONAL PARAMETERS

+
  size    - The size of the name buffer.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 28, 2008
+
+ SOURCES
+ or for the group that dataset is in.
+ returning 0 (zero) if no name is associated with the identifier
+
+ +
+ +

h5rget_name_region_f

+ +

[ Top ] [ H5R (F90) ] [ Subroutines ]

+

NAME

+
  h5rget_name_region_f
+
+

PURPOSE

+
  Retrieves a name of a dataset region.
+
+

INPUTS

+
  loc_id        - Identifier for the dataset containing the reference or
+                  for the group that dataset is in.
+  ref           - An object or dataset region reference.
+
+

OUTPUTS

+
  name          - A name associated with the referenced object or dataset region.
+  hdferr        - error code
+                   Success:  0
+                   Failure: -1
+
+

OPTIONAL PARAMETERS

+
  size          - The size of the name buffer.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 28, 2008
+
+

SOURCE

+
  SUBROUTINE h5rget_name_region_f(loc_id, ref, name, hdferr, size)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id   ! Identifier for the dataset containing the reference
+                                           ! or for the group that dataset is in.
+    TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref       ! Object reference
+    INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size   ! The size of the name buffer,
+                                                     ! returning 0 (zero) if no name is associated 
+                                                     ! with the identifier
+    CHARACTER(LEN=*), INTENT(OUT) :: name  ! A name associated with the referenced object or dataset region.
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Rff_f90.html b/fortran/doc/DevelGuide/src/H5Rff_f90.html new file mode 100644 index 0000000..2b60b08 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Rff_f90.html @@ -0,0 +1,148 @@ + + + + + + + +./src/H5Rff.f90 + + + + + +
+
+ +

H5R

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5R
+
+

FILE

+
  fortran/src/H5Rff.f90
+
+

PURPOSE

+
  This file contains Fortran interfaces for H5R functions. It includes
+  all the functions that are independent on whether the Fortran 2003 functions
+  are enabled or disabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5R function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5rget_object_type_obj_f

+ +

[ Top ] [ H5R ] [ Subroutines ]

+

NAME

+
  h5rget_object_type_obj_f
+
+

PURPOSE

+
  Retrieves the type of object that an object reference points to.
+
+

INPUTS

+
  dset_id       - identifier of the dataset containing
+                  reference to the objects
+  ref           - reference to open
+
+

OUTPUTS

+
  obj_type      - object_type, possible values:
+                    H5G_UNKNOWN_F     (-1)
+                    H5G_GROUP_F        0
+                    H5G_DATASET_F      1
+                    H5G_TYPE_F         2
+                    H5G_LINK_F         3
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

NOTES

+
  This is a module procedure for the h5rget_object_type_f
+  subroutine.
+
+

SOURCE

+
  SUBROUTINE h5rget_object_type_obj_f(dset_id, ref, obj_type, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dset_id   ! Dataset identifier
+    TYPE(hobj_ref_t_f), INTENT(IN) :: ref   ! Object reference
+    INTEGER, INTENT(OUT) :: obj_type     ! Object type
+                                         !  H5G_UNKNOWN_F     (-1)
+                                         !  H5G_GROUP_F        0
+                                         !  H5G_DATASET_F      1
+                                         !  H5G_TYPE_F         2
+                                         !  H5G_LINK_F         3
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code
+
+ +
+ +

h5rget_region_region_f

+ +

[ Top ] [ H5R ] [ Subroutines ]

+

NAME

+
  h5rget_region_region_f
+
+

PURPOSE

+
  Retrieves a dataspace with the specified region selected
+
+

INPUTS

+
  dset_id       - identifier of the dataset containing
+                  reference to the regions
+  ref           - reference to open
+
+

OUTPUTS

+
  space_id      - dataspace identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

NOTES

+
  This is a module procedure for the h5rget_region_f subroutine.
+
+

SOURCE

+
  SUBROUTINE h5rget_region_region_f(dset_id, ref, space_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dset_id      ! Dataset identifier
+    TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Dataset region reference
+    INTEGER(HID_T), INTENT(OUT) :: space_id    ! Space identifier
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Sf_c.html b/fortran/doc/DevelGuide/src/H5Sf_c.html new file mode 100644 index 0000000..ebdedf7 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Sf_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5Sf.c + + + + + +
+
+ +

H5Sf

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for H5S Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Sff_f90.html b/fortran/doc/DevelGuide/src/H5Sff_f90.html new file mode 100644 index 0000000..c26b191 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Sff_f90.html @@ -0,0 +1,1165 @@ + + + + + + + +./src/H5Sff.f90 + + + + + +
+
+ +

H5S

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5S
+
+

FILE

+
  fortran/src/H5Sff.f90
+
+

PURPOSE

+
  This file contains Fortran interfaces for H5S functions. It includes
+  all the functions that are independent on whether the Fortran 2003 functions
+  are enabled or disabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5S function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5sclose_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sclose_f
+
+

PURPOSE

+
  Releases and terminates access to a dataspace.
+
+

INPUTS

+
  space_id    - identifier of dataspace to release
+
+

OUTPUTS

+
  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sclose_f(space_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+            INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5scopy_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5scopy_f
+
+

PURPOSE

+
  Creates an exact copy of a dataspace.
+
+

INPUTS

+
  space_id      - dataspace identifier
+
+

OUTPUTS

+
  new_space_id  - identifier of dataspace's copy
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

NOTES

+

SOURCE

+
          SUBROUTINE h5scopy_f(space_id, new_space_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+            INTEGER(HID_T), INTENT(OUT) :: new_space_id
+                                             ! Identifier of dataspace's copy
+            INTEGER, INTENT(OUT) :: hdferr   ! Error code
+
+ +
+ +

h5screate_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5screate_f
+
+

PURPOSE

+
  Creates a new dataspace of a specified type.
+
+

INPUTS

+
  classtype   - the type of the dataspace to be created
+
+

OUTPUTS

+
  space_id    - dataspace identifier
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

NOTES

+

SOURCE

+
          SUBROUTINE h5screate_f(classtype, space_id, hdferr)
+            IMPLICIT NONE
+            INTEGER, INTENT(IN) :: classtype     ! The type of the dataspace
+                                                 ! to be created.
+                                                 ! Possible values are:
+                                                 !  H5S_SCALAR_F (0)
+                                                 !  H5S_SIMPLE_F(1)
+                                                 !  H5S_NULL_F(2)
+            INTEGER(HID_T), INTENT(OUT) :: space_id ! Dataspace identifier
+            INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5screate_simple_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5screate_simple_f
+
+

PURPOSE

+
  Creates a new simple data space and opens it for access      .
+
+

INPUTS

+
  rank        - number of dimensions
+  dims        - an array of the size of each dimension
+
+

OUTPUTS

+
  space_id    - dataspace identifier
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  maxdims     - an array of the maximum size of each dimension
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5screate_simple_f(rank, dims, space_id, hdferr, maxdims)
+
+            IMPLICIT NONE
+            INTEGER, INTENT(IN) :: rank             ! Number of dataspace dimensions
+            INTEGER(HSIZE_T), INTENT(IN) :: dims(rank)
+                                                    ! Array with the dimension
+                                                    ! sizes
+            INTEGER(HID_T), INTENT(OUT) :: space_id ! Dataspace identifier
+            INTEGER, INTENT(OUT) :: hdferr          ! Error code
+            INTEGER(HSIZE_T), OPTIONAL, INTENT(IN) :: maxdims(rank)
+                                                    ! Array with the maximum
+                                                    ! dimension sizes
+
+ +
+ +

H5Sdecode_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  H5Sdecode_f
+
+

PURPOSE

+
  Decode a binary object description of data space and return a new object handle.
+
+

INPUTS

+
  buf   -  Buffer for the data space object to be decoded.
+  obj_id        - Object ID
+
+

OUTPUTS

+
  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 26, 2008
+
+

SOURCE

+
  SUBROUTINE h5sdecode_f(buf, obj_id, hdferr)
+    IMPLICIT NONE
+    CHARACTER(LEN=*), INTENT(IN) :: buf ! Buffer for the data space object to be decoded.
+    INTEGER(HID_T), INTENT(OUT) :: obj_id  ! Object ID
+    INTEGER, INTENT(OUT) :: hdferr     ! Error code
+
+ +
+ +

H5Sencode_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  H5Sencode_f
+
+

PURPOSE

+
  Encode a data space object description into a binary buffer.
+
+

INPUTS

+
  obj_id        - Identifier of the object to be encoded.
+  buf   - Buffer for the object to be encoded into.
+  nalloc        - The size of the allocated buffer.
+
+

OUTPUTS

+
  nalloc        - The size of the buffer needed.
+  hdferr      - Returns 0 if successful and -1 if fails.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  March 26, 2008
+
+

SOURCE

+
  SUBROUTINE h5sencode_f(obj_id, buf, nalloc, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id ! Identifier of the object to be encoded.
+    CHARACTER(LEN=*), INTENT(OUT) :: buf ! Buffer for the object to be encoded into.
+    INTEGER(SIZE_T), INTENT(INOUT) :: nalloc ! The size of the allocated buffer.
+    INTEGER, INTENT(OUT) :: hdferr     ! Error code
+
+ +
+ +

h5sextent_copy_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sextent_copy_f
+
+

PURPOSE

+
  Copies the extent of a dataspace.
+
+

INPUTS

+
  dest_space_id         - the identifier for the dataspace to which
+  the extent is copied
+  source_space_id       - the identifier for the dataspace from
+  which the extent is copied
+
+

OUTPUTS

+
  hdferr      - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  NONE
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

NOTES

+

SOURCE

+
          SUBROUTINE h5sextent_copy_f(dest_space_id, source_space_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: dest_space_id  ! Identifier of destination
+                                                         ! dataspace
+            INTEGER(HID_T), INTENT(IN) :: source_space_id ! Identifier of source
+                                                          ! dataspace
+            INTEGER, INTENT(OUT) :: hdferr                ! Error code
+
+ +
+ +

h5sextent_equal_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sextent_equal_f
+
+

PURPOSE

+
  Determines whether two dataspace extents are equal.
+
+

INPUTS

+
  space1_id     - First dataspace identifier.
+  space2_id     - Second dataspace identifier.
+
+

OUTPUTS

+
  Equal         - .TRUE. if equal, .FALSE. if unequal.
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  April 2, 2008
+
+

SOURCE

+
  SUBROUTINE h5sextent_equal_f(space1_id, space2_id, equal, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: space1_id ! First dataspace identifier.
+    INTEGER(HID_T), INTENT(IN) :: space2_id ! Second dataspace identifier.
+    LOGICAL, INTENT(OUT) :: Equal ! .TRUE. if equal, .FALSE. if unequal.
+    INTEGER, INTENT(OUT) :: hdferr                ! Error code
+
+ +
+ +

h5sget_select_bounds_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sget_select_bounds_f
+
+

PURPOSE

+
  Gets the bounding box containing the current selection.
+
+

INPUTS

+
  space_id    - dataspace identifier
+
+

OUTPUTS

+
  start       - starting coordinates of bounding box
+  end         - ending coordinates of bounding box
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  NONE
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
  SUBROUTINE  h5sget_select_bounds_f(space_id, start, END, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+    INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: start
+                                           ! Starting coordinates of the bounding box.
+    INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: END
+                                           !Ending coordinates of the bounding box,
+                                           !i.e., the coordinates of the diagonally
+                                           !opposite corner
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5sget_select_elem_npoints_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sget_select_elem_npoints_f
+
+

PURPOSE

+
  Gets the number of element points in the current selection
+
+

INPUTS

+
  space_id      - dataspace identifier
+
+

OUTPUTS

+
  num_points    - number of element points in the current
+                  dataspace selection
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sget_select_elem_npoints_f(space_id, num_points, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+            INTEGER(HSSIZE_T), INTENT(OUT) :: num_points
+                                             !number of element points
+                                             !in the current dataspace
+                                             !selection
+            INTEGER, INTENT(OUT) :: hdferr   ! Error code
+
+ +
+ +

h5sget_select_elem_pointlist_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sget_select_elem_pointlist_f
+
+

PURPOSE

+
  Gets the list of element points currently selected.
+
+

INPUTS

+
  space_id    - dataspace identifier
+  startpoint  - element point to start with
+  num_points  - number of elemnt points to get
+
+

OUTPUTS

+
  buf         - buffer with element points selected
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sget_select_elem_pointlist_f(space_id, startpoint, &
+                                                    num_points, buf, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+            INTEGER(HSIZE_T), INTENT(IN) :: startpoint
+                                             !Element point to start with.
+            INTEGER(HSIZE_T), INTENT(IN) :: num_points
+                                             !Number of element points to get
+            INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: buf
+                                             !List of element points selected
+            INTEGER, INTENT(OUT) :: hdferr   ! Error code
+
+ +
+ +

h5sget_select_hyper_blocklist_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sget_select_hyper_blocklist_f
+
+

PURPOSE

+
  Gets the list of hyperslab blocks currently selected.
+
+

INPUTS

+
  space_id    - dataspace identifier
+  startblock  - hyperslab block to start with
+  num_blocks  - number of blocks to get
+
+

OUTPUTS

+
  buf         - buffer to hold block list
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sget_select_hyper_blocklist_f(space_id, startblock, &
+                                                    num_blocks, buf, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+            INTEGER(HSIZE_T), INTENT(IN) :: startblock
+                                             !Hyperslab block to start with.
+            INTEGER(HSIZE_T), INTENT(IN) :: num_blocks
+                                             !number of hyperslab blocks
+                                             !to get in the current dataspace
+                                             !selection
+            INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: buf
+                                             !List of hyperslab blocks selected
+            INTEGER, INTENT(OUT) :: hdferr   ! Error code
+
+ +
+ +

h5sget_select_hyper_nblocks_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sget_select_hyper_nblocks_f
+
+

PURPOSE

+
  Get number of hyperslab blocks.
+
+

INPUTS

+
  space_id    - dataspace identifier
+
+

OUTPUTS

+
  num_blocks  - number of hyperslab blocks in the current
+                hyperslab selection
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sget_select_hyper_nblocks_f(space_id, num_blocks, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+            INTEGER(HSSIZE_T), INTENT(OUT) :: num_blocks
+                                             !number of hyperslab blocks
+                                             !in the current dataspace
+                                             !selection
+            INTEGER, INTENT(OUT) :: hdferr   ! Error code
+
+ +
+ +

h5sget_select_npoints_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sget_select_npoints_f
+
+

PURPOSE

+
  Determines the number of elements in a dataspace selection.
+
+

INPUTS

+
  space_id      - dataspace identifier
+
+

OUTPUTS

+
  npoints       - number of points in the dataspace selection
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sget_select_npoints_f(space_id, npoints, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id     ! Dataspace identifier
+            INTEGER(HSSIZE_T), INTENT(OUT) :: npoints  ! Number of elements in the
+                                                       ! selection
+            INTEGER, INTENT(OUT) :: hdferr             ! Error code
+
+ +
+ +

h5sget_select_type_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sget_select_type_f
+
+

PURPOSE

+
  Retrieve the type of selection
+
+

INPUTS

+
  space_id      - dataspace iidentifier with selection
+
+

OUTPUTS

+
  type          - flag, valid values are:
+                    H5S_SEL_ERROR_F
+                    H5S_SEL_NONE_F
+                    H5S_SEL_POINTS_F
+                    H5S_SEL_HYPERSLABS_F
+                    H5S_SEL_ALL_F
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  October 7, 2002
+
+

SOURCE

+
          SUBROUTINE h5sget_select_type_f(space_id, type, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(INOUT) :: space_id ! Dataspace identifier to
+            INTEGER, INTENT(OUT) :: type        ! Selection type
+                                                !  H5S_SEL_ERROR_F
+                                                !  H5S_SEL_NONE_F
+                                                !  H5S_SEL_POINTS_F
+                                                !  H5S_SEL_HYPERSLABS_F
+                                                !  H5S_SEL_ALL_F
+            INTEGER, INTENT(OUT) :: hdferr     ! Error code
+
+ +
+ +

h5sget_simple_extent_dims_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sget_simple_extent_dims_f
+
+

PURPOSE

+
  Retrieves dataspace dimension size and maximum size.
+
+

INPUTS

+
  space_id      - dataspace identifier
+
+

OUTPUTS

+
  dims          - array to store size of each dimension
+  maxdims       - array to store maximum size of each
+  dimension
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sget_simple_extent_dims_f(space_id, dims, maxdims, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+            INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: dims
+                                                   ! Array to store dimension sizes
+            INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: maxdims
+                                                   ! Array to store max dimension
+                                                   ! sizes
+            INTEGER, INTENT(OUT) :: hdferr         ! Error code: -1 on failure,
+                                                   ! number of dimensions on
+                                                   ! on success
+
+ +
+ +

h5sget_simple_extent_ndims_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sget_simple_extent_ndims_f
+
+

PURPOSE

+
  Determines the dimensionality of a dataspace
+
+

INPUTS

+
  space_id      - dataspace identifier
+
+

OUTPUTS

+
  rank          - number of dataspace dimensions
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sget_simple_extent_ndims_f(space_id, rank, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id     ! Dataspace identifier
+            INTEGER, INTENT(OUT) :: rank               ! Number of dimensions
+            INTEGER, INTENT(OUT) :: hdferr             ! Error code
+
+ +
+ +

h5sget_simple_extent_npoints_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sget_simple_extent_npoints_f
+
+

PURPOSE

+
  Determines the number of elements in a dataspace.
+
+

INPUTS

+
  space_id      - dataspace identifier
+
+

OUTPUTS

+
  npoints       - number of elements in the dataspace
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sget_simple_extent_npoints_f(space_id, npoints, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id     ! Dataspace identifier
+            INTEGER(HSIZE_T), INTENT(OUT) :: npoints  ! Number of elements in
+                                                       ! dataspace
+            INTEGER, INTENT(OUT) :: hdferr             ! Error code
+
+ +
+ +

h5sget_simple_extent_type_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sget_simple_extent_type_f
+
+

PURPOSE

+
  Determine the current class of a dataspace
+
+

INPUTS

+
  space_id      - dataspace identifier
+
+

OUTPUTS

+
  classtype     - class type, possible values are:
+  H5S_NO_CLASS_F (-1)
+  H5S_SCALAR_F (0)
+  H5S_SIMPLE_F (1)
+  H5S_NULL_F   (2)
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sget_simple_extent_type_f(space_id, classtype, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+            INTEGER, INTENT(OUT) :: classtype      ! Class type , possible values
+                                                   ! are:
+                                                   !  H5S_NO_CLASS_F (-1)
+                                                   !  H5S_SCALAR_F (0)
+                                                   !  H5S_SIMPLE_F (1)
+                                                   !  H5S_NULL_F   (2)
+            INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5sis_simple_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sis_simple_f
+
+

PURPOSE

+
  Determines whether a dataspace is a simple dataspace.
+
+

INPUTS

+
  space_id      - dataspace identifier
+
+

OUTPUTS

+
  status        - flag to indicate if dataspace
+  is simple or not
+  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sis_simple_f(space_id, status, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id  ! Dataspace identifier
+            LOGICAL, INTENT(OUT) :: status      ! Flag, idicates if dataspace
+                                                ! is simple or not ( TRUE or
+                                                ! FALSE)
+            INTEGER, INTENT(OUT) :: hdferr      ! Error code
+
+ +
+ +

h5soffset_simple_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5soffset_simple_f
+
+

PURPOSE

+
  Sets the offset of a simple dataspace.
+
+

INPUTS

+
  space_id      - dataspace identifier
+  offset        - the offset at which to position the
+  selection
+
+

OUTPUTS

+
  hdferr      - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  NONE
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5soffset_simple_f(space_id, offset, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+            INTEGER(HSSIZE_T), DIMENSION(*), INTENT(IN) ::  offset
+                                                   ! The offset at which to position
+                                                   ! the selection
+            INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ +

h5sselect_all_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sselect_all_f
+
+

PURPOSE

+
  Selects the entire dataspace.
+
+

INPUTS

+
  space_id    - Identifier for the dataspace in which
+                selection being made
+
+

OUTPUTS

+
  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sselect_all_f(space_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id  ! Dataspace identifier
+            INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5sselect_elements_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sselect_elements_f
+
+

PURPOSE

+
  Selects elements to be included in the selection for
+  a dataspace
+
+

INPUTS

+
  space_id      - dataspace identifier
+  operator      - flag, valid values are:
+                   H5S_SELECT_SET_F 
+                   H5S_SELECT_APPEND_F 
+                   H5S_SELECT_PREPEND_F
+  rank          - number of dataspace dimensions
+  num_elements  - number of elements to be selected
+  coord         - 2D (rank x num_elements) array with the
+                  elements coordinates ( 1-based); in C the
+                  array is stored in 2D as (num_element x rank)
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
  SUBROUTINE h5sselect_elements_f(space_id, OPERATOR, rank, &
+       num_elements, coord, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T),   INTENT(IN)                                :: space_id
+    INTEGER,          INTENT(IN)                                :: OPERATOR
+    INTEGER,          INTENT(IN)                                :: rank
+    INTEGER(SIZE_T),  INTENT(IN)                                :: num_elements
+    INTEGER(HSIZE_T), INTENT(IN) , DIMENSION(rank,num_elements) :: coord
+    INTEGER,          INTENT(OUT)                               :: hdferr 
+
+ +
+ +

h5sselect_hyperslab_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sselect_hyperslab_f
+
+

PURPOSE

+
  Selects a hyperslab region to add to the current selected
+  region
+
+

INPUTS

+
  space_id      - dataspace identifier
+  operator      - flag, valid values are:
+  H5S_SELECT_SET_F (0)
+  H5S_SELECT_OR_F (1)
+  start         - array with hyperslab offsets
+  count         - number of blocks included in the
+  hyperslab
+
+

OUTPUTS

+
  hdferr      - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  stride        - array with hyperslab strides
+  block         - array with hyperslab block sizes
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sselect_hyperslab_f(space_id, operator, start, count, &
+                                           hdferr, stride, block)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+            INTEGER, INTENT(IN) :: operator     ! Flag, valid values are:
+                                                ! H5S_SELECT_SET_F (0)
+                                                ! H5S_SELECT_OR_F (1)
+                                                !
+            INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: start
+                                          ! Starting coordinates of the hyperslab
+            INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: count
+                                          ! Number of blocks to select
+                                          ! from dataspace
+            INTEGER, INTENT(OUT) :: hdferr     ! Error code
+            INTEGER(HSIZE_T), DIMENSION(:), OPTIONAL, INTENT(IN) :: stride
+                                          ! Array of how many elements to move
+                                          ! in each direction
+            INTEGER(HSIZE_T), DIMENSION(:), OPTIONAL, INTENT(IN) :: block
+                                          ! Sizes of element block
+
+ +
+ +

h5sselect_none_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sselect_none_f
+
+

PURPOSE

+
  Resets the selection region to include no elements.
+
+

INPUTS

+
  space_id    - the identifier for the dataspace in which
+                the selection is being reset.
+
+

OUTPUTS

+
  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sselect_none_f(space_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id  ! Dataspace identifier
+            INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5sselect_valid_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sselect_valid_f
+
+

PURPOSE

+
  Verifies that the selection is within the extent of
+  the dataspace.
+
+

INPUTS

+
  space_id      - identifier for the dataspace for which
+  selection is verified
+
+

OUTPUTS

+
  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sselect_valid_f(space_id, status, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id  ! Dataspace identifier
+            LOGICAL, INTENT(OUT) :: status          ! TRUE if the selection is
+                                                    ! contained within the extent,
+                                                    ! FALSE otherwise.
+            INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5sset_extent_none_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sset_extent_none_f
+
+

PURPOSE

+
  Removes the extent from a dataspace.
+
+

INPUTS

+
  space_id      - dataspace identifier
+
+

OUTPUTS

+
  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sset_extent_none_f(space_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id  ! Dataspace identifier
+            INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5sset_extent_simple_f

+ +

[ Top ] [ H5S ] [ Subroutines ]

+

NAME

+
  h5sset_extent_simple_f
+
+

PURPOSE

+
  Sets or resets the size of an existing dataspace.
+
+

INPUTS

+
  space_id      - dataspace identifier
+  rank          - dataspace number of dimensions
+  current_size          - array with the new sizes of dimensions
+  maximum_size          - array with the new maximum sizes of
+  dimensions
+
+

OUTPUTS

+
  hdferr      - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 6, 2001
+
+

SOURCE

+
          SUBROUTINE h5sset_extent_simple_f(space_id, rank, current_size, &
+                                            maximum_size, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+            INTEGER, INTENT(IN) :: rank            ! Dataspace rank
+            INTEGER(HSIZE_T), DIMENSION(rank), INTENT(IN) :: current_size
+                                                   ! Array with the new sizes
+                                                   ! of dimensions
+            INTEGER(HSIZE_T), DIMENSION(rank), INTENT(IN) :: maximum_size
+                                                   ! Array with the new maximum
+                                                   ! sizes of dimensions
+                                                   ! sizes
+            INTEGER, INTENT(OUT) :: hdferr         ! Error code
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Tf_c.html b/fortran/doc/DevelGuide/src/H5Tf_c.html new file mode 100644 index 0000000..b36c2a5 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Tf_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5Tf.c + + + + + +
+
+ +

H5Tf

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for H5T Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Tff_f90.html b/fortran/doc/DevelGuide/src/H5Tff_f90.html new file mode 100644 index 0000000..3b7dfe8 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Tff_f90.html @@ -0,0 +1,2378 @@ + + + + + + + +./src/H5Tff.f90 + + + + + +
+
+ +

H5T

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5T
+
+

PURPOSE

+
  This file contains Fortran interfaces for H5T functions. It includes
+  all the functions that are independent on whether the Fortran 2003 functions
+  are enabled or disabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5T function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5tarray_create_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tarray_create_f
+
+

PURPOSE

+
  Creates an array datatype object.
+
+

INPUTS

+
  base_id       - datatype identifier for the array
+                  base datatype
+  rank          - rank of the array
+  dims          - array dimension sizes
+
+

OUTPUTS

+
  type_id       - array datatype identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tarray_create_f(base_id, rank, dims, type_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: base_id ! identifier of array base datatype
+            INTEGER, INTENT(IN) ::  rank ! Rank of the array
+            INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: dims !Sizes of each array dimension
+            INTEGER(HID_T), INTENT(OUT) :: type_id ! identifier of the array datatype
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tclose_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tclose_f
+
+

PURPOSE

+
  Releases a datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tclose_f(type_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tcommit_anon_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tcommit_anon_f
+
+

PURPOSE

+
  Commits a transient datatype to a file,
+  creating a new named datatype,
+  but does not link it into the file structure.
+
+

INPUTS

+
  loc_id        - A file or group identifier specifying the file
+                  in which the new named datatype is to be created.
+  dtype_id      - A datatype identifier.
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  tcpl_id       - A datatype creation property list identifier.
+                  (H5P_DEFAULT_F for the default property list.)
+  tapl_id       - A datatype access property list identifier.
+                  should always be passed as the value H5P_DEFAULT_F.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 25, 2008
+
+

SOURCE

+
  SUBROUTINE h5tcommit_anon_f(loc_id, dtype_id, hdferr, tcpl_id, tapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id  ! A file or group identifier specifying
+                                          ! the file in which the new named datatype
+                                          ! is to be created.
+    INTEGER(HID_T), INTENT(IN) :: dtype_id  ! Datatype identifier
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tcpl_id ! A datatype creation property
+                                                    ! list identifier.
+                                                    ! (H5P_DEFAULT_F for the default property list.)
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tapl_id ! A datatype access property list identifier.
+                                                    ! should always be passed as the value H5P_DEFAULT_F.
+
+ +
+ +

h5tcommit_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tcommit_f
+
+

PURPOSE

+
  Commits a transient datatype to a file, creating a
+  new named datatype.
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - name of the datatype to be stored
+                  at the specified location
+  type_id       - identifier of a datatype to be stored
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  lcpl_id       - Link creation property list
+  tcpl_id       - Datatype creation property list
+  tapl_id       - Datatype access property list
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
        - Explicit Fortran interfaces were added for
+          called C functions (it is needed for Windows
+          port).  March 7, 2001
+
+        - Added optional parameters introduced in version 1.8
+          M. Scot Breitenfeld
+
+

SOURCE

+
  SUBROUTINE h5tcommit_f(loc_id, name, type_id, hdferr, &
+       lcpl_id, tcpl_id, tapl_id  )
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id  ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name
+                                  ! Datatype name within file or group
+    INTEGER(HID_T), INTENT(IN) :: type_id  ! Datatype identifier
+    INTEGER, INTENT(OUT) :: hdferr          ! Error code
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tcpl_id ! Datatype creation property list
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tapl_id ! Datatype access property list
+
+ +
+ +

h5tcommitted_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tcommitted_f
+
+

PURPOSE

+
  Determines whether a datatype is a named type or a transient type.
+
+

INPUTS

+
  dtype_id      - A datatype identifier.
+
+

OUTPUTS

+
  committed     - .TRUE., if the datatype has been committed
+                  .FALSE., if the datatype has not been committed.
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  February 25, 2008
+
+

SOURCE

+
  SUBROUTINE h5tcommitted_f(dtype_id, committed, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dtype_id  ! A datatype identifier
+    LOGICAL, INTENT(OUT) :: committed ! .TRUE., if the datatype has been committed
+                                      !.FALSE., if the datatype has not been committed.
+    INTEGER, INTENT(OUT) :: hdferr     ! Error code:
+!  Success:  0
+!  Failure: -1
+
+ +
+ +

h5tcompiler_conv_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tcompiler_conv_f
+
+

PURPOSE

+
  Check whether the library’s default conversion is hard conversion.R
+
+

INPUTS

+
  src_id        - Identifier for the source datatype.
+  dst_id        - Identifier for the destination datatype.
+
+

OUTPUTS

+
  flag          - TRUE for compiler conversion, FALSE for library conversion
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  April 9, 2008
+
+

SOURCE

+
  SUBROUTINE h5tcompiler_conv_f( src_id, dst_id, flag, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: src_id ! Identifier for the source datatype.
+    INTEGER(HID_T), INTENT(IN) :: dst_id ! Identifier for the destination datatype.
+    LOGICAL, INTENT(OUT) :: flag  ! .TRUE. for compiler conversion, .FALSE. for library conversion
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code:
+                                    ! 0 on success and -1 on failure
+
+ +
+ +

h5tcopy_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tcopy_f
+
+

PURPOSE

+
  Creates a copy of exisiting datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  new_type_id   - identifier of datatype's copy
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tcopy_f(type_id, new_type_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER(HID_T), INTENT(OUT) :: new_type_id
+                                 ! Identifier of datatype's copy
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tcreate_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tcreate_f
+
+

PURPOSE

+
  Creates a new dataype
+
+

INPUTS

+
  class         - datatype class, possible values are:
+                    H5T_COMPOUND_F
+                    H5T_ENUM_F
+                    H5T_OPAQUE_F
+  size          - datattype size
+
+

OUTPUTS

+
  type_id       - datatype identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tcreate_f(class, size, type_id, hdferr)
+            IMPLICIT NONE
+            INTEGER, INTENT(IN) :: class ! Datatype class can be one of
+                                         ! H5T_COMPOUND_F
+                                         ! H5T_ENUM_F
+                                         ! H5T_OPAQUE_F
+            INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the datatype
+            INTEGER(HID_T), INTENT(OUT) :: type_id ! Datatype identifier
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

H5Tdecode_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  H5Tdecode_f
+
+

PURPOSE

+
  Decode a binary object description of data type and return a new object handle.
+
+

INPUTS

+
  buf           -  Buffer for the data space object to be decoded.
+  obj_id        - Object ID
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  April 9, 2008
+
+

SOURCE

+
  SUBROUTINE h5tdecode_f(buf, obj_id, hdferr)
+    IMPLICIT NONE
+    CHARACTER(LEN=*), INTENT(IN) :: buf ! Buffer for the data space object to be decoded.
+    INTEGER(HID_T), INTENT(OUT) :: obj_id  ! Object ID
+    INTEGER, INTENT(OUT) :: hdferr     ! Error code
+
+ +
+ +

h5tenaum_insert_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tenaum_insert_f
+
+

PURPOSE

+
  Inserts a new enumeration datatype member.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tenum_insert_f(type_id,  name, value, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            CHARACTER(LEN=*), INTENT(IN) :: name  !Name of  the new member
+            INTEGER, INTENT(IN) :: value !value of the new member
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

H5Tencode_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  H5Tencode_f
+
+

PURPOSE

+
  Encode a data type object description into a binary buffer.
+
+

INPUTS

+
  obj_id        - Identifier of the object to be encoded.
+  buf           - Buffer for the object to be encoded into.
+  nalloc        - The size of the allocated buffer.
+
+

OUTPUTS

+
  nalloc        - The size of the buffer needed.
+  hdferr        - Returns 0 if successful and -1 if fails.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  April 9, 2008
+
+

SOURCE

+
  SUBROUTINE h5tencode_f(obj_id, buf, nalloc, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: obj_id ! Identifier of the object to be encoded.
+    CHARACTER(LEN=*), INTENT(OUT) :: buf ! Buffer for the object to be encoded into.
+    INTEGER(SIZE_T), INTENT(INOUT) :: nalloc ! The size of the allocated buffer.
+    INTEGER, INTENT(OUT) :: hdferr     ! Error code
+
+ +
+ +

h5tenum_create_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tenum_create_f
+
+

PURPOSE

+
  Creates a new enumeration datatype.
+
+

INPUTS

+
  parent_id     - datatype identifier for base datatype
+
+

OUTPUTS

+
  new_type_id   - datatype identifier for the enumeration datatype
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tenum_create_f(parent_id, new_type_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: parent_id  ! Datatype identifier for
+                                                     ! the  base datatype
+            INTEGER(HID_T), INTENT(OUT) :: new_type_id
+                                                     !datatype identifier for the
+                                                     ! new enumeration datatype
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tenum_nameof_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tenum_nameof_f
+
+

PURPOSE

+
  Returns the symbol name corresponding to a specified
+  member of an enumeration datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+  value         - value of the enumeration datatype
+  namelen       - name buffer size
+
+

OUTPUTS

+
  name          - buffer to hold symbol name
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+ NOTE
+   According to the standard: Because an INTENT(OUT) variable is considered undefined 
+   on entry to the procedure, any default initialization specified for its type will 
+   be applied. So we need to blank out the "name" to be portable and eliminate any 
+   characters the "name' may contain upon entry, depending on compiler implementation.
+
+

SOURCE

+
  SUBROUTINE h5tenum_nameof_f(type_id,  value, namelen, name, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            CHARACTER(LEN=*), INTENT(OUT) :: name  !Name of the  enumeration datatype.
+            INTEGER(SIZE_T), INTENT(IN) :: namelen !length of the name
+            INTEGER, INTENT(IN) :: value !value of the  enumeration datatype.
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tenum_valuof_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tenum_valuof_f
+
+

PURPOSE

+
  Returns the value corresponding to a specified
+  member of an enumeration datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+  name          - symbol name
+
+

OUTPUTS

+
  value         - value of the enumeration datatype
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tenum_valueof_f(type_id,  name, value, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            CHARACTER(LEN=*), INTENT(IN) :: name  !Name of the  enumeration datatype.
+            INTEGER, INTENT(OUT) :: value !value of the  enumeration datatype.
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tequal_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tequal_f
+
+

PURPOSE

+
  Determines whether two datatype identifiers refer
+  to the same datatype.
+
+

INPUTS

+
  type1_id      - datatype identifier
+  type2_id      - datatype identifier
+
+

OUTPUTS

+
  flag          - TRUE/FALSE flag to indicate
+                  if two datatypes are equal
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tequal_f(type1_id, type2_id, flag, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type1_id ! Datatype identifier
+            INTEGER(HID_T), INTENT(IN) :: type2_id ! Datatype identifier
+            LOGICAL, INTENT(OUT) :: flag ! TRUE/FALSE flag to indicate if two
+                                         ! datatypes are equal
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_array_dims_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_array_dims_f
+
+

PURPOSE

+
  Returns sizes of array dimensions.
+
+

INPUTS

+
  type_id       - array datatype identifier
+
+

OUTPUTS

+
  dims          - buffer to store array datatype dimensions
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_array_dims_f(type_id, dims, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Array datatype identifier
+            INTEGER(HSIZE_T),DIMENSION(*), INTENT(OUT) ::  dims !buffer to store array datatype
+                                                                ! dimensions
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_array_ndims_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_array_ndims_f
+
+

PURPOSE

+
  Returns the rank of an array datatype.
+
+

INPUTS

+
  type_id       - array datatype identifier
+
+

OUTPUTS

+
  ndims         - number of array dimensions
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_array_ndims_f(type_id, ndims, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Array datatype identifier
+            INTEGER, INTENT(OUT) ::  ndims ! number of array dimensions
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_class_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_class_f
+
+

PURPOSE

+
  Returns the datatype class identifier.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  class         - class, possible values are:
+                   H5T_NO_CLASS_F (-1)
+                   H5T_INTEGER_F  (0)
+                   H5T_FLOAT_F (1)
+                   H5T_TIME_F  (2)
+                   H5T_STRING_F (3)
+                   H5T_BITFIELD_F (4)
+                   H5T_OPAQUE_F (5)
+                   H5T_COMPOUND_F (6)
+                   H5T_REFERENCE_F (7)
+                   H5T_ENUM_F (8)
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_class_f(type_id, class, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(OUT) :: class
+                           ! Datatype class, possible values are:
+                                          ! H5T_NO_CLASS_F (-1)
+                                          ! H5T_INTEGER_F  (0)
+                                          ! H5T_FLOAT_F (1)
+                                          ! H5T_TIME_F  (2)
+                                          ! H5T_STRING_F (3)
+                                          ! H5T_BITFIELD_F (4)
+                                          ! H5T_OPAQUE_F (5)
+                                          ! H5T_COMPOUND_F (6)
+                                          ! H5T_REFERENCE_F (7)
+                                          ! H5T_ENUM_F (8)
+          INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_create_plist_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_create_plist_f
+
+

PURPOSE

+
  Returns a copy of a datatype creation property list.
+
+

INPUTS

+
  dtype_id      - Datatype identifier
+
+

OUTPUTS

+
  dtpl_id       - Datatype property list identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  April 9, 2008
+
+

SOURCE

+
  SUBROUTINE h5tget_create_plist_f(dtype_id, dtpl_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dtype_id  ! Datatype identifier
+    INTEGER(HID_T), INTENT(OUT) :: dtpl_id  ! Datatype property list identifier.
+    INTEGER, INTENT(OUT) :: hdferr       ! Error code:
+                                         ! 0 on success and -1 on failure
+
+ +
+ +

h5tget_cset_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_cset_f
+
+

PURPOSE

+
  Retrieves the character set type of a string datatype.
+
+

INPUTS

+
  type_id  - Datatype identifier
+
+

OUTPUTS

+
  cset     - Character set type of a string datatype
+              Possible values are:
+              H5T_CSET_ASCII_F = 0
+              H5T_CSET_UTF8_F
+  hdferr   - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_cset_f(type_id, cset, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(OUT) :: cset   ! character set type of a string datatype
+                                           !  Possible values are:
+                                           !  H5T_CSET_ASCII_F = 0
+                                           !  H5T_CSET_UTF8_F
+            INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ +
+ +

h5tget_ebias_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_ebias_f
+
+

PURPOSE

+
  Retrieves the exponent bias of a floating-point type.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  ebias         - datatype exponent bias
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_ebias_f(type_id, ebias, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER(SIZE_T), INTENT(OUT) :: ebias ! Datatype exponent bias of a floating-point type
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_fields_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_fields_f
+
+

PURPOSE

+
  Retrieves floating point datatype bit field information.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  spos          - sign bit-position
+  epos          - exponent bit-position
+  esize         - size of exponent in bits
+  mpos          - mantissa position
+  msize         - size of mantissa in bits
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_fields_f(type_id, spos, epos, esize, mpos, msize, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER(SIZE_T), INTENT(OUT) :: spos   ! sign bit-position
+            INTEGER(SIZE_T), INTENT(OUT) :: epos   ! exponent bit-position
+            INTEGER(SIZE_T), INTENT(OUT) :: esize  ! size of exponent in bits
+            INTEGER(SIZE_T), INTENT(OUT) :: mpos   ! mantissa bit-position
+            INTEGER(SIZE_T), INTENT(OUT) :: msize  ! size of mantissa in bits
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_inpad_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_inpad_f
+
+

PURPOSE

+
  Retrieves the internal padding type for unused bits
+  in floating-point datatypes.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  padtype       - padding type for unused bits
+                  Possible values of padding type are:
+                    H5T_PAD_ZERO_F = 0
+                    H5T_PAD_ONE_F = 1
+                    H5T_PAD_BACKGROUND_F = 2
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_inpad_f(type_id, padtype, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(OUT) :: padtype ! padding type for unused bits
+                                            ! in floating-point datatypes.
+                                            ! Possible values of padding type are:
+                                            ! H5T__PAD_ZERO_F = 0
+                                            ! H5T__PAD_ONE_F = 1
+                                            ! H5T__PAD_BACKGROUND_F = 2
+
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_member_class_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_member_class_f
+
+

PURPOSE

+
  Returns datatype class of compound datatype member.
+
+

INPUTS

+
  type_id       - datartpe identifier
+  member_no     - index of compound datatype member
+
+

OUTPUTS

+
  class         - class type for compound dadtype member
+                  Valid classes:
+                    H5T_NO_CLASS_F (error)
+                    H5T_INTEGER_F
+                    H5T_FLOAT_F
+                    H5T_TIME_F
+                    H5T_STRING_F
+                    H5T_BITFIELD_F
+                    H5T_OPAQUE_F
+                    H5T_COMPOUND_F
+                    H5T_REFERENCE_F
+                    H5T_ENUM_F
+                    H5T_VLEN_F
+                    H5T_ARRAY_F
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  April 6, 2005
+
+

SOURCE

+
  SUBROUTINE h5tget_member_class_f(type_id, member_no, class, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id  ! Datatype identifier
+            INTEGER, INTENT(IN)       :: member_no  ! Member number
+            INTEGER, INTENT(OUT)     :: class      ! Member class
+            INTEGER, INTENT(OUT) :: hdferr      ! Error code
+
+ +
+ +

h5tget_member_index_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_member_index_f
+
+

PURPOSE

+
  Retrieves the index of a compound or enumeration datatype member.
+
+

INPUTS

+
  type_id       - datatype identifier
+  name          - name of the field or member whose index to
+  to be retrieved from the datatype.
+
+

OUTPUTS

+
  index         - 0-based index of the filed or member (0 to N-1)
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  September 26, 2002
+
+

SOURCE

+
  SUBROUTINE h5tget_member_index_f(type_id, name, index, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id  ! Datatype identifier
+            CHARACTER(LEN=*), INTENT(IN) :: name   ! Field or member name
+            INTEGER, INTENT(OUT) :: index          ! Field or member index
+            INTEGER, INTENT(OUT) :: hdferr          ! Error code
+
+ +
+ +

h5tget_member_name_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_member_name_f
+
+

PURPOSE

+
  Retrieves the name of a field of a compound datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+  index         - filed index (0-based)
+
+

OUTPUTS

+
  member_name   - buffer to hold member's name
+  namelen       - name length
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_member_name_f(type_id, index, member_name,  namelen, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(IN) :: index !Field index (0-based) of the field name to retrieve
+            CHARACTER(LEN=*), INTENT(OUT) :: member_name !name of a field of
+                                                         !a compound datatype
+            INTEGER, INTENT(OUT) :: namelen ! Length of the name
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_member_offset_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_member_offset_f
+
+

PURPOSE

+
  Retrieves the offset of a field of a compound datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+  member_no     - number of the field
+
+

OUTPUTS

+
  offset        - byte offset of the requested field
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_member_offset_f(type_id, member_no, offset, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(IN) :: member_no !Number of the field
+                                                       !whose offset is requested
+            INTEGER(SIZE_T), INTENT(OUT) :: offset !byte offset of the beginning of the field
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_member_type_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_member_type_f
+
+

PURPOSE

+
  Returns the datatype of the specified member.
+
+

INPUTS

+
  type_id       - compound datatype identifier
+  field_idx     - field index (0-based)
+
+

OUTPUTS

+
  datatype      - idnetifier of the member's datatype
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_member_type_f(type_id,  field_idx, datatype, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(IN) :: field_idx !Field index (0-based) of the field type to retrieve
+            INTEGER(HID_T), INTENT(OUT) :: datatype !identifier of a copy of
+                                                    !the datatype of the field
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_member_value_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_member_value_f
+
+

PURPOSE

+
  Returns the value of an enumeration datatype member.
+
+

INPUTS

+
  type_id       - datatype identifier
+  member_no     - number of the enumeration datatype member
+
+

OUTPUTS

+
  value         - value of the enumeration datatype
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_member_value_f(type_id,  member_no, value, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(IN) :: member_no !Number of the enumeration datatype member
+            INTEGER, INTENT(OUT) :: value !value of the  enumeration datatype.
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_native_type_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_native_type_f
+
+

PURPOSE

+
  Returns the native datatype of a specified datatype.
+
+

INPUTS

+
  dtype_id      - Datatype identifier for the dataset datatype.
+  
+  direction     - Direction of search:
+                  H5T_DIR_DEFAULT     = 0,    /*default direction is inscendent */
+                  H5T_DIR_ASCEND      = 1,    /*in inscendent order             */
+                  H5T_DIR_DESCEND     = 2     /*in descendent order             */
+  * NOTE: In C it is defined as a structure: H5T_direction_t
+
+

OUTPUTS

+
  native_dtype_id - The native datatype identifier for the specified dataset datatype
+  hdferr          - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  June 18, 2008
+
+

SOURCE

+
  SUBROUTINE h5tget_native_type_f(dtype_id, direction, native_dtype_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dtype_id  ! Datatype identifier
+    INTEGER, INTENT(IN) :: direction  ! Direction of search:
+                                      ! H5T_DIR_ASCEND_F      = 1  in inscendent order
+                                      ! H5T_DIR_DESCEND_F     = 2  in descendent order
+    INTEGER(HID_T), INTENT(OUT) :: native_dtype_id  ! The native datatype identifier
+    INTEGER, INTENT(OUT) :: hdferr    ! Error code:
+                                      ! 0 on success and -1 on failure
+
+ +
+ +

h5tget_nmembers_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_nmembers_f
+
+

PURPOSE

+
  Retrieves the number of fields in a compound datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  num_members   - number of members
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_nmembers_f(type_id, num_members, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(OUT) :: num_members !number of fields in a compound datatype
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_norm_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_norm_f
+
+

PURPOSE

+
  Retrieves mantissa normalization of a floating-point
+  datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  norm          - normalization types, valid values are:
+                    H5T_NORM_IMPLIED_F(0)
+                    H5T_NORM_MSBSET_F(1)
+                    H5T_NORM_NONE_F(2)
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_norm_f(type_id, norm, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(OUT) :: norm !mantissa normalization of a floating-point datatype
+                                         !Valid normalization types are:
+                                         !H5T_NORM_IMPLIED_F(0),MSB of mantissa is not
+                                         !stored, always 1,  H5T_NORM_MSBSET_F(1), MSB of
+                                         !mantissa is always 1, H5T_NORM_NONE_F(2)
+                                         !Mantissa is not normalize
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_offset_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_offset_f
+
+

PURPOSE

+
  Retrieves the bit offset of the first significant bit.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  offset        - offset value
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_offset_f(type_id, offset, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER(SIZE_T), INTENT(OUT) :: offset ! Datatype bit offset of the
+                                           ! first significant bit
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_order_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_order_f
+
+

PURPOSE

+
  Returns the byte order of an atomic datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  order         - byte order for the datatype, possible
+                  values are:
+                    H5T_ORDER_LE_F
+                    H5T_ORDER_BE_F
+                    H5T_ORDER_VAX_F (not implemented yet)
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_order_f(type_id, order, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+    INTEGER, INTENT(OUT) :: order
+                                    ! Datatype byte order, possible values are:
+                                    ! H5T_ORDER_LE_F
+                                    ! H5T_ORDER_BE_F
+                                    ! H5T_ORDER_VAX_F
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code
+
+ +
+ +

h5tget_pad_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_pad_f
+
+

PURPOSE

+
  Retrieves the padding type of the least and
+  most          -significant bit padding.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  lsbpad        - least-significant bit padding type
+  msbpad        - most-significant bit padding type
+                  Possible values of padding type are:
+                    H5T_PAD_ERROR_F      = -1
+                    H5T_PAD_ZERO_F = 0
+                    H5T_PAD_ONE_F = 1
+                    H5T_PAD_BACKGROUND_F = 2
+                    H5T_PAD_NPAD_F      = 3
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_pad_f(type_id, lsbpad, msbpad, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(OUT) :: lsbpad ! padding type of the
+                                           ! least significant bit
+            INTEGER, INTENT(OUT) :: msbpad ! padding type of the
+                                           ! most significant bit
+                                           ! Possible values of padding type are:
+                                           ! H5T__PAD_ZERO_F = 0
+                                           ! H5T__PAD_ONE_F = 1
+                                           ! H5T__PAD_BACKGROUND_F = 2
+                                           ! H5T_PAD_ERROR_F      = -1
+                                           ! H5T_PAD_NPAD_F      = 3
+
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_precision_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_precision_f
+
+

PURPOSE

+
  Returns the precision of an atomic datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  precision     - precision of the datatype
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_precision_f(type_id, precision, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER(SIZE_T), INTENT(OUT) :: precision ! Datatype precision
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_sign_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_sign_f
+
+

PURPOSE

+
  Retrieves the sign type for an integer type.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  sign          - sign type
+                  Possible values are:
+                    - Unsigned integer type 
+                        H5T_SGN_NONE_F = 0
+                    - Two's complement signed integer type
+                        H5T_SGN_2_F = 1
+                    - error value: H5T_SGN_ERROR_F=-1
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_sign_f(type_id, sign, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(OUT) :: sign ! sign type for an integer type
+                                         !possible values are:
+                                         !Unsigned integer type H5T_SGN_NONE_F = 0
+                                         !Two's complement signed integer type
+                                         !H5T_SGN_2_F = 1
+                                         !or error value: H5T_SGN_ERROR_F=-1
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_size_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_size_f
+
+

PURPOSE

+
  Returns the size of a datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  size          - datatype size
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_size_f(type_id, size, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER(SIZE_T), INTENT(OUT) :: size ! Datatype size
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_strpad_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_strpad_f
+
+

PURPOSE

+
  Retrieves the storage mechanism for a string datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  strpad        - storage method for a string datatype
+                  Possible values are:
+                    H5T_STR_NULLTERM_F,
+                    H5T_STR_NULLPAD_F,
+                    H5T_STR_SPACEPAD_F
+                    H5T_STR_ERROR_F
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_strpad_f(type_id, strpad, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(OUT) :: strpad
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_super_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_super_f
+
+

PURPOSE

+
  Returns the base datatype from which a datatype is derived.
+
+

INPUTS

+
  type_id       - datatype identifier
+
+

OUTPUTS

+
  base_type_id          - identifier of the base type
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_super_f(type_id, base_type_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! datatype identifier
+            INTEGER(HID_T), INTENT(OUT) :: base_type_id ! identifier of the datatype
+                                           ! from which datatype (type_id) was derived
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tget_tag_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tget_tag_f
+
+

PURPOSE

+
  Gets the tag associated with an opaque datatype.
+
+

INPUTS

+
  type_id       - identifier for opaque datatype
+
+

OUTPUTS

+
  tag           - unique ASCII string associated with opaque
+                  datatype
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tget_tag_f(type_id, tag,taglen, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            CHARACTER(LEN=*), INTENT(OUT) :: tag  ! Unique ASCII string with which
+                                                  !  the opaque datatype is to be tagged
+            INTEGER, INTENT(OUT) :: taglen        ! Length of tag
+            INTEGER(SIZE_T)      :: tag_size      ! Declared character length of tab 
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tinsert_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tinsert_f
+
+

PURPOSE

+
  Adds a new member to a compound datatype.
+
+

INPUTS

+
  type_id       - compound dattype identifier
+  name          - name of the field to insert
+  offset        - start of the member in an instance of
+                  the compound datatype
+  field_id      - datatype identifier of the field to insert
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tinsert_f(type_id,  name, offset, field_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            CHARACTER(LEN=*), INTENT(IN) :: name !Name of the field to insert
+            INTEGER(SIZE_T), INTENT(IN) :: offset !start of the member in an instance of
+                                                   !the compound datatype
+            INTEGER(HID_T), INTENT(IN) :: field_id !datatype identifier of the new member
+
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tis_variable_str_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tis_variable_str_f
+
+

PURPOSE

+
  Determines whether a dattype is a variable string.
+
+

INPUTS

+
  type_id       - datartpe identifier
+
+

OUTPUTS

+
  status        - flag to indicate if datatype
+                  is a variable string
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  March 12, 2003
+
+

SOURCE

+
  SUBROUTINE h5tis_variable_str_f(type_id, status, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id  ! Datatype identifier
+            LOGICAL, INTENT(OUT) :: status      ! Flag, idicates if datatype
+                                                ! is a variable string or not ( TRUE or
+                                                ! FALSE)
+            INTEGER, INTENT(OUT) :: hdferr      ! Error code
+
+ +
+ +

h5topen_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5topen_f
+
+

PURPOSE

+
  Opens named datatype.
+
+

INPUTS

+
  loc_id        - location identifier
+  name          - a datatype name
+
+

OUTPUTS

+
  type_id       - datatype identifier
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

OPTIONAL PARAMETERS

+
  tapl_id       - datatype access property list identifier.
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+  Added optional parameter 'tapl_id' for compatability
+  with H5Topen2. April 9, 2009.
+
+

SOURCE

+
  SUBROUTINE h5topen_f(loc_id, name, type_id, hdferr, tapl_id)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: loc_id  ! File or group identifier
+    CHARACTER(LEN=*), INTENT(IN) :: name ! Datatype name within file or group
+    INTEGER(HID_T), INTENT(OUT) :: type_id  ! Datatype identifier
+    INTEGER, INTENT(OUT) :: hdferr ! Error code
+    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tapl_id ! datatype access property list identifier
+
+ +
+ +

h5tpack_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tpack_f
+
+

PURPOSE

+
  Recursively removes padding from within a compound datatype.
+
+

INPUTS

+
  type_id       - compound datatype identifier
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tpack_f(type_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tset_cset_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tset_cset_f
+
+

PURPOSE

+
  Sets character set to be used.
+
+

INPUTS

+
  type_id       - datatype identifier
+  cset          - character set type of a string datatype
+                    Possible values are:
+                     H5T_CSET_ASCII_F = 0
+                     H5T_CSET_UTF8_F
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tset_cset_f(type_id, cset, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(IN) :: cset !character set type of a string datatype
+                                           ! Possible values of padding type are:
+                                           ! H5T_CSET_ASCII_F = 0
+                                           ! H5T_CSET_UTF8_F
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tset_ebias_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tset_ebias_f
+
+

PURPOSE

+
  Sets the exponent bias of a floating-point type.
+
+

INPUTS

+
  type_id       - datatype identifier
+  ebias         - datatype exponent bias
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tset_ebias_f(type_id, ebias, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER(SIZE_T), INTENT(IN) :: ebias !Datatype exponent bias of a floating-point type
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tset_fields_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tset_fields_f
+
+

PURPOSE

+
  Sets locations and sizes of floating point bit fields.
+
+

INPUTS

+
  type_id       - datatype identifier
+  spos          - sign bit-position
+  epos          - exponent bit-position
+  esize         - size of exponent in bits
+  mpos          - mantissa position
+  msize         - size of mantissa in bits
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tset_fields_f(type_id, spos, epos, esize, mpos, msize, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER(SIZE_T), INTENT(IN) :: spos   ! sign bit-position
+            INTEGER(SIZE_T), INTENT(IN) :: epos   ! exponent bit-position
+            INTEGER(SIZE_T), INTENT(IN) :: esize  ! size of exponent in bits
+            INTEGER(SIZE_T), INTENT(IN) :: mpos   ! mantissa bit-position
+            INTEGER(SIZE_T), INTENT(IN) :: msize  ! size of mantissa in bits
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tset_inpad_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tset_inpad_f
+
+

PURPOSE

+
  Fills unused internal floating point bits.
+
+

INPUTS

+
  type_id       - datatype identifier
+  padtype       - padding type for unused bits
+                  Possible values of padding type are:
+                    H5T_PAD_ZERO_F = 0
+                    H5T_PAD_ONE_F = 1
+                    H5T_PAD_BACKGROUND_F = 2
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tset_inpad_f(type_id, padtype, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(IN) :: padtype ! padding type for unused bits
+                                           ! in floating-point datatypes.
+                                           ! Possible values of padding type are:
+                                           ! H5T__PAD_ZERO_F = 0
+                                           ! H5T__PAD_ONE_F = 1
+                                           ! H5T__PAD_BACKGROUND_F = 2
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tset_norm_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tset_norm_f
+
+

PURPOSE

+
  Sets the mantissa normalization of a floating-point datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+  norm          - normalization types, valid values are:
+                    H5T_NORM_IMPLIED_F(0)
+                    H5T_NORM_MSBSET_F(1)
+                    H5T_NORM_NONE_F(2)
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tset_norm_f(type_id, norm, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(IN) :: norm !mantissa normalization of a floating-point datatype
+                                         !Valid normalization types are:
+                                         !H5T_NORM_IMPLIED_F(0),MSB of mantissa is not
+                                         !stored, always 1,  H5T_NORM_MSBSET_F(1), MSB of
+                                         !mantissa is always 1, H5T_NORM_NONE_F(2)
+                                         !Mantissa is not normalize
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tset_offset_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tset_offset_f
+
+

PURPOSE

+
  Sets the bit offset of the first significant bit.
+
+

INPUTS

+
  type_id       - datatype identifier
+  offset        - offset value
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tset_offset_f(type_id, offset, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER(SIZE_T), INTENT(IN) :: offset ! Datatype bit offset of the
+                                           ! first significant bit
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tset_order_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tset_order_f
+
+

PURPOSE

+
  Sets the byte ordering of an atomic datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+  order         - datatype byte order Possible values are:
+                    H5T_ORDER_LE_F
+                    H5T_ORDER_BE_F
+                    H5T_ORDER_VAX_F (not implemented yet)
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tset_order_f(type_id, order, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+    INTEGER, INTENT(IN) :: order   ! Datatype byte order, possible values
+                                   ! are:
+                                   ! H5T_ORDER_LE_F
+                                   ! H5T_ORDER_BE_F
+                                   ! H5T_ORDER_VAX_F
+    INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ +
+ +

h5tset_pad_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tset_pad_f
+
+

PURPOSE

+
  Sets the least and most-significant bits padding types.
+
+

INPUTS

+
  type_id       - datatype identifier
+  lsbpad        - least-significant bit padding type
+  msbpad        - most-significant bit padding type
+                  Possible values of padding type are:
+                    H5T_PAD_ERROR_F      = -1
+                    H5T_PAD_ZERO_F = 0
+                    H5T_PAD_ONE_F = 1
+                    H5T_PAD_BACKGROUND_F = 2
+                    H5T_PAD_NPAD_F      = 3
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tset_pad_f(type_id, lsbpad, msbpad, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(IN) :: lsbpad ! padding type of the
+                                           ! least significant bit
+            INTEGER, INTENT(IN) :: msbpad ! padding type of the
+                                           ! most significant bit
+                                           ! Possible values of padding type are:
+                                           ! H5T_PAD_ZERO_F = 0
+                                           ! H5T_PAD_ONE_F = 1
+                                           ! H5T_PAD_BACKGROUND_F = 2
+                                           ! H5T_PAD_ERROR_F      = -1
+                                           ! H5T_PAD_NPAD_F      = 3
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tset_precision_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tset_precision_f
+
+

PURPOSE

+
  Sets the precision of an atomic datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+  precision     - datatype precision
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tset_precision_f(type_id, precision, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER(SIZE_T), INTENT(IN) :: precision ! Datatype precision
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tset_sign_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tset_sign_f
+
+

PURPOSE

+
  Sets the sign proprety for an integer type.
+
+

INPUTS

+
  type_id       - datatype identifier
+  sign          - sign type
+                  Possible values are:
+                    - Unsigned integer type 
+                        H5T_SGN_NONE_F = 0
+                    - Two's complement signed integer type
+                        H5T_SGN_2_F = 1
+                    - error value: H5T_SGN_ERROR_F=-1
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tset_sign_f(type_id, sign, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(IN) :: sign !sign type for an integer type
+                                         !possible values are:
+                                         !Unsigned integer type H5T_SGN_NONE_F = 0
+                                         !Two's complement signed integer type
+                                         !H5T_SGN_2_F = 1
+                                         !or error value: H5T_SGN_ERROR_F=-1
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tset_size_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tset_size_f
+
+

PURPOSE

+
  Sets the total size for an atomic datatype.
+
+

INPUTS

+
  type_id       - datatype identifier
+  size          - size of the datatype
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tset_size_f(type_id, size, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER(SIZE_T), INTENT(IN) :: size ! Datatype size
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tset_strpad_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tset_strpad_f
+
+

PURPOSE

+
  Defines the storage mechanism for character strings.
+
+

INPUTS

+
  type_id       - datatype identifier
+  strpad        - storage method for a string datatype
+                  Possible values are:
+                    H5T_STR_NULLTERM_F,
+                    H5T_STR_NULLPAD_F,
+                    H5T_STR_SPACEPAD_F
+                    H5T_STR_ERROR_F
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tset_strpad_f(type_id, strpad, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            INTEGER, INTENT(IN) :: strpad ! string padding method for a string datatype
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tset_tag_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tset_tag_f
+
+

PURPOSE

+
  Tags an opaque datatype.
+
+

INPUTS

+
  type_id       - identifier for opaque datatype
+  tag           - unique ASCII string with which the opaque
+                  datatype is to be tagged.
+
+

OUTPUTS

+
  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  March 7, 2001
+
+

SOURCE

+
  SUBROUTINE h5tset_tag_f(type_id, tag, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+            CHARACTER(LEN=*), INTENT(IN) :: tag !Unique ASCII string with which
+                                                !the opaque datatype is to be tagged
+            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+
+ +
+ +

h5tvlen_create_f

+ +

[ Top ] [ H5T ] [ Subroutines ]

+

NAME

+
  h5tvlen_create_f
+
+

PURPOSE

+
  Creates a new variable-length datatype.
+
+

INPUTS

+
  type_id       - identifier iof base datatype
+
+

OUTPUTS

+
  vltype_id     - identifier for VL datatype
+  hdferr        - Returns 0 if successful and -1 if fails
+
+

AUTHOR

+
  Elena Pourmal
+  Wednesday, October 23, 2002
+
+

NOTES

+
  Only basic Fortran base datatypes are supported
+
+

SOURCE

+
  SUBROUTINE h5tvlen_create_f(type_id, vltype_id, hdferr)
+            IMPLICIT NONE
+            INTEGER(HID_T), INTENT(IN)  :: type_id    ! Datatype identifier
+            INTEGER(HID_T), INTENT(OUT) :: vltype_id  ! VL datatype identifier
+            INTEGER, INTENT(OUT) :: hdferr            ! Error code
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Zf_c.html b/fortran/doc/DevelGuide/src/H5Zf_c.html new file mode 100644 index 0000000..2973548 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Zf_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5Zf.c + + + + + +
+
+ +

H5Zf

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   This file contains C stubs for H5Z Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5Zff_f90.html b/fortran/doc/DevelGuide/src/H5Zff_f90.html new file mode 100644 index 0000000..8ccd0ae --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5Zff_f90.html @@ -0,0 +1,173 @@ + + + + + + + +./src/H5Zff.f90 + + + + + +
+
+ +

H5Z

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5Z
+
+

PURPOSE

+
  This file contains Fortran interfaces for H5Z functions. It includes
+  all the functions that are independent on whether the Fortran 2003 functions
+  are enabled or disabled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new H5Z function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5zfilter_avail_f

+ +

[ Top ] [ H5Z ] [ Subroutines ]

+

NAME

+
  h5zfilter_avail_f
+
+

PURPOSE

+
  Queries if filter is available
+
+

INPUTS

+
  filter        - filter
+
+

OUTPUTS

+
  status        - status; .TRUE. if filter is available,
+                  .FALSE. otherwise
+  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  March 12, 2003
+
+

SOURCE

+
  SUBROUTINE h5zfilter_avail_f(filter, status, hdferr)
+    IMPLICIT NONE
+    INTEGER, INTENT(IN)  :: filter      ! Filter; may be one of the following:
+                                        !   H5Z_FILTER_DEFLATE_F
+                                        !   H5Z_FILTER_SZIP_F
+                                        !   H5Z_FILTER_NBIT_F
+                                        !   H5Z_FILTER_SCALEOFFSET_F
+                                        !   H5Z_FILTER_SHUFFLE_F
+                                        !   H5Z_FILTER_FLETCHER32_F
+    LOGICAL, INTENT(OUT) :: status      ! Flag, idicates if filter
+                                        ! is availble  not ( TRUE or
+                                        ! FALSE)
+    INTEGER, INTENT(OUT) :: hdferr      ! Error code
+
+ +
+ +

h5zget_filter_info_f

+ +

[ Top ] [ H5Z ] [ Subroutines ]

+

NAME

+
  h5zget_filter_info_f
+
+

PURPOSE

+
  Queries if filter has its encoder and/or decoder
+  available
+
+

INPUTS

+
  filter        - filter
+
+

OUTPUTS

+
  config_flags  - Bit vector possibly containing the
+                  following values:
+                     H5Z_FILTER_ENCODE_ENABLED_F
+                     H5Z_FILTER_DECODE_ENABLED_F
+  hdferr:       - error code
+                   Success:  0
+                   Failure: -1
+
+

AUTHOR

+
  Nat Furrer and James Laird
+  June 16, 2004
+
+

SOURCE

+
  SUBROUTINE h5zget_filter_info_f(filter, config_flags, hdferr)
+    IMPLICIT NONE
+    INTEGER, INTENT(IN)  :: filter      ! Filter; may be one of the following:
+                                        !   H5Z_FILTER_DEFLATE_F
+                                        !   H5Z_FILTER_SZIP_F
+                                        !   H5Z_FILTER_NBIT_F
+                                        !   H5Z_FILTER_SCALEOFFSET_F
+                                        !   H5Z_FILTER_SHUFFLE_F
+                                        !   H5Z_FILTER_FLETCHER32_F
+    INTEGER, INTENT(OUT) :: config_flags! Flag, indicates if filter
+                                        ! has its encoder and/or decoder
+                                        ! available
+    INTEGER, INTENT(OUT) :: hdferr      ! Error code
+
+ +
+ +

h5zunregister_f

+ +

[ Top ] [ H5Z ] [ Subroutines ]

+

NAME

+
  h5zunregister_f
+
+

PURPOSE

+
  Unregisters specified filetr
+
+

INPUTS

+
  filter - filter; may have one of the following values:
+            H5Z_FILTER_DEFLATE_F
+            H5Z_FILTER_SZIP_F
+            H5Z_FILTER_NBIT_F
+            H5Z_FILTER_SCALEOFFSET_F
+            H5Z_FILTER_SHUFFLE_F
+            H5Z_FILTER_FLETCHER32_F
+
+

OUTPUTS

+
  hdferr - error code
+            Success:  0
+            Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  March 12, 2003
+
+

SOURCE

+
  SUBROUTINE h5zunregister_f(filter, hdferr)
+    IMPLICIT NONE
+    INTEGER, INTENT(IN)  :: filter
+    INTEGER, INTENT(OUT) :: hdferr  ! Error code
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5_DBLE_InterfaceExclude_f90.html b/fortran/doc/DevelGuide/src/H5_DBLE_InterfaceExclude_f90.html new file mode 100644 index 0000000..4e51e7f --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5_DBLE_InterfaceExclude_f90.html @@ -0,0 +1,53 @@ + + + + + + + +./src/H5_DBLE_InterfaceExclude.f90 + + + + + +
+
+ +

src/H5_DBLE_InterfaceExclude.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
   H5_DBLE_INTERFACE
+
+

FUNCTION

+
   This module is used for when the default REAL is of type DOUBLE PRECISION.
+   We do not include the double precision interfaces if the defaut REAL is
+   DOUBLE PRECISION since this would lead to a non-unique conflict with the
+   generic interfaces declared as REAL and those declared as DOUBLE PRECISION.
+
+

NOTES

+
   Empty module.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5_DBLE_InterfaceInclude_f90.html b/fortran/doc/DevelGuide/src/H5_DBLE_InterfaceInclude_f90.html new file mode 100644 index 0000000..5a71d52 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5_DBLE_InterfaceInclude_f90.html @@ -0,0 +1,54 @@ + + + + + + + +./src/H5_DBLE_InterfaceInclude.f90 + + + + + +
+
+ +

src/H5_DBLE_InterfaceInclude.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
   H5_DBLE_INTERFACE
+
+

FUNCTION

+
   This module is used for when the default REAL is not of the type DOUBLE PRECISION.
+   We only do not include the double precision interfaces if the defaut REAL is
+   DOUBLE PRECISION since this would lead to a non-unique conflict with the
+   generic interfaces declared as REAL. Otherwise it is okay to include the interfaces.
+
+

NOTES

+
   This module contains all the DOUBLE PRECISION interfaces and corresponding subroutines
+   from the HDF function catagory H5A, H5D and H5P.
+
+

AUTHOR

+
  M. Scot Breitenfeld
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5_f_c.html b/fortran/doc/DevelGuide/src/H5_f_c.html new file mode 100644 index 0000000..2bdbce1 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5_f_c.html @@ -0,0 +1,41 @@ + + + + + + + +./src/H5_f.c + + + + + +
+
+ +

fortran/src/H5_f.c

+ +

[ Top ] [ Modules ]

+

FUNCTION

+
   This file contains C stubs for H5 Fortran APIs
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5_ff_F03_f90.html b/fortran/doc/DevelGuide/src/H5_ff_F03_f90.html new file mode 100644 index 0000000..17f07c1 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5_ff_F03_f90.html @@ -0,0 +1,83 @@ + + + + + + + +./src/H5_ff_F03.f90 + + + + + +
+
+ +

H5LIB_PROVISIONAL

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5LIB_PROVISIONAL
+
+

PURPOSE

+
  This file contains helper functions for Fortran 2003 features and is
+  only compiled when Fortran 2003 features are enabled, otherwise
+  the file H5_ff_F90.f90 is compiled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5offsetof

+ +

[ Top ] [ H5LIB_PROVISIONAL ] [ Functions ]

+

NAME

+
  h5offsetof
+
+

PURPOSE

+
  Computes the offset in memory
+
+

INPUTS

+
  start - starting pointer address
+  end   - ending pointer address
+
+

OUTPUTS

+
  offset - offset
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  Augest 25, 2008
+
+

SOURCE

+
  FUNCTION h5offsetof(start,end) RESULT(offset)
+    USE, INTRINSIC :: ISO_C_BINDING
+    USE H5GLOBAL
+    IMPLICIT NONE
+    INTEGER(SIZE_T) :: offset
+    TYPE(C_PTR), VALUE, INTENT(IN) :: start, end
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5_ff_F90_f90.html b/fortran/doc/DevelGuide/src/H5_ff_F90_f90.html new file mode 100644 index 0000000..c310ef2 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5_ff_F90_f90.html @@ -0,0 +1,48 @@ + + + + + + + +./src/H5_ff_F90.f90 + + + + + +
+
+ +

H5LIB_PROVISIONAL (F90)

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5LIB_PROVISIONAL
+
+

FILE

+
  fortran/src/H5_ff_F90.f90
+
+

PURPOSE

+
  This file is a dummy module for when Fortran 2003 features are not enabled.
+  It is compiled in place of H5_ff_F03.f90 and is empty.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5_ff_f90.html b/fortran/doc/DevelGuide/src/H5_ff_f90.html new file mode 100644 index 0000000..021c7c5 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5_ff_f90.html @@ -0,0 +1,269 @@ + + + + + + + +./src/H5_ff.f90 + + + + + +
+
+ +

H5LIB

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5LIB
+
+

PURPOSE

+
  This module provides fortran specific helper functions for the HDF library
+
+

USES

+
  H5LIB_PROVISIONAL - This module provides helper functions for Fortran 2003
+                      only features. If Fortran 2003 functions are enabled then
+                      H5_ff_F03.f90 is compiled, else H5_ff_F90.f90,
+                      which is just a place holder blank module, is compiled.
+
+

NOTES

+
                         *** IMPORTANT ***
+  If you add a new function you must add the function name to the
+  Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
+  This is needed for Windows based operating systems.
+
+ +
+ +

h5check_version_f

+ +

[ Top ] [ H5LIB ] [ Subroutines ]

+

NAME

+
  h5check_version_f
+
+

PURPOSE

+
  Verifies that library versions are consistent.
+
+

INPUTS

+
  majnum               - major version of the library
+  minum                - minor version of the library
+  relnum               - release version of the library
+
+

OUTPUTS

+
  error                - error code
+                          Success:  0
+                          Failure:  application aborts
+
+

AUTHOR

+
  Elena Pourmal
+  September 24, 2002
+
+

SOURCE

+
  SUBROUTINE h5check_version_f(majnum, minnum, relnum, error)
+    USE H5GLOBAL
+    IMPLICIT NONE
+    INTEGER, INTENT(IN) :: majnum, minnum, relnum
+    INTEGER, INTENT(OUT) :: error
+
+ +
+ +

h5close_f

+ +

[ Top ] [ H5LIB ] [ Subroutines ]

+

NAME

+
  h5close_f
+
+

PURPOSE

+
  Closes the HDF5 library and Fortran90 interface.
+
+

OUTPUTS

+
  error - error code
+            Success:  0
+            Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5close_f(error)
+    USE H5GLOBAL
+    IMPLICIT NONE
+    INTEGER, INTENT(OUT) :: error
+
+ +
+ +

h5dont_atexit_f

+ +

[ Top ] [ H5LIB ] [ Subroutines ]

+

NAME

+
  h5dont_atexit_f
+
+

PURPOSE

+
  Instructs library not to install atexit cleanup routine.
+
+

OUTPUTS

+
  error  - error code
+             Success:  0
+             Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  September 24, 2002
+
+

SOURCE

+
  SUBROUTINE h5dont_atexit_f(error)
+    USE H5GLOBAL
+    IMPLICIT NONE
+    INTEGER, INTENT(OUT) :: error
+
+ +
+ +

h5garbage_collect_f

+ +

[ Top ] [ H5LIB ] [ Subroutines ]

+

NAME

+
  h5garbage_collect_f
+
+

PURPOSE

+
  Garbage collects on all free-lists of all types.
+
+

OUTPUTS

+
  error  - error code
+             Success:  0
+             Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  September 24, 2002
+
+

SOURCE

+
  SUBROUTINE h5garbage_collect_f(error)
+    USE H5GLOBAL
+    IMPLICIT NONE
+    INTEGER, INTENT(OUT) :: error
+
+ +
+ +

h5get_libversion_f

+ +

[ Top ] [ H5LIB ] [ Subroutines ]

+

NAME

+
  h5get_libversion_f
+
+

PURPOSE

+
  Returns the HDF5 LIbrary release number
+
+

OUTPUTS

+
  majnum               - major version of the library
+  minum                - minor version of the library
+  relnum               - release version of the library
+  error                - error code
+                           Success:  0
+                           Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  September 24, 2002
+
+

SOURCE

+
  SUBROUTINE h5get_libversion_f(majnum, minnum, relnum, error)
+    USE H5GLOBAL
+    IMPLICIT NONE
+    INTEGER, INTENT(OUT) :: majnum, minnum, relnum, error
+
+ +
+ +

h5kind_to_type

+ +

[ Top ] [ H5LIB ] [ Functions ]

+

NAME

+
  h5kind_to_type
+
+

PURPOSE

+
  Converts the KIND to the correct HDF type
+
+

INPUTS

+
  kind    - Fortran KIND parameter
+  flag    - whether KIND is of type INTEGER or REAL:
+              H5_INTEGER_KIND - integer
+              H5_REAL_KIND    - real
+
+

OUTPUTS

+
  h5_type - returns the type
+
+

AUTHOR

+
  M. Scot Breitenfeld
+  Augest 25, 2008
+
+

SOURCE

+
  INTEGER(HID_T) FUNCTION h5kind_to_type(kind, flag) RESULT(h5_type)
+    USE H5GLOBAL
+    IMPLICIT NONE
+    INTEGER, INTENT(IN) :: kind
+    INTEGER, INTENT(IN) :: flag
+
+ +
+ +

h5open_f

+ +

[ Top ] [ H5LIB ] [ Subroutines ]

+

NAME

+
  h5open_f
+
+

PURPOSE

+
  Initializes the HDF5 library and Fortran90 interface.
+
+

OUTPUTS

+
  error - error code
+            Success:  0
+            Failure: -1
+
+

AUTHOR

+
  Elena Pourmal
+  August 12, 1999
+
+

HISTORY

+
  Explicit Fortran interfaces were added for
+  called C functions (it is needed for Windows
+  port).  February 28, 2001
+
+

SOURCE

+
  SUBROUTINE h5open_f(error)
+    USE H5GLOBAL
+    IMPLICIT NONE
+    INTEGER, INTENT(OUT) :: error
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5f90global_f90.html b/fortran/doc/DevelGuide/src/H5f90global_f90.html new file mode 100644 index 0000000..587b6d0 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5f90global_f90.html @@ -0,0 +1,61 @@ + + + + + + + +./src/H5f90global.f90 + + + + + +
+
+ +

H5GLOBAL

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE H5GLOBAL
+
+

FILE

+
  src/fortran/H5f90global.f90
+
+

PURPOSE

+
  This module is used to pass C stubs for H5 Fortran APIs. The C stubs are
+  packed into arrays in H5_f.c and these arrays are then passed to Fortran.
+  This module then uses EQUIVALENCE to assign elements of the arrays to
+  Fortran equivalent C stubs.
+
+

NOTES

+
  The size of the C arrays in H5_f.c has to match the values of the variables
+  declared as PARAMETER, hence if the size of an array in H5_f.c is changed
+  then the PARAMETER of that corresponding array in Fortran must also be changed.
+
+

USES

+
  H5FORTRAN_TYPES       - This module is generated at run time. See
+
+

AUTHOR

+
  Elena Pourmal
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5f90kit_c.html b/fortran/doc/DevelGuide/src/H5f90kit_c.html new file mode 100644 index 0000000..1329a87 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5f90kit_c.html @@ -0,0 +1,44 @@ + + + + + + + +./src/H5f90kit.c + + + + + +
+
+ +

H5f90kit

+ +

[ Top ] [ Modules ]

+

PURPOSE

+
   Routines from HDF4 to deal with C-FORTRAN issues:
+
+   HD5f2cstring   -- convert a Fortran string to a C string
+   HD5packFstring -- convert a C string into a Fortran string
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5match_types_c.html b/fortran/doc/DevelGuide/src/H5match_types_c.html new file mode 100644 index 0000000..083319a --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5match_types_c.html @@ -0,0 +1,49 @@ + + + + + + + +./src/H5match_types.c + + + + + +
+
+ +

H5match_types

+ +

[ Top ] [ Procedures ]

+

NAME

+
  Executable: H5match_types
+
+

FILE

+
  fortran/src/H5match_types.c
+
+

PURPOSE

+
  C Program to match C types to Fortran types.
+  Creates the files H5f90i_gen.h for the C code and
+  H5fortran_types.f90 for the Fortran code.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5test_kind_SIZEOF_f90.html b/fortran/doc/DevelGuide/src/H5test_kind_SIZEOF_f90.html new file mode 100644 index 0000000..3494db0 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5test_kind_SIZEOF_f90.html @@ -0,0 +1,61 @@ + + + + + + + +./src/H5test_kind_SIZEOF.f90 + + + + + +
+
+ +

H5test_kind_SIZEOF

+ +

[ Top ] [ Procedures ]

+

NAME

+
  Executable: H5test_kind
+
+

FILE

+
  fortran/src/H5test_kind_SIZEOF.f90
+
+

PURPOSE

+
  This stand alone program is used at build time to generate the program
+  H5fortran_detect.f90. It cycles through all the available KIND parameters for
+  integers and reals. The appropriate program and subroutines are then generated
+  depending on which of the KIND values are found.
+
+

NOTES

+
  This program is used in place of H5test_kind.f90 when the Fortran intrinsic
+  function SIZEOF is available. It generates code that makes use of SIZEOF in
+  H5fortran_detect.f90 which is a portable solution.
+
+  The availability of SIZEOF is checked at configure time and the TRUE/FALSE
+  condition is set in the configure variable "FORTRAN_HAVE_SIZEOF".
+
+

AUTHOR

+
  M. Scot Breitenfeld
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/H5test_kind_f90.html b/fortran/doc/DevelGuide/src/H5test_kind_f90.html new file mode 100644 index 0000000..c08e488 --- /dev/null +++ b/fortran/doc/DevelGuide/src/H5test_kind_f90.html @@ -0,0 +1,62 @@ + + + + + + + +./src/H5test_kind.f90 + + + + + +
+
+ +

H5test_kind

+ +

[ Top ] [ Procedures ]

+

NAME

+
  Executable: H5test_kind
+
+

FILE

+
  fortran/src/H5test_kind.f90
+
+

PURPOSE

+
  This stand alone program is used at build time to generate the program
+  H5fortran_detect.f90. It cycles through all the available KIND parameters for
+  integers and reals. The appropriate program and subroutines are then generated
+  depending on which of the KIND values are found.
+
+

NOTES

+
  This program is depreciated in favor of H5test_kind_SIZEOF.f90 and is only
+  used when the Fortran intrinsic function SIZEOF is not available. It generates
+  code that does not make use of SIZEOF in H5fortran_detect.f90 which is less
+  portable in comparison to using SIZEOF.
+
+  The availability of SIZEOF is checked at configure time and the TRUE/FALSE
+  condition is set in the configure variable "FORTRAN_HAVE_SIZEOF".
+
+

AUTHOR

+
  Elena Pourma
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/HDF5_f90.html b/fortran/doc/DevelGuide/src/HDF5_f90.html new file mode 100644 index 0000000..1490c7c --- /dev/null +++ b/fortran/doc/DevelGuide/src/HDF5_f90.html @@ -0,0 +1,47 @@ + + + + + + + +./src/HDF5.f90 + + + + + +
+
+ +

HDF5

+ +

[ Top ] [ Modules ]

+

NAME

+
  MODULE HDF5
+
+

FILE

+
  src/fortran/src/HDF5.f90
+
+

PURPOSE

+
  This is the main module used for linking to the Fortran HDF library.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/src/HDF5mpio_f90.html b/fortran/doc/DevelGuide/src/HDF5mpio_f90.html new file mode 100644 index 0000000..9ef5f32 --- /dev/null +++ b/fortran/doc/DevelGuide/src/HDF5mpio_f90.html @@ -0,0 +1,45 @@ + + + + + + + +./src/HDF5mpio.f90 + + + + + +
+
+ +

HDF5 (mpio)

+ +

[ Top ] [ Modules ]

+

NAME

+
  HDF5
+
+

PURPOSE

+
  This is the main module used for linking to the Fortran parallel HDF library.
+  This file replaces HDF5.f90 when compiling the parallel library.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/fflush1_f90.html b/fortran/doc/DevelGuide/test/fflush1_f90.html new file mode 100644 index 0000000..eaab841 --- /dev/null +++ b/fortran/doc/DevelGuide/test/fflush1_f90.html @@ -0,0 +1,47 @@ + + + + + + + +./test/fflush1.f90 + + + + + +
+
+ +

fortran/test/fflush1.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  FFLUSH1EXAMPLE
+
+

FUNCTION

+
  This is the first half of a two-part test that makes sure
+  that a file can be read after an application crashes as long
+  as the file was flushed first.  We simulate by exit the 
+  the program using stop statement
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/fflush2_f90.html b/fortran/doc/DevelGuide/test/fflush2_f90.html new file mode 100644 index 0000000..23b7797 --- /dev/null +++ b/fortran/doc/DevelGuide/test/fflush2_f90.html @@ -0,0 +1,47 @@ + + + + + + + +./test/fflush2.f90 + + + + + +
+
+ +

fortran/test/fflush2.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  fflush2.f90
+
+

FUNCTION

+
  This is the second half of a two-part test that makes sure
+  that a file can be read after an application crashes as long
+  as the file was flushed first.  This half tries to read the
+  file created by the first half.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/fortranlib_test_1_8_f90.html b/fortran/doc/DevelGuide/test/fortranlib_test_1_8_f90.html new file mode 100644 index 0000000..3ce387d --- /dev/null +++ b/fortran/doc/DevelGuide/test/fortranlib_test_1_8_f90.html @@ -0,0 +1,44 @@ + + + + + + + +./test/fortranlib_test_1_8.f90 + + + + + +
+
+ +

fortran/test/fortranlib_test_1_8.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  fortranlib_test_1_8.f90
+
+

FUNCTION

+
  Basic testing of Fortran API's introduced in 1.8 release.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/fortranlib_test_F03_f90.html b/fortran/doc/DevelGuide/test/fortranlib_test_F03_f90.html new file mode 100644 index 0000000..1a0c7be --- /dev/null +++ b/fortran/doc/DevelGuide/test/fortranlib_test_F03_f90.html @@ -0,0 +1,45 @@ + + + + + + + +./test/fortranlib_test_F03.f90 + + + + + +
+
+ +

fortran/test/fortranlib_test_F03.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  fortranlib_test_F03.f90
+
+

FUNCTION

+
  Basic testing of Fortran API's requiring Fortran 2003
+  compliance.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/fortranlib_test_f90.html b/fortran/doc/DevelGuide/test/fortranlib_test_f90.html new file mode 100644 index 0000000..29fb2f1 --- /dev/null +++ b/fortran/doc/DevelGuide/test/fortranlib_test_f90.html @@ -0,0 +1,44 @@ + + + + + + + +./test/fortranlib_test.f90 + + + + + +
+
+ +

fortran/test/fortranlib_test.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  fortranlib_test.f90
+
+

FUNCTION

+
  Basic testing of Fortran API's functionality.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tF2003_f90.html b/fortran/doc/DevelGuide/test/tF2003_f90.html new file mode 100644 index 0000000..8101411 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tF2003_f90.html @@ -0,0 +1,53 @@ + + + + + + + +./test/tF2003.f90 + + + + + +
+
+ +

fortran/test/tF2003.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tF2003.f90
+
+

FUNCTION

+
  Test FORTRAN HDF5 APIs which are dependent on the FORTRAN 2003
+  features. Tests H5L, H5P, H5T APIs. 
+
+

USES

+
  liter_cb_mod, test_genprop_cls_cb1_mod
+
+

CONTAINS SUBROUTINES

+
  test_iter_group, test_create, test_genprop_class_callback,
+  test_array_compound_atomic, test_array_compound_array,
+  test_array_bkg 
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5A_1_8_f90.html b/fortran/doc/DevelGuide/test/tH5A_1_8_f90.html new file mode 100644 index 0000000..c217d99 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5A_1_8_f90.html @@ -0,0 +1,51 @@ + + + + + + + +./test/tH5A_1_8.f90 + + + + + +
+
+ +

fortran/test/tH5A_1_8.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5A_1_8.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5A APIs introduced in 1.8.
+
+

CONTAINS SUBROUTINES

+
  attribute_test_1_8, test_attr_corder_create_compact, test_attr_null_space,
+  test_attr_create_by_name, test_attr_info_by_idx, attr_info_by_idx_check,
+  test_attr_shared_rename, test_attr_delete_by_idx, test_attr_shared_delete,
+  test_attr_dense_open, test_attr_dense_verify, test_attr_corder_create_basic,
+  test_attr_basic_write, test_attr_many, attr_open_check, 
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5A_f90.html b/fortran/doc/DevelGuide/test/tH5A_f90.html new file mode 100644 index 0000000..87c5a45 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5A_f90.html @@ -0,0 +1,47 @@ + + + + + + + +./test/tH5A.f90 + + + + + +
+
+ +

fortran/test/tH5A.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5A.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5A APIs.
+
+

CONTAINS SUBROUTINES

+
  attribute_test 
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5D_f90.html b/fortran/doc/DevelGuide/test/tH5D_f90.html new file mode 100644 index 0000000..c840425 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5D_f90.html @@ -0,0 +1,52 @@ + + + + + + + +./test/tH5D.f90 + + + + + +
+
+ +

fortran/test/tH5D.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5D.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5D APIs.
+
+

NOTES

+
  Tests the H5D APIs functionalities of:
+   h5dcreate_f, h5dopen_f, h5dclose_f, h5dget_space_f, h5dget_type_f,
+   h5dread_f, and h5dwrite_f
+
+

CONTAINS SUBROUTINES

+
  datasettest, extenddsettest
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5E_f90.html b/fortran/doc/DevelGuide/test/tH5E_f90.html new file mode 100644 index 0000000..6a1ef56 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5E_f90.html @@ -0,0 +1,51 @@ + + + + + + + +./test/tH5E.f90 + + + + + +
+
+ +

fortran/test/tH5E.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5E.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5E APIs.
+
+

NOTES

+
  Tests the H5D APIs functionalities of:
+   h5eprint_f
+
+

CONTAINS SUBROUTINES

+
  error_report_test
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5F_f90.html b/fortran/doc/DevelGuide/test/tH5F_f90.html new file mode 100644 index 0000000..d1aff59 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5F_f90.html @@ -0,0 +1,47 @@ + + + + + + + +./test/tH5F.f90 + + + + + +
+
+ +

fortran/test/tH5F.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5F.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5F APIs.
+
+

CONTAINS SUBROUTINES

+
  mountingtest, reopentest, plisttest, file_close, file_space
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5G_1_8_f90.html b/fortran/doc/DevelGuide/test/tH5G_1_8_f90.html new file mode 100644 index 0000000..81fdd3c --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5G_1_8_f90.html @@ -0,0 +1,49 @@ + + + + + + + +./test/tH5G_1_8.f90 + + + + + +
+
+ +

fortran/test/tH5G_1_8.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5G_1_8.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5G APIs introduced in 1.8.
+
+

CONTAINS SUBROUTINES

+
  group_test, group_info, timestamps, mklinks, test_move_preserves, lifecycle
+  cklinks, delete_by_idx, link_info_by_idx_check, test_lcpl, objcopy, 
+  lapl_nlinks
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5G_f90.html b/fortran/doc/DevelGuide/test/tH5G_f90.html new file mode 100644 index 0000000..6c60a3c --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5G_f90.html @@ -0,0 +1,47 @@ + + + + + + + +./test/tH5G.f90 + + + + + +
+
+ +

fortran/test/tH5G.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5G.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5G APIs.
+
+

CONTAINS SUBROUTINES

+
  group_test
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5I_f90.html b/fortran/doc/DevelGuide/test/tH5I_f90.html new file mode 100644 index 0000000..52e21fc --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5I_f90.html @@ -0,0 +1,47 @@ + + + + + + + +./test/tH5I.f90 + + + + + +
+
+ +

fortran/test/tH5I.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5I.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5I APIs.
+
+

CONTAINS SUBROUTINES

+
  identifier_test
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5O_f90.html b/fortran/doc/DevelGuide/test/tH5O_f90.html new file mode 100644 index 0000000..a128da5 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5O_f90.html @@ -0,0 +1,47 @@ + + + + + + + +./test/tH5O.f90 + + + + + +
+
+ +

fortran/test/tH5O.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5O.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5O APIs.
+
+

CONTAINS SUBROUTINES

+
  test_h5o, test_h5o_link, test_h5o_plist
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5P_f90.html b/fortran/doc/DevelGuide/test/tH5P_f90.html new file mode 100644 index 0000000..edc0787 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5P_f90.html @@ -0,0 +1,47 @@ + + + + + + + +./test/tH5P.f90 + + + + + +
+
+ +

fortran/test/tH5P.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5P.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5P APIs.
+
+

CONTAINS SUBROUTINES

+
  external_test, multi_file_test
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5R_f90.html b/fortran/doc/DevelGuide/test/tH5R_f90.html new file mode 100644 index 0000000..fd44062 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5R_f90.html @@ -0,0 +1,51 @@ + + + + + + + +./test/tH5R.f90 + + + + + +
+
+ +

fortran/test/tH5R.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5R.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5R, Reference Interface, APIs.
+
+

NOTES

+
  Tests h5rcreate_f, h5rdereference_f, h5rget_name_f 
+  and H5Rget_object_type functions
+
+

CONTAINS SUBROUTINES

+
  refobjtest, refregtest
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5S_f90.html b/fortran/doc/DevelGuide/test/tH5S_f90.html new file mode 100644 index 0000000..5879d28 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5S_f90.html @@ -0,0 +1,54 @@ + + + + + + + +./test/tH5S.f90 + + + + + +
+
+ +

fortran/test/tH5S.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5S.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5S, Dataspace Interface, APIs.
+
+

NOTES

+
  Tests the following functionalities:
+   h5screate_f, h5scopy_f, h5screate_simple_f, h5sis_simple_f,
+   h5sget_simple_extent_dims_f,h5sget_simple_extent_ndims_f
+   h5sget_simple_extent_npoints_f, h5sget_simple_extent_type_f,
+   h5sextent_copy_f, h5sset_extent_simple_f, h5sset_extent_none_f
+
+

CONTAINS SUBROUTINES

+
  dataspace_basic_test
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5Sselect_f90.html b/fortran/doc/DevelGuide/test/tH5Sselect_f90.html new file mode 100644 index 0000000..e8eaa73 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5Sselect_f90.html @@ -0,0 +1,56 @@ + + + + + + + +./test/tH5Sselect.f90 + + + + + +
+
+ +

fortran/test/tH5Sselect.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5Sselect.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5S, Selection-related Dataspace Interface, APIs.
+
+

NOTES

+
  Tests the following functionalities:
+    h5sget_select_npoints_f, h5sselect_elements_f, h5sselect_all_f,
+    h5sselect_none_f, h5sselect_valid_f, h5sselect_hyperslab_f,
+    h5sget_select_bounds_f, h5sget_select_elem_pointlist_f,
+    h5sget_select_elem_npoints_f, h5sget_select_hyper_blocklist_f,
+    h5sget_select_hyper_nblocks_f, h5sget_select_npoints_f   
+
+

CONTAINS SUBROUTINES

+
  test_select_hyperslab, test_select_element, test_basic_select,
+  test_select_point, test_select_combine, test_select_bounds
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5T_f90.html b/fortran/doc/DevelGuide/test/tH5T_f90.html new file mode 100644 index 0000000..35006b3 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5T_f90.html @@ -0,0 +1,47 @@ + + + + + + + +./test/tH5T.f90 + + + + + +
+
+ +

fortran/test/tH5T.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5T.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5T APIs.
+
+

CONTAINS SUBROUTINES

+
  compoundtest, basic_data_type_test, enumtest, test_derived_flt
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5VL_f90.html b/fortran/doc/DevelGuide/test/tH5VL_f90.html new file mode 100644 index 0000000..a34a01d --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5VL_f90.html @@ -0,0 +1,47 @@ + + + + + + + +./test/tH5VL.f90 + + + + + +
+
+ +

fortran/test/tH5VL.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5VL.f90
+
+

FUNCTION

+
  Basic testing of Fortran Variable_length datatypes APIs.
+
+

CONTAINS SUBROUTINES

+
  vl_test_integer, vl_test_real, vl_test_string 
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tH5Z_f90.html b/fortran/doc/DevelGuide/test/tH5Z_f90.html new file mode 100644 index 0000000..94325b9 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tH5Z_f90.html @@ -0,0 +1,47 @@ + + + + + + + +./test/tH5Z.f90 + + + + + +
+
+ +

fortran/test/tH5Z.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tH5Z.f90
+
+

FUNCTION

+
  Basic testing of Fortran H5Z szip APIs.
+
+

CONTAINS SUBROUTINES

+
  filters_test, szip_test
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/t_c.html b/fortran/doc/DevelGuide/test/t_c.html new file mode 100644 index 0000000..c9512a7 --- /dev/null +++ b/fortran/doc/DevelGuide/test/t_c.html @@ -0,0 +1,44 @@ + + + + + + + +./test/t.c + + + + + +
+
+ +

fortran/test/tc.c

+ +

[ Top ] [ Modules ]

+

NAME

+
   tc.c
+
+

FUNCTION

+
   This file contains C routines needed for the test programs.
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/test/tf_f90.html b/fortran/doc/DevelGuide/test/tf_f90.html new file mode 100644 index 0000000..e3c51f4 --- /dev/null +++ b/fortran/doc/DevelGuide/test/tf_f90.html @@ -0,0 +1,48 @@ + + + + + + + +./test/tf.f90 + + + + + +
+
+ +

fortran/test/tf.f90

+ +

[ Top ] [ Modules ]

+

NAME

+
  tf.f90
+
+

FUNCTION

+
  Contains subroutines which are needed in all the hdf5 fortran tests
+
+

CONTAINS SUBROUTINES

+
  write_test_status, check, verify, verifyLogical, verifyString, h5_fixname_f,
+  h5_cleanup_f, h5_exit_f, h5_env_nocleanup_f
+
+ +
+ + + diff --git a/fortran/doc/DevelGuide/toc_index.html b/fortran/doc/DevelGuide/toc_index.html new file mode 100644 index 0000000..94a2792 --- /dev/null +++ b/fortran/doc/DevelGuide/toc_index.html @@ -0,0 +1,552 @@ + + + + + + + +Table of Contents + + + + +
+
+ +
+

TABLE OF CONTENTS

+ +
+ + + diff --git a/fortran/examples/Makefile.am b/fortran/examples/Makefile.am index 57a8f94..d767490 100644 --- a/fortran/examples/Makefile.am +++ b/fortran/examples/Makefile.am @@ -31,17 +31,28 @@ endif # be run. # We don't tell automake about these programs so that it doesn't try to # compile them with the regular fortran compiler. -TEST_PROG=dsetexample fileexample rwdsetexample attrexample groupexample \ - grpsexample grpdsetexample hyperslab selectele grpit refobjexample \ - refregexample mountexample compound -TEST_SCRIPT=testh5fc.sh + +TEST_PROG=dsetexample fileexample rwdsetexample attrexample groupexample \ + grpsexample grpdsetexample hyperslab selectele grpit refobjexample \ + refregexample mountexample compound # List files to be installed here -INSTALL_FILES=dsetexample.f90 fileexample.f90 rwdsetexample.f90 \ - attrexample.f90 groupexample.f90 grpsexample.f90 grpdsetexample.f90 \ - hyperslab.f90 selectele.f90 grpit.f90 refobjexample.f90 \ - refregexample.f90 mountexample.f90 compound.f90 ph5example.f90 +INSTALL_FILES=dsetexample.f90 fileexample.f90 rwdsetexample.f90 \ + attrexample.f90 groupexample.f90 grpsexample.f90 grpdsetexample.f90 \ + hyperslab.f90 selectele.f90 grpit.f90 refobjexample.f90 \ + refregexample.f90 mountexample.f90 compound.f90 ph5example.f90 INSTALL_SCRIPT_FILES = run-fortran-ex.sh +INSTALL_SCRIPT_FILES = run-fortran-ex.sh + + +# Add attention tests for Fortran 2003 features +if FORTRAN_2003_CONDITIONAL_F + TEST_PROG += rwdset_fortran2003 nested_derived_type \ + compound_fortran2003 compound_complex_fortran2003 + INSTALL_FILES += rwdset_fortran2003.f90 nested_derived_type.f90 \ + compound_fortran2003.f90 compound_complex_fortran2003.f90 +endif +TEST_SCRIPT=testh5fc.sh # Mark this directory as part of the Fortran API FORTRAN_API=yes @@ -89,6 +100,12 @@ refregexample: refregexample.f90 mountexample: mountexample.f90 compound: compound.f90 ph5example: ph5example.f90 +if FORTRAN_2003_CONDITIONAL_F +rwdset_fortran2003: rwdset_fortran2003.f90 +nested_derived_type: nested_derived_type.f90 +compound_fortran2003: compound_fortran2003.f90 +compound_complex_fortran2003: compound_complex_fortran2003.f90 +endif include $(top_srcdir)/config/examples.am include $(top_srcdir)/config/conclude.am diff --git a/fortran/examples/Makefile.in b/fortran/examples/Makefile.in index c0f89c3..12460f3 100644 --- a/fortran/examples/Makefile.in +++ b/fortran/examples/Makefile.in @@ -59,6 +59,14 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/commence.am \ $(top_srcdir)/config/conclude.am \ $(top_srcdir)/config/examples.am + +# Add attention tests for Fortran 2003 features +@FORTRAN_2003_CONDITIONAL_F_TRUE@am__append_1 = rwdset_fortran2003 nested_derived_type \ +@FORTRAN_2003_CONDITIONAL_F_TRUE@ compound_fortran2003 compound_complex_fortran2003 + +@FORTRAN_2003_CONDITIONAL_F_TRUE@am__append_2 = rwdset_fortran2003.f90 nested_derived_type.f90 \ +@FORTRAN_2003_CONDITIONAL_F_TRUE@ compound_fortran2003.f90 compound_complex_fortran2003.f90 + TESTS = subdir = fortran/examples ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -145,6 +153,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ +FC2003 = @FC2003@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ @@ -165,10 +174,12 @@ H5_LONE_COLON = @H5_LONE_COLON@ H5_VERSION = @H5_VERSION@ HADDR_T = @HADDR_T@ HAVE_DMALLOC = @HAVE_DMALLOC@ +HAVE_FORTRAN_2003 = @HAVE_FORTRAN_2003@ HDF5_HL = @HDF5_HL@ HDF5_INTERFACES = @HDF5_INTERFACES@ HDF_CXX = @HDF_CXX@ HDF_FORTRAN = @HDF_FORTRAN@ +HDF_FORTRAN2003 = @HDF_FORTRAN2003@ HID_T = @HID_T@ HL = @HL@ HL_FOR = @HL_FOR@ @@ -367,19 +378,19 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5 # be run. # We don't tell automake about these programs so that it doesn't try to # compile them with the regular fortran compiler. -TEST_PROG = dsetexample fileexample rwdsetexample attrexample groupexample \ - grpsexample grpdsetexample hyperslab selectele grpit refobjexample \ - refregexample mountexample compound - -TEST_SCRIPT = testh5fc.sh +TEST_PROG = dsetexample fileexample rwdsetexample attrexample \ + groupexample grpsexample grpdsetexample hyperslab selectele \ + grpit refobjexample refregexample mountexample compound \ + $(am__append_1) # List files to be installed here -INSTALL_FILES = dsetexample.f90 fileexample.f90 rwdsetexample.f90 \ - attrexample.f90 groupexample.f90 grpsexample.f90 grpdsetexample.f90 \ - hyperslab.f90 selectele.f90 grpit.f90 refobjexample.f90 \ - refregexample.f90 mountexample.f90 compound.f90 ph5example.f90 - +INSTALL_FILES = dsetexample.f90 fileexample.f90 rwdsetexample.f90 \ + attrexample.f90 groupexample.f90 grpsexample.f90 \ + grpdsetexample.f90 hyperslab.f90 selectele.f90 grpit.f90 \ + refobjexample.f90 refregexample.f90 mountexample.f90 \ + compound.f90 ph5example.f90 $(am__append_2) INSTALL_SCRIPT_FILES = run-fortran-ex.sh +TEST_SCRIPT = testh5fc.sh # Mark this directory as part of the Fortran API FORTRAN_API = yes @@ -654,6 +665,10 @@ refregexample: refregexample.f90 mountexample: mountexample.f90 compound: compound.f90 ph5example: ph5example.f90 +@FORTRAN_2003_CONDITIONAL_F_TRUE@rwdset_fortran2003: rwdset_fortran2003.f90 +@FORTRAN_2003_CONDITIONAL_F_TRUE@nested_derived_type: nested_derived_type.f90 +@FORTRAN_2003_CONDITIONAL_F_TRUE@compound_fortran2003: compound_fortran2003.f90 +@FORTRAN_2003_CONDITIONAL_F_TRUE@compound_complex_fortran2003: compound_complex_fortran2003.f90 # How to create EXAMPLEDIR if it doesn't already exist $(EXAMPLEDIR): diff --git a/fortran/examples/compound_complex_fortran2003.f90 b/fortran/examples/compound_complex_fortran2003.f90 new file mode 100644 index 0000000..19671f7 --- /dev/null +++ b/fortran/examples/compound_complex_fortran2003.f90 @@ -0,0 +1,117 @@ +! This is the F2003 version of the h5_compound.c example source code. +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! This example shows how to create an array of a compound datatype which +! contains an array of type complex and how to write it to hdf5 +! and how to read it back into a compound datatype for hdf5. +! + +PROGRAM compound_complex_fortran2003 + + USE hdf5 + USE ISO_C_BINDING + IMPLICIT NONE + + INTEGER, PARAMETER :: r_k8 = KIND(0.0d0) + INTEGER, PARAMETER :: NMAX = 3 + + TYPE sample + COMPLEX(KIND=r_k8), DIMENSION(1:NMAX) :: nlev + REAL(KIND=r_k8) :: N + END TYPE sample + + INTEGER(HID_T) :: sample_type_id, dset_id, dspace_id, file_id + INTEGER(HSIZE_T) :: dims(1) = (/NMAX/) + INTEGER :: error + + TYPE(sample), DIMENSION(1:NMAX), TARGET :: samples, read_samples + INTEGER :: i + + TYPE(C_PTR) :: f_ptr + INTEGER(HSIZE_T), DIMENSION(1) :: array_dims=(/2*NMAX/) ! complex is really (real,real) so double size of array + INTEGER(hid_t) :: array_type_id ! Nested Array Datatype ID + + ! Initialize data + DO i=1,NMAX + samples(i)%nlev(1:NMAX) = (3.14159_r_k8, 2.71828_r_k8) + samples(i)%N = i + END DO + + ! Initialize FORTRAN interface. + CALL h5open_f(error) + + ! Create a new file using default properties. + CALL h5fcreate_f("test.h5", H5F_ACC_TRUNC_F, file_id, error) + ! + ! Create the memory data type. + ! + CALL H5Tcreate_f(H5T_COMPOUND_F, H5OFFSETOF(C_LOC(samples(1)), C_LOC(samples(2))), sample_type_id, error) + + ! Create the array type + CALL h5Tarray_create_f(H5T_NATIVE_DOUBLE, 1, array_dims, array_type_id, error) + ! Then use that array type to insert values into + CALL H5Tinsert_f( sample_type_id, "nlev", & + H5OFFSETOF(C_LOC(samples(1)),C_LOC(samples(1)%nlev(1))), array_type_id, error) + CALL H5Tinsert_f( sample_type_id, "N", & + H5OFFSETOF(C_LOC(samples(1)),C_LOC(samples(1)%N)), h5kind_to_type(r_k8,H5_REAL_KIND), error) + ! + ! Create dataspace + ! + CALL h5screate_simple_f(1, dims, dspace_id, error) + ! + ! Create the dataset. + ! + CALL H5Dcreate_f(file_id, "samples", sample_type_id, dspace_id, dset_id, error) + ! + ! Write data to the dataset + ! + f_ptr = C_LOC(samples(1)) + CALL H5Dwrite_f(dset_id, sample_type_id, f_ptr, error) + ! Close up + CALL h5dclose_f(dset_id, error) + CALL h5sclose_f(dspace_id, error) + CALL h5fclose_f(file_id, error) + ! + ! Open the file and the dataset. + ! + CALL H5Fopen_f("test.h5", H5F_ACC_RDONLY_F, file_id, error) + + CALL H5Dopen_f(file_id, "samples", dset_id, error) + ! + ! Create the memory data type. + ! + CALL H5Tcreate_f(H5T_COMPOUND_F,H5OFFSETOF(C_LOC(samples(1)), C_LOC(samples(2))), sample_type_id,error) + + CALL H5Tinsert_f( sample_type_id, "nlev", & + H5OFFSETOF(C_LOC(samples(1)),C_LOC(samples(1)%nlev(1))), array_type_id, error) + CALL H5Tinsert_f( sample_type_id, "N", & + H5OFFSETOF(C_LOC(samples(1)),C_LOC(samples(1)%N)), h5kind_to_type(r_k8,H5_REAL_KIND), error) + + f_ptr = C_LOC(read_samples(1)) + CALL H5Dread_f(dset_id, sample_type_id, f_ptr, error) + + ! + ! Display the fields + ! + DO i=1,NMAX + WRITE(*,'(A,3(" (",F8.5,",",F8.5,")"))') "SAMPLES =",read_samples(i)%nlev(1:NMAX) + WRITE(*,'(A,F8.5)') "N =", read_samples(i)%N + END DO + + CALL H5Tclose_f(sample_type_id, error) + CALL H5Dclose_f(dset_id, error) + CALL H5Fclose_f(file_id, error) + +END PROGRAM compound_complex_fortran2003 diff --git a/fortran/examples/compound_fortran2003.f90 b/fortran/examples/compound_fortran2003.f90 new file mode 100644 index 0000000..579be61 --- /dev/null +++ b/fortran/examples/compound_fortran2003.f90 @@ -0,0 +1,208 @@ +! This is the F2003 version of the h5_compound.c example source code. +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! This example shows how to create a compound data type, +! write an array which has the compound data type to the file, +! and read back fields' subsets. +! + +PROGRAM main + USE hdf5 + USE ISO_C_BINDING + IMPLICIT NONE + +! KIND parameters + + INTEGER, PARAMETER :: int_k1 = SELECTED_INT_KIND(1) ! This should map to INTEGER*1 on most modern processors + INTEGER, PARAMETER :: int_k2 = SELECTED_INT_KIND(4) ! This should map to INTEGER*2 on most modern processors + INTEGER, PARAMETER :: int_k4 = SELECTED_INT_KIND(8) ! This should map to INTEGER*4 on most modern processors + INTEGER, PARAMETER :: int_k8 = SELECTED_INT_KIND(16) ! This should map to INTEGER*8 on most modern processors + + INTEGER, PARAMETER :: r_k4 = SELECTED_REAL_KIND(5) ! This should map to REAL*4 on most modern processors + INTEGER, PARAMETER :: r_k8 = SELECTED_REAL_KIND(10) ! This should map to REAL*8 on most modern processors + +! FILES + + CHARACTER(LEN=*), PARAMETER :: H5FILE_NAME = "SDScompound.h5" + CHARACTER(LEN=*), PARAMETER :: DATASETNAME = "ArrayOfStructures" + + INTEGER, PARAMETER :: LENGTH = 10 + INTEGER, PARAMETER :: RANK = 1 + +!---------------------------------------------------------------- +! First derived-type and dataset + TYPE s1_t + CHARACTER(LEN=1), DIMENSION(1:13) :: chr + INTEGER(KIND=int_k1) :: a + REAL(KIND=r_k4) :: b + REAL(KIND=r_k8) :: c + END TYPE s1_t + + TYPE(s1_t), TARGET :: s1(LENGTH) + INTEGER(hid_t) :: s1_tid ! File datatype identifier + +!---------------------------------------------------------------- +! Second derived-type (subset of s1_t) and dataset + TYPE s2_t + CHARACTER(LEN=1), DIMENSION(1:13) :: chr + REAL(KIND=r_k8) :: c + INTEGER(KIND=int_k1) :: a + END TYPE s2_t + + type(s2_t), target :: s2(LENGTH) + integer(hid_t) :: s2_tid ! Memory datatype handle + +!---------------------------------------------------------------- +! Third "derived-type" (will be used to read float field of s1) + INTEGER(hid_t) :: s3_tid ! Memory datatype handle + REAL(KIND=r_k4), TARGET :: s3(LENGTH) + + INTEGER :: i + INTEGER(hid_t) :: file, dataset, space + !type(H5F_fileid_type) :: file + !type(H5D_dsetid_type) :: dataset + !type(H5S_spaceid_type) :: space + INTEGER(hsize_t) :: DIM(1) = (/LENGTH/) ! Dataspace dimensions + INTEGER(SIZE_T) :: type_size ! Size of the datatype + INTEGER(SIZE_T) :: offset, sizeof_compound + INTEGER :: hdferr + TYPE(C_PTR) :: f_ptr + + INTEGER(SIZE_T) :: type_sizei ! Size of the integer datatype + INTEGER(SIZE_T) :: type_sizer ! Size of the real datatype + INTEGER(SIZE_T) :: type_sized ! Size of the double datatype + INTEGER(hid_t) :: tid3 ! /* Nested Array Datatype ID */ + INTEGER(HSIZE_T), DIMENSION(1) :: tdims1=(/13/) + ! + ! Initialize FORTRAN interface. + ! + + CALL h5open_f(hdferr) + + ! + ! Initialize the data + ! + DO i = 0, LENGTH-1 + s1(i+1)%chr(1)(1:1) = 'a' + s1(i+1)%chr(2)(1:1) = 'b' + s1(i+1)%chr(3)(1:1) = 'c' + s1(i+1)%chr(4:12)(1:1) = ' ' + s1(i+1)%chr(13)(1:1) = 'd' + s1(i+1)%a = i + s1(i+1)%b = i*i + s1(i+1)%c = 1./REAL(i+1) + END DO + ! + ! Create the data space. + ! + ! + CALL H5Screate_simple_f(RANK, dim, space, hdferr) + + ! + ! Create the file. + ! + CALL H5Fcreate_f(H5FILE_NAME, H5F_ACC_TRUNC_F, file, hdferr) + + ! + ! Create the memory data type. + ! + CALL H5Tcreate_f(H5T_COMPOUND_F, H5OFFSETOF(C_LOC(s1(1)), C_LOC(s1(2))), s1_tid, hdferr) + + CALL h5tarray_create_f(H5T_NATIVE_CHARACTER, 1, tdims1, tid3, hdferr) + + CALL H5Tinsert_f(s1_tid, "chr_name", H5OFFSETOF(C_LOC(s1(1)),C_LOC(s1(1)%chr)),tid3, hdferr) + CALL H5Tinsert_f(s1_tid, "a_name", H5OFFSETOF(C_LOC(s1(1)),C_LOC(s1(1)%a)), h5kind_to_type(int_k1,H5_INTEGER_KIND), hdferr) + CALL H5Tinsert_f(s1_tid, "c_name", H5OFFSETOF(C_LOC(s1(1)),C_LOC(s1(1)%c)), h5kind_to_type(r_k8,H5_REAL_KIND), hdferr) + CALL H5Tinsert_f(s1_tid, "b_name", H5OFFSETOF(C_LOC(s1(1)),C_LOC(s1(1)%b)), h5kind_to_type(r_k4,H5_REAL_KIND), hdferr) + + ! + ! Create the dataset. + ! + CALL H5Dcreate_f(file, DATASETNAME, s1_tid, space, dataset, hdferr) + + ! + ! Write data to the dataset + ! + + f_ptr = C_LOC(s1(1)) + CALL H5Dwrite_f(dataset, s1_tid, f_ptr, hdferr) + + ! + ! Release resources + ! + CALL H5Tclose_f(s1_tid, hdferr) + CALL H5Sclose_f(space, hdferr) + CALL H5Dclose_f(dataset, hdferr) + CALL H5Fclose_f(file, hdferr) + + ! + ! Open the file and the dataset. + ! + + CALL H5Fopen_f(H5FILE_NAME, H5F_ACC_RDONLY_F, file, hdferr) + + CALL H5Dopen_f(file, DATASETNAME, dataset,hdferr) + + ! + ! Create a data type for s2 + ! + CALL H5Tcreate_f(H5T_COMPOUND_F, H5OFFSETOF(C_LOC(s2(1)), C_LOC(s2(2))), s2_tid, hdferr) + + CALL H5Tinsert_f(s2_tid, "chr_name", H5OFFSETOF(C_LOC(s2(1)),C_LOC(s2(1)%chr)), tid3, hdferr) + CALL H5Tinsert_f(s2_tid, "c_name", H5OFFSETOF(C_LOC(s2(1)),C_LOC(s2(1)%c)), h5kind_to_type(r_k8,H5_REAL_KIND), hdferr) + CALL H5Tinsert_f(s2_tid, "a_name", H5OFFSETOF(C_LOC(s2(1)),C_LOC(s2(1)%a)), h5kind_to_type(int_k1,H5_INTEGER_KIND), hdferr) + + ! + ! Read two fields c and a from s1 dataset. Fields in the file + ! are found by their names "c_name" and "a_name". + s2(:)%c=-1; s2(:)%a=-1; + + + f_ptr = C_LOC(s2(1)) + CALL H5Dread_f(dataset, s2_tid, f_ptr, hdferr) + + ! + ! Display the fields + ! + DO i = 1, length + WRITE(*,'(/,A,/,999(A,1X))') "Field chr :", s2(i)%chr(1:13)(1:1) + ENDDO + WRITE(*,'(/,A,/,999(F8.4,1X))') "Field c :", s2(:)%c + WRITE(*,'(/,A,/,999(I0,1X))') "Field a :", s2(:)%a + ! + ! Create a data type for s3. + ! + CALL H5Tcreate_f(H5T_COMPOUND_F, H5OFFSETOF(C_LOC(s3(1)),C_LOC(s3(2))),s3_tid, hdferr) + + CALL H5Tinsert_f(s3_tid, "b_name", 0, h5kind_to_type(r_k4,H5_REAL_KIND), hdferr) + ! + ! Read field b from s1 dataset. Field in the file is found by its name. + ! + s3(:)=-1 + f_ptr = C_LOC(s3(1)) + CALL H5Dread_f(dataset, s3_tid, f_ptr, hdferr) + ! + ! Display the field + ! + WRITE(*,'(/,A,/,999(F8.4,1X))') "Field b :",s3(:) + ! + ! Release resources + ! + CALL H5Tclose_f(s2_tid, hdferr) + CALL H5Tclose_f(s3_tid, hdferr) + CALL H5Dclose_f(dataset, hdferr) + CALL H5Fclose_f(file, hdferr) + +END PROGRAM main diff --git a/fortran/examples/nested_derived_type.f90 b/fortran/examples/nested_derived_type.f90 new file mode 100644 index 0000000..b79c208 --- /dev/null +++ b/fortran/examples/nested_derived_type.f90 @@ -0,0 +1,212 @@ +! +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! This example shows how to create a nested compound data type, +! write an array which has the compound data type to the file, +! and read back fields' subsets. + +PROGRAM main + USE HDF5 + USE ISO_C_BINDING + IMPLICIT NONE + +! KIND parameters + INTEGER, PARAMETER :: int_k1 = SELECTED_INT_KIND(Fortran_INTEGER_1) ! This should map to INTEGER*1 on most modern processors + INTEGER, PARAMETER :: int_k4 = SELECTED_INT_KIND(Fortran_INTEGER_2) ! This should map to INTEGER*2 on most modern processors + INTEGER, PARAMETER :: int_k8 = SELECTED_INT_KIND(Fortran_INTEGER_4) ! This should map to INTEGER*4 on most modern processors + INTEGER, PARAMETER :: int_k16 = SELECTED_INT_KIND(Fortran_INTEGER_8) ! This should map to INTEGER*8 on most modern processors + + INTEGER, PARAMETER :: r_k4 = SELECTED_REAL_KIND(Fortran_REAL_4) ! This should map to REAL*4 on most modern processors + INTEGER, PARAMETER :: r_k8 = SELECTED_REAL_KIND(Fortran_REAL_8) ! This should map to REAL*8 on most modern processors + +! FILES + + CHARACTER(LEN=*), PARAMETER :: H5FILE_NAME = "SDScompound.h5" + CHARACTER(LEN=*), PARAMETER :: DATASETNAME = "ArrayOfStructures" + + INTEGER, PARAMETER :: LENGTH = 10 + INTEGER, PARAMETER :: RANK = 1 + +!---------------------------------------------------------------- +! Nested derived-type and dataset + + TYPE s4_t + INTEGER(int_k8), DIMENSION(1:4) :: x + ENDTYPE s4_t + + TYPE s1_t + CHARACTER(LEN=1), DIMENSION(1:7) :: chr + INTEGER(KIND=int_k1) :: a + REAL(KIND=r_k4) :: b + TYPE(s4_t) :: d + REAL(KIND=r_k8) :: c + END TYPE s1_t + + TYPE(s1_t), TARGET, DIMENSION(1:length) :: s1 + INTEGER(hid_t) :: s1_tid ! File datatype identifier + +!---------------------------------------------------------------- +! Second derived-type (subset of s1_t) and dataset + TYPE s2_t + CHARACTER(LEN=1), DIMENSION(1:7) :: chr + REAL(KIND=r_k8) :: c + INTEGER(KIND=int_k1) :: a + TYPE(s4_t) :: d + END TYPE s2_t + + TYPE(s2_t), TARGET :: s2(LENGTH) + integer(hid_t) :: s2_tid ! Memory datatype handle + INTEGER(hid_t) :: tid3a +!---------------------------------------------------------------- +! Third "derived-type" (will be used to read float field of s1) + INTEGER(hid_t) :: s3_tid ! Memory datatype handle + REAL(KIND=r_k4), TARGET :: s3(LENGTH) + + INTEGER :: i + INTEGER(hid_t) :: file, dataset, space + !type(H5F_fileid_type) :: file + !type(H5D_dsetid_type) :: dataset + !type(H5S_spaceid_type) :: space + INTEGER(hsize_t) :: DIM(1) = (/LENGTH/) ! Dataspace dimensions + INTEGER(SIZE_T) :: type_size ! Size of the datatype + INTEGER(SIZE_T) :: offset, sizeof_compound + INTEGER :: hdferr + TYPE(C_PTR) :: f_ptr + + INTEGER(SIZE_T) :: type_sizei ! Size of the integer datatype + INTEGER(SIZE_T) :: type_sizer ! Size of the real datatype + INTEGER(SIZE_T) :: type_sized ! Size of the double datatype + INTEGER(hid_t) :: tid3 ! /* Nested Array Datatype ID */ + INTEGER(HSIZE_T), DIMENSION(1) :: tdims1=(/7/) + INTEGER(HSIZE_T), DIMENSION(1) :: tdims1a=(/4/) + ! + ! Initialize FORTRAN interface. + ! + CALL h5open_f(hdferr) + ! + ! Initialize the data + ! + DO i = 0, LENGTH-1 + s1(i+1)%chr(1:7)(1:1) = (/'a','b','c',' ',' ',' ','d'/) + s1(i+1)%a = i + s1(i+1)%b = i*i + s1(i+1)%c = 1./REAL(i+1) + s1(i+1)%d%x(1:4) = (/i,i*10,i*100,i*1000/) + END DO + ! + ! Create the data space. + ! + ! + CALL H5Screate_simple_f(RANK, dim, space, hdferr) + ! + ! Create the file. + ! + CALL H5Fcreate_f(H5FILE_NAME, H5F_ACC_TRUNC_F, file, hdferr) + ! + ! Create the memory data type. + ! + CALL H5Tcreate_f(H5T_COMPOUND_F, H5OFFSETOF(C_LOC(s1(1)), C_LOC(s1(2))), s1_tid, hdferr) + + CALL h5tarray_create_f(H5T_NATIVE_CHARACTER, 1, tdims1, tid3, hdferr) + + CALL H5Tinsert_f(s1_tid, "chr_name", H5OFFSETOF(C_LOC(s1(1)),C_LOC(s1(1)%chr)),tid3, hdferr) + CALL H5Tinsert_f(s1_tid, "a_name", H5OFFSETOF(C_LOC(s1(1)),C_LOC(s1(1)%a)), h5kind_to_type(int_k1,H5_INTEGER_KIND), hdferr) + CALL H5Tinsert_f(s1_tid, "c_name", H5OFFSETOF(C_LOC(s1(1)),C_LOC(s1(1)%c)), h5kind_to_type(r_k8,H5_REAL_KIND), hdferr) + CALL H5Tinsert_f(s1_tid, "b_name", H5OFFSETOF(C_LOC(s1(1)),C_LOC(s1(1)%b)), h5kind_to_type(r_k4,H5_REAL_KIND), hdferr) + + ! Create an array of integer datatype + CALL h5tarray_create_f(h5kind_to_type(int_k8,H5_INTEGER_KIND), 1, tdims1a, tid3a, hdferr) + CALL H5Tinsert_f(s1_tid, "d_name", H5OFFSETOF(C_LOC(s1(1)),C_LOC(s1(1)%d%x)), tid3a, hdferr) + + ! + ! Create the dataset. + ! + CALL H5Dcreate_f(file, DATASETNAME, s1_tid, space, dataset, hdferr) + + ! + ! Write data to the dataset + ! + + f_ptr = C_LOC(s1(1)) + CALL H5Dwrite_f(dataset, s1_tid, f_ptr, hdferr) + + ! + ! Release resources + ! + CALL H5Tclose_f(s1_tid, hdferr) + CALL H5Sclose_f(space, hdferr) + CALL H5Dclose_f(dataset, hdferr) + CALL H5Fclose_f(file, hdferr) + + ! + ! Open the file and the dataset. + ! + + CALL H5Fopen_f(H5FILE_NAME, H5F_ACC_RDONLY_F, file, hdferr) + + CALL H5Dopen_f(file, DATASETNAME, dataset,hdferr) + ! + ! Create a data type for s2 + ! + CALL H5Tcreate_f(H5T_COMPOUND_F, H5OFFSETOF(C_LOC(s2(1)), C_LOC(s2(2))), s2_tid, hdferr) + + CALL H5Tinsert_f(s2_tid, "chr_name", H5OFFSETOF(C_LOC(s2(1)),C_LOC(s2(1)%chr)), tid3, hdferr) + CALL H5Tinsert_f(s2_tid, "c_name", H5OFFSETOF(C_LOC(s2(1)),C_LOC(s2(1)%c)), h5kind_to_type(r_k8,H5_REAL_KIND), hdferr) + CALL H5Tinsert_f(s2_tid, "a_name", H5OFFSETOF(C_LOC(s2(1)),C_LOC(s2(1)%a)), h5kind_to_type(int_k1,H5_INTEGER_KIND), hdferr) + CALL H5Tinsert_f(s2_tid, "d_name", H5OFFSETOF(C_LOC(s2(1)),C_LOC(s2(1)%d%x)), tid3a, hdferr) + + ! + ! Read two fields c and a from s1 dataset. Fields in the file + ! are found by their names "c_name" and "a_name". + + f_ptr = C_LOC(s2(1)) + CALL H5Dread_f(dataset, s2_tid, f_ptr, hdferr) + + ! + ! Display the fields + ! + DO i = 1, length + WRITE(*,'(/,A,/,999(A,1X))') "Field chr :", s2(i)%chr(1:7)(1:1) + ENDDO + WRITE(*,'(/,A,/,999(F8.4,1X))') "Field c :", s2(:)%c + WRITE(*,'(/,A,/,999(I0,1X))') "Field a :", s2(:)%a + DO i = 1, length + WRITE(*,'(/,A,/,999(I0,1X))') "Field d%x :", s2(i)%d%x(:) + ENDDO + ! + ! Create a data type for s3. + ! + CALL H5Tcreate_f(H5T_COMPOUND_F, H5OFFSETOF(C_LOC(s3(1)),C_LOC(s3(2))),s3_tid, hdferr) + + CALL H5Tinsert_f(s3_tid, "b_name", 0, h5kind_to_type(r_k4,H5_REAL_KIND), hdferr) + ! + ! Read field b from s1 dataset. Field in the file is found by its name. + ! + s3(:)=-1 + f_ptr = C_LOC(s3(1)) + CALL H5Dread_f(dataset, s3_tid, f_ptr, hdferr) + ! + ! Display the field + ! + WRITE(*,'(/,A,/,999(F8.4,1X))') "Field b :",s3(:) + ! + ! Release resources + ! + CALL H5Tclose_f(s2_tid, hdferr) + CALL H5Tclose_f(s3_tid, hdferr) + CALL H5Dclose_f(dataset, hdferr) + CALL H5Fclose_f(file, hdferr) + +END PROGRAM main diff --git a/fortran/examples/rwdset_fortran2003.f90 b/fortran/examples/rwdset_fortran2003.f90 new file mode 100644 index 0000000..74bda85 --- /dev/null +++ b/fortran/examples/rwdset_fortran2003.f90 @@ -0,0 +1,181 @@ +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! +! The following example shows how to write and read to/from an existing dataset. +! It opens the file created in the previous example, obtains the dataset +! identifier, writes the data to the dataset in the file, +! then reads the dataset to memory. Uses updated Fortran 2003 interface +! with different KINDs of integers and reals. +! +PROGRAM RWDSET_FORTRAN2003 + + USE ISO_C_BINDING + + USE HDF5 ! This module contains all necessary modules + + IMPLICIT NONE + + INTEGER, PARAMETER :: int_kind_1 = SELECTED_INT_KIND(Fortran_INTEGER_1) !should map to INTEGER*1 on most modern processors + INTEGER, PARAMETER :: int_kind_4 = SELECTED_INT_KIND(Fortran_INTEGER_2) !should map to INTEGER*2 on most modern processors + INTEGER, PARAMETER :: int_kind_8 = SELECTED_INT_KIND(Fortran_INTEGER_4) !should map to INTEGER*4 on most modern processors + INTEGER, PARAMETER :: int_kind_16 = SELECTED_INT_KIND(Fortran_INTEGER_8) !should map to INTEGER*8 on most modern processors + + INTEGER, PARAMETER :: real_kind_7 = SELECTED_REAL_KIND(Fortran_REAL_4) !should map to REAL*4 on most modern processors + INTEGER, PARAMETER :: real_kind_15 = SELECTED_REAL_KIND(Fortran_REAL_8) !should map to REAL*8 on most modern processors + + CHARACTER(LEN=8), PARAMETER :: filename = "dsetf.h5" ! File name + CHARACTER(LEN=5), PARAMETER :: dsetname1 = "dset1" ! Dataset name + CHARACTER(LEN=5), PARAMETER :: dsetname2 = "dset2" ! Dataset name + CHARACTER(LEN=5), PARAMETER :: dsetname4 = "dset4" ! Dataset name + CHARACTER(LEN=5), PARAMETER :: dsetname8 = "dset8" ! Dataset name + CHARACTER(LEN=6), PARAMETER :: dsetnamer4 = "dsetr4" ! Dataset name + CHARACTER(LEN=6), PARAMETER :: dsetnamer8 = "dsetr8" ! Dataset name + + INTEGER(HID_T) :: file_id ! File identifier + INTEGER(HID_T) :: dset_id1 ! Dataset identifier + INTEGER(HID_T) :: dset_id4 ! Dataset identifier + INTEGER(HID_T) :: dset_id8 ! Dataset identifier + INTEGER(HID_T) :: dset_id16 ! Dataset identifier + INTEGER(HID_T) :: dset_idr4 ! Dataset identifier + INTEGER(HID_T) :: dset_idr8 ! Dataset identifier + + INTEGER :: error ! Error flag + INTEGER :: i, j + +! Data buffers: + + INTEGER, DIMENSION(1:4) :: dset_data + + INTEGER(int_kind_1), DIMENSION(1:4), TARGET :: dset_data_i1, data_out_i1 + INTEGER(int_kind_4), DIMENSION(1:4), TARGET :: dset_data_i4, data_out_i4 + INTEGER(int_kind_8), DIMENSION(1:4), TARGET :: dset_data_i8, data_out_i8 + INTEGER(int_kind_16), DIMENSION(1:4), TARGET :: dset_data_i16, data_out_i16 + + INTEGER(int_kind_8), DIMENSION(1:4), TARGET :: data_out_i8a + + REAL(real_kind_7), DIMENSION(1:4), TARGET :: dset_data_r7, data_out_r7 + REAL(real_kind_15), DIMENSION(1:4), TARGET :: dset_data_r15, data_out_r15 + + INTEGER(HSIZE_T), DIMENSION(1:1) :: data_dims = (/4/) + INTEGER(HID_T) :: dspace_id ! Dataspace identifier + + TYPE(C_PTR) :: f_ptr + INTEGER(hid_t) :: datatype !/* Common datatype ID */ + + ! + ! Initialize FORTRAN interface. + ! + CALL h5open_f(error) + ! + ! Initialize the dset_data array. + ! + DO i = 1, 4 + dset_data_i1(i) = i + dset_data_i4(i) = i + dset_data_i8(i) = i + dset_data_i16(i) = i + + dset_data_r7(i) = (i)*100. + dset_data_r15(i) = (i)*1000. + + END DO + + CALL h5fcreate_f(filename, H5F_ACC_TRUNC_F, file_id, error) + ! + ! Create dataspaces for datasets + ! + CALL h5screate_simple_f(1, data_dims , dspace_id, error) + ! + ! Create the dataset. + ! + CALL H5Dcreate_f(file_id, dsetname1, h5kind_to_type(int_kind_1,H5_INTEGER_KIND), dspace_id, dset_id1, error) + CALL H5Dcreate_f(file_id, dsetname2, h5kind_to_type(int_kind_4,H5_INTEGER_KIND), dspace_id, dset_id4, error) + CALL H5Dcreate_f(file_id, dsetname4, h5kind_to_type(int_kind_8,H5_INTEGER_KIND), dspace_id, dset_id8, error) + CALL H5Dcreate_f(file_id, dsetname8, h5kind_to_type(int_kind_16,H5_INTEGER_KIND), dspace_id, dset_id16, error) + + CALL H5Dcreate_f(file_id, dsetnamer4, h5kind_to_type(real_kind_7,H5_REAL_KIND), dspace_id, dset_idr4, error) + CALL H5Dcreate_f(file_id, dsetnamer8, h5kind_to_type(real_kind_15,H5_REAL_KIND), dspace_id, dset_idr8, error) + + ! + ! Write the dataset. + ! + f_ptr = C_LOC(dset_data_i1(1)) + CALL h5dwrite_f(dset_id1, h5kind_to_type(int_kind_1,H5_INTEGER_KIND), f_ptr, error) + f_ptr = C_LOC(dset_data_i4(1)) + CALL h5dwrite_f(dset_id4, h5kind_to_type(int_kind_4,H5_INTEGER_KIND), f_ptr, error) + f_ptr = C_LOC(dset_data_i8(1)) + CALL h5dwrite_f(dset_id8, h5kind_to_type(int_kind_8,H5_INTEGER_KIND), f_ptr, error) + f_ptr = C_LOC(dset_data_i16(1)) + CALL h5dwrite_f(dset_id16, h5kind_to_type(int_kind_16,H5_INTEGER_KIND), f_ptr, error) + f_ptr = C_LOC(dset_data_r7(1)) + CALL h5dwrite_f(dset_idr4, h5kind_to_type(real_kind_7,H5_REAL_KIND), f_ptr, error) + f_ptr = C_LOC(dset_data_r15(1)) + CALL h5dwrite_f(dset_idr8, h5kind_to_type(real_kind_15,H5_REAL_KIND), f_ptr, error) + ! + ! Close the file + ! + CALL h5fclose_f(file_id, error) + + ! Open the file + + CALL h5fopen_f(filename, H5F_ACC_RDWR_F, file_id, error) + ! + ! Read the dataset. + ! + ! Read data back into an integer size that is larger then the original size used for + ! writing the data + f_ptr = C_LOC(data_out_i8a(1)) + CALL h5dread_f(dset_id1, h5kind_to_type(int_kind_8,H5_INTEGER_KIND), f_ptr, error) + f_ptr = C_LOC(data_out_i4(1)) + CALL h5dread_f(dset_id4, h5kind_to_type(int_kind_4,H5_INTEGER_KIND), f_ptr, error) + f_ptr = C_LOC(data_out_i8(1)) + CALL h5dread_f(dset_id8, h5kind_to_type(int_kind_8,H5_INTEGER_KIND), f_ptr, error) + f_ptr = C_LOC(data_out_i16(1)) + CALL h5dread_f(dset_id16, h5kind_to_type(int_kind_16,H5_INTEGER_KIND), f_ptr, error) + f_ptr = C_LOC(data_out_r7(1)) + CALL h5dread_f(dset_idr4, h5kind_to_type(real_kind_7,H5_REAL_KIND), f_ptr, error) + f_ptr = C_LOC(data_out_r15(1)) + CALL h5dread_f(dset_idr8, h5kind_to_type(real_kind_15,H5_REAL_KIND), f_ptr, error) + +! memory type + WRITE(*,'(A,4i8)' )'SELECTED_INT_KIND(Fortran_INTEGER_1): ',data_out_i8a + WRITE(*,'(A,4i8)' )'SELECTED_INT_KIND(Fortran_INTEGER_4): ',data_out_i4 + WRITE(*,'(A,4i8)' )'SELECTED_INT_KIND(Fortran_INTEGER_8): ',data_out_i8 + WRITE(*,'(A,4i8)' )'SELECTED_INT_KIND(Fortran_INTEGER_16): ',data_out_i16 + WRITE(*,'(A,4(1x,f9.4))' )'SELECTED_REAL_KIND(Fortran_REAL_7): ',data_out_r7 + WRITE(*,'(A,4(1x,f16.10))' )'SELECTED_REAL_KIND(Fortran_REAL_15): ',data_out_r15 + ! + ! Close the dataset. + ! + CALL h5dclose_f(dset_id1, error) + CALL h5dclose_f(dset_id4, error) + CALL h5dclose_f(dset_id8, error) + CALL h5dclose_f(dset_id16, error) + CALL h5dclose_f(dset_idr4, error) + CALL h5dclose_f(dset_idr8, error) + ! + ! Close the file. + ! + CALL h5fclose_f(file_id, error) + ! + ! Close FORTRAN interface. + ! + CALL h5close_f(error) + +END PROGRAM RWDSET_FORTRAN2003 + + + diff --git a/fortran/robodoc.rc b/fortran/robodoc.rc new file mode 100644 index 0000000..1366f77 --- /dev/null +++ b/fortran/robodoc.rc @@ -0,0 +1,73 @@ +items: + NAME + COPYRIGHT + SYNOPSIS + USAGE + FUNCTION + DESCRIPTION + PURPOSE + AUTHOR + CREATION DATE + MODIFICATION HISTORY + HISTORY + INPUTS + ARGUMENTS + OPTIONS + PARAMETERS + SWITCHES + OUTPUTS + SIDE EFFECTS + RESULT + RETURN VALUE + EXAMPLE + NOTES + DIAGNOSTICS + WARNINGS + ERRORS + BUGS + TODO + IDEAS + PORTABILITY + SEE ALSO + METHODS + NEW METHODS + ATTRIBUTES + NEW ATTRIBUTES + TAGS + DERIVED FROM + DERIVED BY + USES + CHILDREN + USED BY + PARENTS + COMMANDS + SOURCE + CONTAINS SUBROUTINES + OPTIONAL PARAMETERS + FILE +ignore items: + COPYRIGHT +headertypes: + s Subroutines robo_subroutines +options: + --nogeneratedwith + --src ./ + --doc ./doc/DevelGuide + --html + --multidoc + --index + --tabsize 8 + --sections + --sectionnameonly + --documenttitle "HDF5 FORTRAN Developer's Guide" + --cmode +ignore files: + .svn + *~ + *.o + *e + *.mod +accept files: + *.c + *.f90 + *.h diff --git a/fortran/src/H5Af.c b/fortran/src/H5Af.c index 8e6158e..896736d 100644 --- a/fortran/src/H5Af.c +++ b/fortran/src/H5Af.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5Af/H5Af + * PURPOSE + * This file contains C stubs for H5A Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,31 +16,41 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for H5A Fortran APIs */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" #include "H5Eprivate.h" -/*---------------------------------------------------------------------------- - * Name: h5acreate_c - * Purpose: Call H5Acreate2 to create an attribute - * Inputs: obj_id - object identifier +/****if* H5Af/h5acreate_c + * NAME + * h5acreate_c + * PURPOSE + * Call H5Acreate2 to create an attribute + * INPUTS + * obj_id - object identifier * name - name of the attribute * namelen - name length * type_id - datatype identifier * space_id - dataspace identifier * crt_pr - identifier of creation property list - * Outputs: attr_id - attribute identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * attr_id - attribute identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 12, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5acreate_c(hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *type_id, hid_t_f *space_id, hid_t_f *crt_prp, hid_t_f *aapl, hid_t_f *attr_id) +/*******/ { char *c_name = NULL; /* Buffer to hold C string */ int_f ret_value = 0; /* Return value */ @@ -58,20 +73,29 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aopen_name _c - * Purpose: Call H5Aopen to open an attribute - * Inputs: obj_id - object identifier +/****if* H5Af/h5aopen_name_c + * NAME + * h5aopen_name_c + * PURPOSE + * Call H5Aopen to open an attribute + * INPUTS + * obj_id - object identifier * name - name of the attribute * namelen - name length - * Outputs: attr_id - dataset identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * attr_id - dataset identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 12, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5aopen_name_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *attr_id) +/*******/ { char *c_name = NULL; /* Buffer to hold C string */ int_f ret_value = 0; /* Return value */ @@ -94,22 +118,30 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5awritec_c - * Purpose: Call h5awrite_c to write a character attribute - * Inputs: attr_id - dataset identifier +/****if* H5Af/h5awritec_c + * NAME + * h5awritec_c + * PURPOSE + * Call h5awrite_c to write a character attribute + * INPUTS + * attr_id - dataset identifier * mem_type_id - memory datatype identifier * buf - character data buffer * dims - array to store dimensions sizes of buf; used only * by Fortran routine. - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday , August 12, 1999 - * Modifications: dims paramete added. + * HISTORY + * dims paramete added. * April 4, 2001 - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5awritec_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5awrite_c function. @@ -118,6 +150,7 @@ nh5awritec_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) } int_f nh5awritec_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5awrite_c function. @@ -127,6 +160,7 @@ nh5awritec_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) int_f nh5awritec_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5awrite_c function. @@ -136,6 +170,7 @@ nh5awritec_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) int_f nh5awritec_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5awrite_c function. @@ -145,6 +180,7 @@ nh5awritec_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) int_f nh5awritec_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5awrite_c function. @@ -154,6 +190,7 @@ nh5awritec_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) int_f nh5awritec_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5awrite_c function. @@ -163,6 +200,7 @@ nh5awritec_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) int_f nh5awritec_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5awrite_c function. @@ -172,6 +210,7 @@ nh5awritec_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) int_f nh5awritec_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5awrite_c function. @@ -181,6 +220,7 @@ nh5awritec_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) int_f nh5awritec_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5awrite_c function. @@ -190,26 +230,34 @@ nh5awritec_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) -/*---------------------------------------------------------------------------- - * Name: h5awrite_c - * Purpose: Call H5Awrite to write a attribute - * Inputs: attr_id - attribute identifier +/****if* H5Af/h5awrite_c + * NAME + * h5awrite_c + * PURPOSE + * Call H5Awrite to write a attribute + * INPUTS + * attr_id - attribute identifier * mem_type_id - memory datatype identifier * buf - data buffer * dims - array to store dimensions sizes of buf; used only * by Fortran routine. - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 12, 1999 - * Modifications: dims parameter added + * HISTORY + * dims parameter added * April 4, 2001 * Added nh5awrite_integer(real,double)_s,1-7 functions to eliminate * complains about wrong parameters types in h5awrite_c function * called by Fortran routines. * October 9, 2006 EIP - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5awrite_integer_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -219,6 +267,7 @@ nh5awrite_integer_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void U int_f nh5awrite_integer_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -228,6 +277,7 @@ nh5awrite_integer_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void U int_f nh5awrite_integer_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -237,6 +287,7 @@ nh5awrite_integer_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void U int_f nh5awrite_integer_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -246,6 +297,7 @@ nh5awrite_integer_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void U int_f nh5awrite_integer_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -255,6 +307,7 @@ nh5awrite_integer_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void U int_f nh5awrite_integer_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -264,6 +317,7 @@ nh5awrite_integer_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void U int_f nh5awrite_integer_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -273,6 +327,7 @@ nh5awrite_integer_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void U int_f nh5awrite_integer_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -282,6 +337,7 @@ nh5awrite_integer_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void U int_f nh5awrite_real_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -291,6 +347,7 @@ nh5awrite_real_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUS int_f nh5awrite_real_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -300,6 +357,7 @@ nh5awrite_real_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUS int_f nh5awrite_real_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -309,6 +367,7 @@ nh5awrite_real_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUS int_f nh5awrite_real_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -318,6 +377,7 @@ nh5awrite_real_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUS int_f nh5awrite_real_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -327,6 +387,7 @@ nh5awrite_real_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUS int_f nh5awrite_real_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -336,6 +397,7 @@ nh5awrite_real_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUS int_f nh5awrite_real_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -345,6 +407,7 @@ nh5awrite_real_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUS int_f nh5awrite_real_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -354,6 +417,7 @@ nh5awrite_real_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUS int_f nh5awrite_double_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -363,6 +427,7 @@ nh5awrite_double_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5awrite_double_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -372,6 +437,7 @@ nh5awrite_double_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5awrite_double_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -381,6 +447,7 @@ nh5awrite_double_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5awrite_double_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -390,6 +457,7 @@ nh5awrite_double_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5awrite_double_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -399,6 +467,7 @@ nh5awrite_double_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5awrite_double_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -408,6 +477,7 @@ nh5awrite_double_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5awrite_double_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -417,6 +487,7 @@ nh5awrite_double_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5awrite_double_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { /* * Call h5awrite_c function. @@ -426,6 +497,7 @@ nh5awrite_double_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5awrite_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims) +/******/ { int_f ret_value=0; /* Return value */ @@ -440,26 +512,35 @@ done: } -/*---------------------------------------------------------------------------- - * Name: h5areadc_c - * Purpose: Call h5aread_c to read character attribute - * Inputs: dset_id - dataset identifier +/****if* H5Af/h5areadc_c + * NAME + * h5areadc_c + * PURPOSE + * Call h5aread_c to read character attribute + * INPUTS + * dset_id - dataset identifier * mem_type_id - memory datatype identifier * dims - array to store dimensions sizes of buf; used only * by Fortran routine. - * Outputs: buf - character data buffer - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * buf - character data buffer + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 12, 1999 - * Modifications: dims parameter added. + * HISTORY + * dims parameter added. * April 4, 2001 * Added nh5areadc_s,1-7 functions to eliminate * complains about wrong parameters types in h5awrite_c function * called by Fortran routines. * October 9, 2006 EIP - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5areadc_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5aread_c function. @@ -468,6 +549,7 @@ nh5areadc_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) } int_f nh5areadc_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5aread_c function. @@ -477,6 +559,7 @@ nh5areadc_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) int_f nh5areadc_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5aread_c function. @@ -486,6 +569,7 @@ nh5areadc_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) int_f nh5areadc_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5aread_c function. @@ -495,6 +579,7 @@ nh5areadc_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) int_f nh5areadc_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5aread_c function. @@ -504,6 +589,7 @@ nh5areadc_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) int_f nh5areadc_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5aread_c function. @@ -513,6 +599,7 @@ nh5areadc_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) int_f nh5areadc_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5aread_c function. @@ -522,6 +609,7 @@ nh5areadc_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) int_f nh5areadc_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5aread_c function. @@ -530,6 +618,7 @@ nh5areadc_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) } int_f nh5areadc_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) +/******/ { /* * Call h5aread_c function. @@ -539,26 +628,35 @@ nh5areadc_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims) -/*---------------------------------------------------------------------------- - * Name: h5aread_c - * Purpose: Call H5Aread to read an attribute - * Inputs: dset_id - dataset identifier +/****if* H5Af/h5aread_c + * NAME + * h5aread_c + * PURPOSE + * Call H5Aread to read an attribute + * INPUTS + * dset_id - dataset identifier * mem_type_id - memory datatype identifier * dims - array to store dimensions sizes of buf; used only * by Fortran routine. - * Outputs: buf - data buffer - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * buf - data buffer + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 12, 1999 - * Modifications: dims paramete added. + * HISTORY + * dims paramete added. * April 4, 2001 * Added nh5aread_integer(real,double)_s,1-7 functions to eliminate * complains about wrong parameters types in h5awrite_c function * called by Fortran routines. * October 9, 2006 EIP - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5aread_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { int_f ret_value=0; /* Return value */ @@ -574,6 +672,7 @@ done: int_f nh5aread_integer_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -583,6 +682,7 @@ nh5aread_integer_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5aread_integer_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -592,6 +692,7 @@ nh5aread_integer_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5aread_integer_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -601,6 +702,7 @@ nh5aread_integer_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5aread_integer_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -610,6 +712,7 @@ nh5aread_integer_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5aread_integer_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -619,6 +722,7 @@ nh5aread_integer_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5aread_integer_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -628,6 +732,7 @@ nh5aread_integer_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5aread_integer_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -637,6 +742,7 @@ nh5aread_integer_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5aread_integer_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -646,6 +752,7 @@ nh5aread_integer_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UN int_f nh5aread_real_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -655,6 +762,7 @@ nh5aread_real_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSE int_f nh5aread_real_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -664,6 +772,7 @@ nh5aread_real_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSE int_f nh5aread_real_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -673,6 +782,7 @@ nh5aread_real_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSE int_f nh5aread_real_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -682,6 +792,7 @@ nh5aread_real_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSE int_f nh5aread_real_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -691,6 +802,7 @@ nh5aread_real_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSE int_f nh5aread_real_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -700,6 +812,7 @@ nh5aread_real_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSE int_f nh5aread_real_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -709,6 +822,7 @@ nh5aread_real_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSE int_f nh5aread_real_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -718,6 +832,7 @@ nh5aread_real_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSE int_f nh5aread_double_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -727,6 +842,7 @@ nh5aread_double_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNU int_f nh5aread_double_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -736,6 +852,7 @@ nh5aread_double_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNU int_f nh5aread_double_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -745,6 +862,7 @@ nh5aread_double_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNU int_f nh5aread_double_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -754,6 +872,7 @@ nh5aread_double_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNU int_f nh5aread_double_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -763,6 +882,7 @@ nh5aread_double_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNU int_f nh5aread_double_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -772,6 +892,7 @@ nh5aread_double_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNU int_f nh5aread_double_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -781,6 +902,7 @@ nh5aread_double_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNU int_f nh5aread_double_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims) +/******/ { /* * Call h5aread_c function. @@ -789,18 +911,26 @@ nh5aread_double_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNU } -/*---------------------------------------------------------------------------- - * Name: h5aclose_c - * Purpose: Call H5Aclose to close an attribute - * Inputs: attr_id - identifier of an attribute to be closed - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Af/h5aclose_c + * NAME + * h5aclose_c + * PURPOSE + * Call H5Aclose to close an attribute + * INPUTS + * attr_id - identifier of an attribute to be closed + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 12, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5aclose_c ( hid_t_f *attr_id ) +/******/ { int_f ret_value=0; /* Return value */ @@ -811,19 +941,27 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5adelete_c - * Purpose: Call H5Adelete to delete an attribute - * Inputs: obj_id - object identifier +/****if* H5Af/h5adelete_c + * NAME + * h5adelete_c + * PURPOSE + * Call H5Adelete to delete an attribute + * INPUTS + * obj_id - object identifier * name - name of the attribute * namelen - name length - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 12, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5adelete_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen) +/******/ { char *c_name = NULL; /* Buffer to hold C string */ int_f ret_value = 0; /* Return value */ @@ -848,19 +986,28 @@ done: } -/*---------------------------------------------------------------------------- - * Name: h5aopen_idx_c - * Purpose: Call H5Aopen_by_idx to open an attribute - * Inputs: obj_id - object identifier +/****if* H5Af/h5aopen_idx_c + * NAME + * h5aopen_idx_c + * PURPOSE + * Call H5Aopen_by_idx to open an attribute + * INPUTS + * obj_id - object identifier * idx - attribute index ( zero based) - * Outputs: attr_id - attribute identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * attr_id - attribute identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 12, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5aopen_idx_c (hid_t_f *obj_id, int_f *idx, hid_t_f *attr_id) +/******/ { int_f ret_value = 0; /* Return value */ @@ -875,18 +1022,27 @@ done: } -/*---------------------------------------------------------------------------- - * Name: h5aget_space_c - * Purpose: Call H5Aget_space to get attribute's dataspace - * Inputs: attr_id - attribute identifier - * Outputs: space_id - dataspace identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Af/h5aget_space_c + * NAME + * h5aget_space_c + * PURPOSE + * Call H5Aget_space to get attribute's dataspace + * INPUTS + * attr_id - attribute identifier + * OUTPUTS + * space_id - dataspace identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 12, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5aget_space_c (hid_t_f *attr_id, hid_t_f *space_id) +/******/ { int_f ret_value=0; /* Return value */ @@ -900,18 +1056,27 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aget_type_c - * Purpose: Call H5Aget_space to get attribute's datatype - * Inputs: attr_id - attribute identifier - * Outputs: type_id - datatype identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Af/h5aget_type_c + * NAME + * h5aget_type_c + * PURPOSE + * Call H5Aget_space to get attribute's datatype + * INPUTS + * attr_id - attribute identifier + * OUTPUTS + * type_id - datatype identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 12, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5aget_type_c (hid_t_f *attr_id, hid_t_f *type_id) +/******/ { int_f ret_value=0; /* Return value */ @@ -925,19 +1090,27 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aget_num_attrs_c - * Purpose: Call H5Oget_info to determine number of +/****if* H5Af/h5aget_num_attrs_c + * NAME + * h5aget_num_attrs_c + * PURPOSE + * Call H5Oget_info to determine number of * attributes of an object - * Inputs: obj_id - object identifier + * INPUTS + * obj_id - object identifier * attr_num - number of attributes - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 12, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5aget_num_attrs_c (hid_t_f *obj_id, int_f *attr_num) +/******/ { H5O_info_t oinfo; /* Object info */ int_f ret_value = 0; /* Return value */ @@ -955,19 +1128,28 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aget_name_c - * Purpose: Call H5Aget_name to get attribute's name - * Inputs: attr_id - attribute identifier +/****if* H5Af/h5aget_name_c + * NAME + * h5aget_name_c + * PURPOSE + * Call H5Aget_name to get attribute's name + * INPUTS + * attr_id - attribute identifier * bufsize - size of the buffer - * Outputs: buf - buffer to hold the name - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * buf - buffer to hold the name + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 12, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5aget_name_c(hid_t_f *attr_id, size_t_f *bufsize, _fcd buf) +/******/ { size_t c_bufsize; char *c_buf=NULL; /* Buffer to hold C string */ @@ -997,19 +1179,28 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aget_storage_size_c - * Purpose: Call H5Aget_storage_size - * Inputs: attr_id - identifier of an attribute - * Outputs: size - attributes storage requirements - * Returns: 0 on success, -1 on failure - * Programmer: M. S. Breitenfeld +/****if* H5Af/h5aget_storage_size_c + * NAME + * h5aget_storage_size_c + * PURPOSE + * Call H5Aget_storage_size + * INPUTS + * attr_id - identifier of an attribute + * OUTPUTS + * size - attributes storage requirements + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5aget_storage_size_c ( hid_t_f *attr_id, hsize_t_f *size) +/******/ { int_f ret_value=0; /* Return value */ @@ -1020,19 +1211,28 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aget_create_plist_c - * Purpose: Call H5Aget_create_plist - * Inputs: attr_id - identifier of an attribute - * Outputs: creation_prop_id - Identifier for the attribute’s creation property - * Returns: 0 on success, -1 on failure - * Programmer: M. S. Breitenfeld +/****if* H5Af/h5aget_create_plist_c + * NAME + * h5aget_create_plist_c + * PURPOSE + * Call H5Aget_create_plist + * INPUTS + * attr_id - identifier of an attribute + * OUTPUTS + * creation_prop_id - Identifier for the attribute’s creation property + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5aget_create_plist_c ( hid_t_f *attr_id, hid_t_f *creation_prop_id) +/******/ { int_f ret_value=0; /* Return value */ @@ -1043,10 +1243,13 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5arename_by_name_c - * Purpose: Calls H5Arename_by_name - * Inputs: loc_id - Object identifier +/****if* H5Af/h5arename_by_name_c + * NAME + * h5arename_by_name_c + * PURPOSE + * Calls H5Arename_by_name + * INPUTS + * loc_id - Object identifier * obj_name - Name of object, relative to location, * whose attribute is to be renamed * obj_name_len - Object name length @@ -1055,18 +1258,24 @@ done: * new_attr_name - New attribute name * new_attr_name_len - New attribute name length * lapl_id - Link access property list identifier - * Outputs: N/A - * Returns: 0 on success, -1 on failure - * Programmer: M. S. Breitenfeld + * OUTPUTS + * N/A + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5arename_by_name_c( hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd old_attr_name, size_t_f *old_attr_namelen, _fcd new_attr_name, size_t_f *new_attr_namelen, hid_t_f *lapl_id ) +/******/ { char *c_obj_name = NULL; /* Buffer to hold C string */ char *c_old_attr_name = NULL; /* Buffer to hold C string */ @@ -1095,21 +1304,30 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aopen_c - * Purpose: Call H5Aopen to open an attribute - * Inputs: obj_id - Identifer for object to which attribute is attached +/****if* H5Af/h5aopen_c + * NAME + * h5aopen_c + * PURPOSE + * Call H5Aopen to open an attribute + * INPUTS + * obj_id - Identifer for object to which attribute is attached * attr_name - Attribute access property list * attr_namelen - size of attr_name * aapl_id - Link access property list - * Outputs: attr_id - dataset identifier - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * OUTPUTS + * attr_id - dataset identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5aopen_c (hid_t_f *obj_id, _fcd attr_name, size_t_f *attr_namelen, hid_t_f *aapl_id, hid_t_f *attr_id) +/******/ { char *c_attr_name = NULL; /* Buffer to hold C string */ int_f ret_value = 0; /* Return value */ @@ -1131,24 +1349,33 @@ done: HDfree(c_attr_name); return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5adelete_by_name_c - * Purpose: Call h5adelete_by_name to remove an attribute from a specified location - * Inputs: loc_id - identifer for object to which attribute is attached +/****if* H5Af/h5adelete_by_name_c + * NAME + * h5adelete_by_name_c + * PURPOSE + * Call h5adelete_by_name to remove an attribute from a specified location + * INPUTS + * loc_id - identifer for object to which attribute is attached * obj_name - object identifier * obj_namelen - name length * attr_name - name of the attribute * attr_namelen - name length * lapl_id - link access property list * - * Outputs: N/A - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * OUTPUTS + * N/A + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5adelete_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd attr_name, size_t_f *attr_namelen, hid_t_f *lapl_id) +/******/ { char *c_obj_name = NULL; /* Buffer to hold C string */ char *c_attr_name = NULL; /* Buffer to hold C string */ @@ -1175,25 +1402,34 @@ done: HDfree(c_obj_name); return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5adelete_by_idx_c - * Purpose: Call h5adelete_by_idx - * Inputs: loc_id - Location or object identifier; may be dataset or group +/****if* H5Af/h5adelete_by_idx_c + * NAME + * h5adelete_by_idx_c + * PURPOSE + * Call h5adelete_by_idx + * INPUTS + * loc_id - Location or object identifier; may be dataset or group * obj_name - object identifier * obj_namelen - name length * attr_name - name of the attribute * attr_namelen - name length * lapl_id - link access property list * - * Outputs: N/A - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * OUTPUTS + * N/A + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5adelete_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, int_f *idx_type, int_f *order, hsize_t_f *n, hid_t_f *lapl_id) +/******/ { char *c_obj_name = NULL; /* Buffer to hold C string */ int_f ret_value = 0; /* Return value */ @@ -1216,11 +1452,13 @@ done: return ret_value; } - -/*---------------------------------------------------------------------------- - * Name: h5aget_name_by_idx_c - * Purpose: Call h5aget_name_by_idx - * Inputs: +/****if* H5Af/h5aget_name_by_idx_c + * NAME + * h5aget_name_by_idx_c + * PURPOSE + * Call h5aget_name_by_idx + * INPUTS + * * * loc_id - Identifer for object to which attribute is attached * obj_name - Name of object, relative to location, @@ -1246,17 +1484,23 @@ done: * hdferr - Error code: * Returns attribute name size, -1 if fail * - * Outputs: name - Attribute name + * OUTPUTS + * name - Attribute name * - * Returns: Size of buffer on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * Size of buffer on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5aget_name_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, int_f *idx_type, int_f *order, hsize_t_f *n, _fcd name, size_t_f *size, hid_t_f *lapl_id) +/******/ { char *c_obj_name = NULL; /* Buffer to hold C string */ ssize_t c_size; @@ -1299,10 +1543,13 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aopen_by_idx_c - * Purpose: Call H5Aopen_by_idx - * Inputs: loc_id - Object identifier +/****if* H5Af/h5aopen_by_idx_c + * NAME + * h5aopen_by_idx_c + * PURPOSE + * Call H5Aopen_by_idx + * INPUTS + * loc_id - Object identifier * obj_name - Name of object to which attribute is attached * obj_namelen - name length * idx_type - Type of index; Possible values are: @@ -1321,15 +1568,21 @@ done: * n - Attribute’s position in index * aapl_id - Attribute access property list * lapl_id - Link access property list - * Outputs: attr_id - attribute identifer - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * OUTPUTS + * attr_id - attribute identifer + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5aopen_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, int_f *idx_type, int_f *order, hsize_t_f *n, hid_t_f *aapl_id, hid_t_f *lapl_id, hid_t_f *attr_id ) +/******/ { char *c_obj_name = NULL; /* Buffer to hold C string */ int_f ret_value = 0; /* Return value */ @@ -1353,24 +1606,33 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aget_info_c - * Purpose: Call H5Aget_info - * Inputs: loc_id - Object identifier - * Outputs: +/****if* H5Af/h5aget_info_c + * NAME + * h5aget_info_c + * PURPOSE + * Call H5Aget_info + * INPUTS + * loc_id - Object identifier + * OUTPUTS + * * corder_valid - Indicates whether the the creation order data is valid for this attribute * corder - Is a positive integer containing the creation order of the attribute * cset - Indicates the character set used for the attribute’s name * data_size - indicates the size, in the number of characters, of the attribute * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5aget_info_c (hid_t_f *loc_id, int_f *corder_valid, int_f *corder, int_f *cset, hsize_t_f *data_size ) +/******/ { int_f ret_value = 0; /* Return value */ @@ -1396,10 +1658,13 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aget_info_by_idx_c - * Purpose: Call H5Aget_info_by_idx - * Inputs: loc_id - Object identifier +/****if* H5Af/h5aget_info_by_idx_c + * NAME + * h5aget_info_by_idx_c + * PURPOSE + * Call H5Aget_info_by_idx + * INPUTS + * loc_id - Object identifier * obj_name - Name of object to which attribute is attached * obj_namelen - name length * idx_type - Type of index; Possible values are: @@ -1417,22 +1682,28 @@ done: * * n - Attribute’s position in index * lapl_id - Link access property list - * Outputs: + * OUTPUTS + * * corder_valid - Indicates whether the the creation order data is valid for this attribute * corder - Is a positive integer containing the creation order of the attribute * cset - Indicates the character set used for the attribute’s name * data_size - indicates the size, in the number of characters, of the attribute * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5aget_info_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, int_f *idx_type, int_f *order, hsize_t_f *n, hid_t_f *lapl_id, int_f *corder_valid, int_f *corder, int_f *cset, hsize_t_f *data_size ) +/******/ { char *c_obj_name = NULL; /* Buffer to hold C string */ H5A_info_t ainfo; @@ -1466,31 +1737,40 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aget_info_by_name_c - * Purpose: Call H5Aget_info_by_name - * Inputs: loc_id - Object identifier +/****if* H5Af/h5aget_info_by_name_c + * NAME + * h5aget_info_by_name_c + * PURPOSE + * Call H5Aget_info_by_name + * INPUTS + * loc_id - Object identifier * obj_name - Name of object to which attribute is attached * obj_namelen - name length * attr_name - Attribute name * attr_namelen - attribute name length * lapl_id - Link access property list - * Outputs: + * OUTPUTS + * * corder_valid - Indicates whether the the creation order data is valid for this attribute * corder - Is a positive integer containing the creation order of the attribute * cset - Indicates the character set used for the attribute’s name * data_size - indicates the size, in the number of characters, of the attribute * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5aget_info_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd attr_name, size_t_f *attr_namelen, hid_t_f *lapl_id, int_f *corder_valid, int_f *corder, int_f *cset, hsize_t_f *data_size ) +/******/ { char *c_obj_name = NULL; /* Buffer to hold C string */ char *c_attr_name = NULL; /* Buffer to hold C string */ @@ -1528,11 +1808,14 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5acreate_by_name_c - * Purpose: Call h5acreate_by_name +/****if* H5Af/h5acreate_by_name_c + * NAME + * h5acreate_by_name_c + * PURPOSE + * Call h5acreate_by_name - * Inputs: + * INPUTS + * * loc_id - Object identifier * obj_name - Name of object to which attribute is attached * obj_namelen - name length @@ -1544,19 +1827,25 @@ done: * aapl_id - Attribute access property list identifier (Currently not used.) * lapl_id - Link access property list * - * Outputs: + * OUTPUTS + * * attr - an attribute identifier * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5acreate_by_name_c(hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd attr_name, size_t_f *attr_namelen, hid_t_f *type_id, hid_t_f *space_id, hid_t_f *acpl_id, hid_t_f *aapl_id, hid_t_f *lapl_id, hid_t_f *attr_id ) +/******/ { char *c_obj_name = NULL; /* Buffer to hold C string */ char *c_attr_name = NULL; /* Buffer to hold C string */ @@ -1585,21 +1874,30 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aexists_c - * Purpose: CAll h5aexists - * Inputs: +/****if* H5Af/h5aexists_c + * NAME + * h5aexists_c + * PURPOSE + * CAll h5aexists + * INPUTS + * * obj_id - Object identifier * attr_name - Attribute name - * Outputs: + * OUTPUTS + * * attr_exists_c - returns a positive value, for TRUE, or 0 (zero), for FALSE. - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5aexists_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *attr_exists) +/******/ { char *c_name = NULL; /* Buffer to hold C string */ int_f ret_value = 0; /* Return value */ @@ -1622,24 +1920,33 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aexists_by_name_c - * Purpose: CAll H5Aexists_by_name - * Inputs: +/****if* H5Af/h5aexists_by_name_c + * NAME + * h5aexists_by_name_c + * PURPOSE + * CAll H5Aexists_by_name + * INPUTS + * * loc_id - Location identifier * obj_name - Object name either relative to loc_id, absolute from the file’s root group, or '.' (a dot) * attr_name - Attribute name * lapl_id - Link access property list identifier - * Outputs: + * OUTPUTS + * * attr_exists_c - returns a positive value, for TRUE, or 0 (zero), for FALSE. - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5aexists_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd attr_name, size_t_f *attr_namelen, hid_t_f *lapl_id, int_f *attr_exists) +/******/ { char *c_obj_name = NULL; /* Buffer to hold object name C string */ char *c_attr_name = NULL; /* Buffer to hold attribute name C string */ @@ -1667,25 +1974,34 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5aopen_by_name_c - * Purpose: Call H5Aopen_by_name - * Inputs: +/****if* H5Af/h5aopen_by_name_c + * NAME + * h5aopen_by_name_c + * PURPOSE + * Call H5Aopen_by_name + * INPUTS + * * loc_id - Location identifier * obj_name - Object name either relative to loc_id, absolute from the file’s root group, or '.' (a dot) * attr_name - Attribute name * aapl_id - Attribute access property list (Currently unused; should be passed in as H5P_DEFAULT.) * lapl_id - Link access property list identifier - * Outputs: + * OUTPUTS + * * attr_id - attribute identifier - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5aopen_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd attr_name, size_t_f *attr_namelen, hid_t_f *aapl_id, hid_t_f *lapl_id, hid_t_f *attr_id) +/******/ { char *c_obj_name = NULL; /* Buffer to hold object name C string */ char *c_attr_name = NULL; /* Buffer to hold attribute name C string */ @@ -1713,25 +2029,34 @@ nh5aopen_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5arename_c - * Purpose: Calls H5Arename - * Inputs: loc_id - Object identifier +/****if* H5Af/h5arename_c + * NAME + * h5arename_c + * PURPOSE + * Calls H5Arename + * INPUTS + * loc_id - Object identifier * old_attr_name - Prior attribute name * old_attr_name_len - Prior attribute name length * new_attr_name - New attribute name * new_attr_name_len - New attribute name length - * Outputs: N/A - * Returns: 0 on success, -1 on failure - * Programmer: M. S. Breitenfeld + * OUTPUTS + * N/A + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5arename_c( hid_t_f *loc_id, _fcd old_attr_name, size_t_f *old_attr_namelen, _fcd new_attr_name, size_t_f *new_attr_namelen) +/******/ { char *c_old_attr_name = NULL; /* Buffer to hold C string */ char *c_new_attr_name = NULL; /* Buffer to hold C string */ @@ -1754,3 +2079,69 @@ done: HDfree(c_new_attr_name); return ret_value; } +/****if* H5Af/h5awrite_f_c + * NAME + * h5awrite_f_c + * PURPOSE + * Call H5Awrite to write a dataset + * INPUTS + * attr_id - Identifier of an attribute to write. + * mem_type_id - Identifier of the attribute datatype (in memory). + * buf - data pointer buffer + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * June 11, 2008 + * HISTORY + * + * + * SOURCE +*/ +int_f +nh5awrite_f_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf) +/******/ +{ + int ret_value = -1; + herr_t ret; + + ret = H5Awrite( (hid_t)*attr_id, (hid_t)*mem_type_id, buf); + + if (ret < 0) return ret_value; + ret_value = 0; + return ret_value; +} + +/****if* H5Af/h5aread_f_c + * NAME + * h5aread_f_c + * PURPOSE + * Call H5Awrite to write a dataset + * INPUTS + * attr_id - Identifier of an attribute to write. + * mem_type_id - Identifier of the attribute datatype (in memory). + * buf - data pointer buffer + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * June 11, 2008 + * HISTORY + * + * + * SOURCE +*/ +int_f +nh5aread_f_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf) +/******/ +{ + int ret_value = -1; + herr_t ret; + + ret = H5Aread( (hid_t)*attr_id, (hid_t)*mem_type_id, buf); + + if (ret < 0) return ret_value; + ret_value = 0; + return ret_value; +} + diff --git a/fortran/src/H5Aff.f90 b/fortran/src/H5Aff.f90 index 49f3e70..1926dd1 100644 --- a/fortran/src/H5Aff.f90 +++ b/fortran/src/H5Aff.f90 @@ -1,3 +1,15 @@ +!****h* ROBODoc/H5A +! +! NAME +! MODULE H5A +! +! PURPOSE +! This file contains Fortran interfaces for H5A functions. It includes +! all the functions that are independent on whether the Fortran 2003 functions +! are enabled or disabled. +! +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,129 +25,77 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! NOTES +! *** IMPORTANT *** +! If you add a new H5A function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. ! -! This file contains Fortran90 interfaces for H5A functions. -! +!***** + MODULE H5A USE H5GLOBAL ! -!On Windows there are no big (integer*8) integers, so overloading -!for bug #670 does not work. I have to use DEC compilation directives to make -!Windows DEC Visual Fortran and OSF compilers happy and do right things. -! 05/01/02 EP -! - INTERFACE h5awrite_f - - MODULE PROCEDURE h5awrite_integer_scalar - MODULE PROCEDURE h5awrite_integer_1 - MODULE PROCEDURE h5awrite_integer_2 - MODULE PROCEDURE h5awrite_integer_3 - MODULE PROCEDURE h5awrite_integer_4 - MODULE PROCEDURE h5awrite_integer_5 - MODULE PROCEDURE h5awrite_integer_6 - MODULE PROCEDURE h5awrite_integer_7 - MODULE PROCEDURE h5awrite_char_scalar - MODULE PROCEDURE h5awrite_char_1 - MODULE PROCEDURE h5awrite_char_2 - MODULE PROCEDURE h5awrite_char_3 - MODULE PROCEDURE h5awrite_char_4 - MODULE PROCEDURE h5awrite_char_5 - MODULE PROCEDURE h5awrite_char_6 - MODULE PROCEDURE h5awrite_char_7 - MODULE PROCEDURE h5awrite_real_scalar - MODULE PROCEDURE h5awrite_real_1 - MODULE PROCEDURE h5awrite_real_2 - MODULE PROCEDURE h5awrite_real_3 - MODULE PROCEDURE h5awrite_real_4 - MODULE PROCEDURE h5awrite_real_5 - MODULE PROCEDURE h5awrite_real_6 - MODULE PROCEDURE h5awrite_real_7 - - END INTERFACE - - INTERFACE h5aread_f - - MODULE PROCEDURE h5aread_integer_scalar - MODULE PROCEDURE h5aread_integer_1 - MODULE PROCEDURE h5aread_integer_2 - MODULE PROCEDURE h5aread_integer_3 - MODULE PROCEDURE h5aread_integer_4 - MODULE PROCEDURE h5aread_integer_5 - MODULE PROCEDURE h5aread_integer_6 - MODULE PROCEDURE h5aread_integer_7 - MODULE PROCEDURE h5aread_char_scalar - MODULE PROCEDURE h5aread_char_1 - MODULE PROCEDURE h5aread_char_2 - MODULE PROCEDURE h5aread_char_3 - MODULE PROCEDURE h5aread_char_4 - MODULE PROCEDURE h5aread_char_5 - MODULE PROCEDURE h5aread_char_6 - MODULE PROCEDURE h5aread_char_7 - MODULE PROCEDURE h5aread_real_scalar - MODULE PROCEDURE h5aread_real_1 - MODULE PROCEDURE h5aread_real_2 - MODULE PROCEDURE h5aread_real_3 - MODULE PROCEDURE h5aread_real_4 - MODULE PROCEDURE h5aread_real_5 - MODULE PROCEDURE h5aread_real_6 - MODULE PROCEDURE h5aread_real_7 - - END INTERFACE +! On Windows there are no big (integer*8) integers, so overloading +! for bug #670 does not work. I have to use DEC compilation directives to make +! Windows DEC Visual Fortran and OSF compilers happy and do right things. +! 05/01/02 EP +! CONTAINS -!---------------------------------------------------------------------- -! Name: h5acreate_f ! -! Purpose: Creates a dataset as an attribute of a group, dataset, -! or named datatype +!****s* H5A/h5acreate_f +! +! NAME +! h5acreate_f +! +! PURPOSE +! Creates a dataset as an attribute of a group, dataset, or named datatype +! +! INPUTS +! loc_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 ! -! Inputs: -! loc_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 - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! acpl_id - Attribute creation property list identifier +! appl_id - Attribute access property list identifier ! -! Outputs: -! attr_id - attribute identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! acpl_id - Attribute creation property list identifier -! appl_id - Attribute access property list identifier +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Programmer: Elena Pourmal -! August 12, 1999 +! HISTORY +! Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 ! -! Modifications: Explicit Fortran interfaces are added for -! called C functions (it is needed for Windows -! port). February 27, 2001 ! -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5acreate_f(loc_id, name, type_id, space_id, attr_id, & hdferr, acpl_id, aapl_id ) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name - INTEGER(HID_T), INTENT(IN) :: type_id - ! Attribute datatype identifier - INTEGER(HID_T), INTENT(IN) :: space_id - ! Attribute dataspace identifier - INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code: - ! 0 on success and -1 on failure + INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name + INTEGER(HID_T), INTENT(IN) :: type_id ! Attribute datatype identifier + INTEGER(HID_T), INTENT(IN) :: space_id ! Attribute dataspace identifier + INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 on success and -1 on failure +!***** INTEGER(HID_T), OPTIONAL, INTENT(IN) :: acpl_id ! Attribute creation property list identifier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: aapl_id ! Attribute access property list identifier INTEGER(HID_T) :: acpl_id_default INTEGER(HID_T) :: aapl_id_default INTEGER(SIZE_T) :: namelen -! INTEGER, EXTERNAL :: h5acreate_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5acreate_c(loc_id, name, namelen, type_id, & space_id, acpl_id_default, aapl_id_default, attr_id) @@ -157,7 +117,7 @@ CONTAINS acpl_id_default = H5P_DEFAULT_F aapl_id_default = H5P_DEFAULT_F - namelen = LEN(NAME) + namelen = LEN(name) IF (PRESENT(acpl_id)) acpl_id_default = acpl_id IF (PRESENT(aapl_id)) aapl_id_default = aapl_id @@ -167,43 +127,42 @@ CONTAINS END SUBROUTINE h5acreate_f -!---------------------------------------------------------------------- -! Name: h5aopen_name_f ! -! Purpose: Opens an attribute specified by name. +!****s* H5A/h5aopen_name_f ! -! 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 +! NAME +! h5aopen_name_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Opens an attribute specified by name. ! -! Modifications: Explicit Fortran interfaces are added for -! called C functions (it is needed for Windows -! port). February 27, 2001 +! 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 - Returns 0 if successful and -1 if fails ! -!---------------------------------------------------------------------- - +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +! SOURCE SUBROUTINE h5aopen_name_f(obj_id, name, attr_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTEGER(SIZE_T) :: namelen -! 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 @@ -221,44 +180,41 @@ CONTAINS 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. +!****s* H5A/h5aopen_idx_f ! -! 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 +! NAME +! h5aopen_idx_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Opens the attribute specified by its index. ! -! Modifications: Explicit Fortran interfaces are added for -! called C functions (it is needed for Windows -! port). February 27, 2001 +! 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 - Returns 0 if successful and -1 if fails ! -!---------------------------------------------------------------------- - +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +! SOURCE SUBROUTINE h5aopen_idx_f(obj_id, index, attr_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier 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 -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5aopen_idx_c(obj_id, index, attr_id) USE H5GLOBAL @@ -273,1686 +229,131 @@ CONTAINS hdferr = h5aopen_idx_c(obj_id, index, attr_id) END SUBROUTINE h5aopen_idx_f - - - SUBROUTINE h5awrite_integer_scalar(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(IN) :: buf ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_integer_s_c -! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5awrite_integer_s_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_S_C'::h5awrite_integer_s_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(IN)::buf - END FUNCTION h5awrite_integer_s_c - END INTERFACE - - hdferr = h5awrite_integer_s_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_integer_scalar - - SUBROUTINE h5awrite_integer_1(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(IN) , & - DIMENSION(dims(1)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_integer_1_c -! MS FORTRAN needs explicit interface for C functions called here. +!****s* H5A/h5aget_space_f ! - INTERFACE - INTEGER FUNCTION h5awrite_integer_1_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_1_C'::h5awrite_integer_1_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(IN), DIMENSION(dims(1)) :: buf - END FUNCTION h5awrite_integer_1_c - END INTERFACE - - hdferr = h5awrite_integer_1_c(attr_id, memtype_id, buf, dims) - - END SUBROUTINE h5awrite_integer_1 - - - SUBROUTINE h5awrite_integer_2(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(IN) , & - DIMENSION(dims(1),dims(2)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_integer_2_c -! MS FORTRAN needs explicit interface for C functions called here. +! NAME +! h5aget_space_f ! - INTERFACE - INTEGER FUNCTION h5awrite_integer_2_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_2_C'::h5awrite_integer_2_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5awrite_integer_2_c - END INTERFACE - - hdferr = h5awrite_integer_2_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_integer_2 - - - SUBROUTINE h5awrite_integer_3(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_integer_3_c -! MS FORTRAN needs explicit interface for C functions called here. +! PURPOSE +! Gets a copy of the dataspace for an attribute. ! - INTERFACE - INTEGER FUNCTION h5awrite_integer_3_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_3_C'::h5awrite_integer_3_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3)) :: buf - END FUNCTION h5awrite_integer_3_c - END INTERFACE - - hdferr = h5awrite_integer_3_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_integer_3 - - - SUBROUTINE h5awrite_integer_4(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_integer_4_c -! MS FORTRAN needs explicit interface for C functions called here. +! INPUTS +! attr_id - attribute identifier ! - INTERFACE - INTEGER FUNCTION h5awrite_integer_4_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_4_C'::h5awrite_integer_4_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - END FUNCTION h5awrite_integer_4_c - END INTERFACE - - hdferr = h5awrite_integer_4_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_integer_4 - - - SUBROUTINE h5awrite_integer_5(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_integer_5_c -! MS FORTRAN needs explicit interface for C functions called here. +! OUTPUTS +! space_id - attribite dataspace identifier +! hdferr - Returns 0 if successful and -1 if fails ! - INTERFACE - INTEGER FUNCTION h5awrite_integer_5_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_5_C'::h5awrite_integer_5_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - END FUNCTION h5awrite_integer_5_c - END INTERFACE - - hdferr = h5awrite_integer_5_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_integer_5 - - - SUBROUTINE h5awrite_integer_6(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_integer_6_c -! MS FORTRAN needs explicit interface for C functions called here. +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! - INTERFACE - INTEGER FUNCTION h5awrite_integer_6_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_6_C'::h5awrite_integer_6_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - END FUNCTION h5awrite_integer_6_c - END INTERFACE - - hdferr = h5awrite_integer_6_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_integer_6 - - - SUBROUTINE h5awrite_integer_7(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_integer_7_c -! MS FORTRAN needs explicit interface for C functions called here. +! HISTORY +! Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 ! - INTERFACE - INTEGER FUNCTION h5awrite_integer_7_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_7_C'::h5awrite_integer_7_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - END FUNCTION h5awrite_integer_7_c - END INTERFACE - - hdferr = h5awrite_integer_7_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_integer_7 - - - SUBROUTINE h5awrite_real_scalar(attr_id, memtype_id, buf, dims, hdferr) +! +! SOURCE + SUBROUTINE h5aget_space_f(attr_id, space_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(IN) :: buf ! Attribute data + INTEGER(HID_T), INTENT(OUT) :: space_id ! Attribute dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_real_s_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE - INTEGER FUNCTION h5awrite_real_s_c(attr_id, memtype_id, buf, dims) + INTEGER FUNCTION h5aget_space_c(attr_id, space_id) USE H5GLOBAL !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_S_C'::h5awrite_real_s_c + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AGET_SPACE_C'::h5aget_space_c !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(IN)::buf - END FUNCTION h5awrite_real_s_c + INTEGER(HID_T), INTENT(OUT) :: space_id + END FUNCTION h5aget_space_c END INTERFACE - - hdferr = h5awrite_real_s_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_real_scalar - - SUBROUTINE h5awrite_real_1(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(IN), & - DIMENSION(dims(1)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_real_1_c -! MS FORTRAN needs explicit interface for C functions called here. + + hdferr = h5aget_space_c(attr_id, space_id) + END SUBROUTINE h5aget_space_f +! +!****s* H5A/h5aget_type_f +! +! NAME +! h5aget_type_f +! +! PURPOSE +! Gets an attribute datatype. ! +! INPUTS +! attr_id - attribute identifier +! OUTPUTS +! type_id - attribute datatype identifier +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +! SOURCE + SUBROUTINE h5aget_type_f(attr_id, type_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(OUT) :: type_id ! Attribute datatype identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTERFACE - INTEGER FUNCTION h5awrite_real_1_c(attr_id, memtype_id, buf, dims) + INTEGER FUNCTION h5aget_type_c(attr_id, type_id) USE H5GLOBAL !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_1_C'::h5awrite_real_1_c + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AGET_TYPE_C'::h5aget_type_c !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(IN), & - DIMENSION(dims(1)) :: buf - END FUNCTION h5awrite_real_1_c + INTEGER(HID_T), INTENT(OUT) :: type_id + END FUNCTION h5aget_type_c END INTERFACE - - hdferr = h5awrite_real_1_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_real_1 - - - SUBROUTINE h5awrite_real_2(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_real_2_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awrite_real_2_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_2_C'::h5awrite_real_2_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5awrite_real_2_c - END INTERFACE - - hdferr = h5awrite_real_2_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_real_2 - - - SUBROUTINE h5awrite_real_3(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_real_3_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awrite_real_3_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_3_C'::h5awrite_real_3_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - END FUNCTION h5awrite_real_3_c - END INTERFACE - - hdferr = h5awrite_real_3_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_real_3 - - - SUBROUTINE h5awrite_real_4(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_real_4_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awrite_real_4_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_4_C'::h5awrite_real_4_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - END FUNCTION h5awrite_real_4_c - END INTERFACE - - hdferr = h5awrite_real_4_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_real_4 - - - SUBROUTINE h5awrite_real_5(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_real_5_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awrite_real_5_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_5_C'::h5awrite_real_5_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - END FUNCTION h5awrite_real_5_c - END INTERFACE - - hdferr = h5awrite_real_5_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_real_5 - - - SUBROUTINE h5awrite_real_6(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_real_6_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awrite_real_6_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_6_C'::h5awrite_real_6_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - END FUNCTION h5awrite_real_6_c - END INTERFACE - - hdferr = h5awrite_real_6_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_real_6 - - - SUBROUTINE h5awrite_real_7(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awrite_real_7_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awrite_real_7_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_7_C'::h5awrite_real_7_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - END FUNCTION h5awrite_real_7_c - END INTERFACE - - hdferr = h5awrite_real_7_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_real_7 - - - SUBROUTINE h5awrite_char_scalar(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*),INTENT(IN) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code -! INTEGER, EXTERNAL :: h5awritec_s_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awritec_s_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_S_C'::h5awritec_s_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - !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_s_c - END INTERFACE - - hdferr = h5awritec_s_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_char_scalar - - SUBROUTINE h5awrite_char_1(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code -! INTEGER, EXTERNAL :: h5awritec_1_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awritec_1_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_1_C'::h5awritec_1_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(IN), DIMENSION(dims(1))::buf - END FUNCTION h5awritec_1_c - END INTERFACE - - hdferr = h5awritec_1_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_char_1 - - - SUBROUTINE h5awrite_char_2(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5awritec_2_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awritec_2_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_2_C'::h5awritec_2_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5awritec_2_c - END INTERFACE - - hdferr = h5awritec_2_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_char_2 - - - SUBROUTINE h5awrite_char_3(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code -! INTEGER, EXTERNAL :: h5awritec_3_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awritec_3_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_3_C'::h5awritec_3_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - END FUNCTION h5awritec_3_c - END INTERFACE - - hdferr = h5awritec_3_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_char_3 - - - SUBROUTINE h5awrite_char_4(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code -! INTEGER, EXTERNAL :: h5awritec_4_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awritec_4_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_4_C'::h5awritec_4_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - END FUNCTION h5awritec_4_c - END INTERFACE - - hdferr = h5awritec_4_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_char_4 - - - SUBROUTINE h5awrite_char_5(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code -! INTEGER, EXTERNAL :: h5awritec_5_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awritec_5_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_5_C'::h5awritec_5_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - END FUNCTION h5awritec_5_c - END INTERFACE - - hdferr = h5awritec_5_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_char_5 - - - SUBROUTINE h5awrite_char_6(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code -! INTEGER, EXTERNAL :: h5awritec_6_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awritec_6_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_6_C'::h5awritec_6_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - END FUNCTION h5awritec_6_c - END INTERFACE - - hdferr = h5awritec_6_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_char_6 - - - SUBROUTINE h5awrite_char_7(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code -! INTEGER, EXTERNAL :: h5awritec_7_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5awritec_7_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_7_C'::h5awritec_7_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - END FUNCTION h5awritec_7_c - END INTERFACE - - hdferr = h5awritec_7_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5awrite_char_7 - -!---------------------------------------------------------------------- -! Name: h5aread_f -! -! Purpose: Reads an attribute. -! -! Inputs: -! attr_id - attribute identifier -! memtype_id - attribute memory type identifier -! dims - 1D array of size 7, stores sizes of the -! - buf array dimensions. -! 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 -! -! dims parameter was added to make code portable; -! Aprile 4, 2001 -! -! Changed buf intent to INOUT to be consistant -! with how the C functions handles it. The pg -! compiler will return 0 if a buf value is not set. -! February, 2008 -! -! 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, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(INOUT) :: buf ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_integer_s_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_integer_s_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_S_C'::h5aread_integer_s_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(INOUT)::buf - END FUNCTION h5aread_integer_s_c - END INTERFACE - hdferr = h5aread_integer_s_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_integer_scalar - - SUBROUTINE h5aread_integer_1(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(INOUT), DIMENSION(dims(1)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_integer_1_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_integer_1_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_1_C'::h5aread_integer_1_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(INOUT), DIMENSION(dims(1)) :: buf - END FUNCTION h5aread_integer_1_c - END INTERFACE - - hdferr = h5aread_integer_1_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_integer_1 - - - SUBROUTINE h5aread_integer_2(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(INOUT),DIMENSION(dims(1),dims(2)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_integer_2_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_integer_2_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_2_C'::h5aread_integer_2_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(INOUT), DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5aread_integer_2_c - END INTERFACE - - hdferr = h5aread_integer_2_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_integer_2 - - - SUBROUTINE h5aread_integer_3(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_integer_3_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_integer_3_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_3_C'::h5aread_integer_3_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - END FUNCTION h5aread_integer_3_c - END INTERFACE - - hdferr = h5aread_integer_3_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_integer_3 - - - SUBROUTINE h5aread_integer_4(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_integer_4_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_integer_4_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_4_C'::h5aread_integer_4_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - END FUNCTION h5aread_integer_4_c - END INTERFACE - - hdferr = h5aread_integer_4_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_integer_4 - - - SUBROUTINE h5aread_integer_5(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_integer_5_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_integer_5_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_5_C'::h5aread_integer_5_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - END FUNCTION h5aread_integer_5_c - END INTERFACE - - hdferr = h5aread_integer_5_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_integer_5 - - - SUBROUTINE h5aread_integer_6(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_integer_6_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_integer_6_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_6_C'::h5aread_integer_6_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - END FUNCTION h5aread_integer_6_c - END INTERFACE - - hdferr = h5aread_integer_6_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_integer_6 - - - SUBROUTINE h5aread_integer_7(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_integer_7_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_integer_7_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_7_C'::h5aread_integer_7_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - END FUNCTION h5aread_integer_7_c - END INTERFACE - - hdferr = h5aread_integer_7_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_integer_7 - - - SUBROUTINE h5aread_real_scalar(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(INOUT) :: buf ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_real_s_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_real_s_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_S_C'::h5aread_real_s_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(INOUT)::buf - END FUNCTION h5aread_real_s_c - END INTERFACE - - hdferr = h5aread_real_s_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_real_scalar - - SUBROUTINE h5aread_real_1(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(INOUT), & - DIMENSION(dims(1)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_real_1_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_real_1_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_1_C'::h5aread_real_1_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(INOUT), & - DIMENSION(dims(1)) :: buf - END FUNCTION h5aread_real_1_c - END INTERFACE - - hdferr = h5aread_real_1_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_real_1 - - - SUBROUTINE h5aread_real_2(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_real_2_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_real_2_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_2_C'::h5aread_real_2_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5aread_real_2_c - END INTERFACE - - hdferr = h5aread_real_2_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_real_2 - - - SUBROUTINE h5aread_real_3(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_real_3_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_real_3_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_3_C'::h5aread_real_3_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - END FUNCTION h5aread_real_3_c - END INTERFACE - - hdferr = h5aread_real_3_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_real_3 - - - SUBROUTINE h5aread_real_4(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_real_4_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_real_4_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_4_C'::h5aread_real_4_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - END FUNCTION h5aread_real_4_c - END INTERFACE - - hdferr = h5aread_real_4_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_real_4 - - - SUBROUTINE h5aread_real_5(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_real_5_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_real_5_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_5_C'::h5aread_real_5_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - END FUNCTION h5aread_real_5_c - END INTERFACE - - hdferr = h5aread_real_5_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_real_5 - - - SUBROUTINE h5aread_real_6(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_real_6_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_real_6_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_6_C'::h5aread_real_6_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - END FUNCTION h5aread_real_6_c - END INTERFACE - - hdferr = h5aread_real_6_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_real_6 - - - SUBROUTINE h5aread_real_7(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5aread_real_7_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5aread_real_7_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_7_C'::h5aread_real_7_c - !DEC$ENDIF - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - END FUNCTION h5aread_real_7_c - END INTERFACE - - hdferr = h5aread_real_7_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_real_7 - - SUBROUTINE h5aread_char_scalar(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(INOUT) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5areadc_s_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5areadc_s_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_S_C'::h5areadc_s_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(INOUT) :: buf - END FUNCTION h5areadc_s_c - END INTERFACE - - hdferr = h5areadc_s_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_char_scalar - - SUBROUTINE h5aread_char_1(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5areadc_1_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5areadc_1_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_1_C'::h5areadc_1_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1)) :: buf - END FUNCTION h5areadc_1_c - END INTERFACE - - hdferr = h5areadc_1_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_char_1 - - - SUBROUTINE h5aread_char_2(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5areadc_2_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5areadc_2_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_2_C'::h5areadc_2_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5areadc_2_c - END INTERFACE - - hdferr = h5areadc_2_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_char_2 - - - SUBROUTINE h5aread_char_3(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5areadc_3_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5areadc_3_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_3_C'::h5areadc_3_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - END FUNCTION h5areadc_3_c - END INTERFACE - - hdferr = h5areadc_3_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_char_3 - - - SUBROUTINE h5aread_char_4(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5areadc_4_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5areadc_4_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_4_C'::h5areadc_4_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - END FUNCTION h5areadc_4_c - END INTERFACE - - hdferr = h5areadc_4_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_char_4 - - - SUBROUTINE h5aread_char_5(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5areadc_5_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5areadc_5_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_5_C'::h5areadc_5_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - END FUNCTION h5areadc_5_c - END INTERFACE - - hdferr = h5areadc_5_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_char_5 - - - SUBROUTINE h5aread_char_6(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5areadc_6_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5areadc_6_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_6_C'::h5areadc_6_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - END FUNCTION h5areadc_6_c - END INTERFACE - - hdferr = h5areadc_6_c(attr_id, memtype_id, buf, dims) - END SUBROUTINE h5aread_char_6 - - - SUBROUTINE h5aread_char_7(attr_id, memtype_id, buf, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype - ! identifier (in memory) - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - ! Attribute data - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5areadc_7_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5areadc_7_c(attr_id, memtype_id, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_7_C'::h5areadc_7_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes - INTEGER(HID_T), INTENT(IN) :: attr_id - INTEGER(HID_T), INTENT(IN) :: memtype_id - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - END FUNCTION h5areadc_7_c - END INTERFACE - - hdferr = h5areadc_7_c(attr_id, memtype_id, buf, dims) - 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 - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(OUT) :: space_id - ! Attribute dataspace identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! 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 - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AGET_SPACE_C'::h5aget_space_c - !DEC$ENDIF - 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 - INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HID_T), INTENT(OUT) :: type_id - ! Attribute datatype identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! 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 - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AGET_TYPE_C'::h5aget_type_c - !DEC$ENDIF - 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 -! -!---------------------------------------------------------------------- - - + + hdferr = h5aget_type_c(attr_id, type_id) + END SUBROUTINE h5aget_type_f +! +!****s* H5A/h5aget_name_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 - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +! +! SOURCE SUBROUTINE h5aget_name_f(attr_id, size, buf, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(SIZE_T), INTENT(IN) :: size ! Buffer size - CHARACTER(LEN=*), INTENT(INOUT) :: buf - ! Buffer to hold attribute name + CHARACTER(LEN=*), INTENT(INOUT) :: buf ! Buffer to hold attribute name INTEGER, INTENT(OUT) :: hdferr ! Error code: - ! name length is successful, - ! -1 if fail - -! MS FORTRAN needs explicit interface for C functions called here. -! + ! name length is successful, -1 if fail +!***** INTERFACE INTEGER FUNCTION h5aget_name_c(attr_id, size, buf) USE H5GLOBAL @@ -1969,47 +370,46 @@ CONTAINS hdferr = h5aget_name_c(attr_id, size, buf) END SUBROUTINE h5aget_name_f -!---------------------------------------------------------------------- -! Name: h5aget_name_by_idx_f ! -! Purpose: Gets an attribute name, by attribute index position. +!****s* H5A/h5aget_name_by_idx_f ! -! Inputs: -! loc_id - Location of object to which attribute is attached -! obj_name - Name of object to which attribute is attached, relative to location -! idx_type - Type of index; Possible values are: +! NAME +! h5aget_name_by_idx_f ! -! H5_INDEX_UNKNOWN_F = -1 - Unknown index type -! H5_INDEX_NAME_F - Index on names -! H5_INDEX_CRT_ORDER_F - Index on creation order -! H5_INDEX_N_F - Number of indices defined +! PURPOSE +! Gets an attribute name, by attribute index position. ! -! order - Order in which to iterate over index; Possible values are: +! INPUTS +! loc_id - Location of object to which attribute is attached +! obj_name - Name of object to which attribute is attached, relative to location +! idx_type - Type of index; Possible values are: +! H5_INDEX_UNKNOWN_F = -1 - Unknown index type +! H5_INDEX_NAME_F - Index on names +! H5_INDEX_CRT_ORDER_F - Index on creation order +! H5_INDEX_N_F - Number of indices defined ! -! H5_ITER_UNKNOWN_F - Unknown order -! H5_ITER_INC_F - Increasing order -! H5_ITER_DEC_F - Decreasing order -! H5_ITER_NATIVE_F - No particular order, whatever is fastest -! H5_ITER_N_F - Number of iteration orders +! order - Order in which to iterate over index; Possible values are: +! H5_ITER_UNKNOWN_F - Unknown order +! H5_ITER_INC_F - Increasing order +! H5_ITER_DEC_F - Decreasing order +! H5_ITER_NATIVE_F - No particular order, whatever is fastest +! H5_ITER_N_F - Number of iteration orders +! order - Index traversal order +! n - Attribute’s position in index ! -! order - Index traversal order -! n - Attribute’s position in index +! OUTPUTS +! name - Attribute name +! hdferr - Returns 0 if successful and -1 if fails ! -! Outputs: -! name - Attribute name -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - Link access property list -! size - Size, in bytes, of attribute name +! OPTIONAL PARAMETERS +! lapl_id - Link access property list +! size - Size, in bytes, of attribute name ! -! Programmer: M.S. Breitenfeld -! January, 2008 +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 ! -! Modifications: N/A -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5aget_name_by_idx_f(loc_id, obj_name, idx_type, order, & n, name, hdferr, size, lapl_id) IMPLICIT NONE @@ -2028,23 +428,19 @@ CONTAINS ! H5_ITER_DEC_F - Decreasing order ! H5_ITER_NATIVE_F - No particular order, whatever is fastest ! H5_ITER_N_F - Number of iteration orders - INTEGER(HSIZE_T), INTENT(IN) :: n ! Attribute’s position in index - CHARACTER(LEN=*), INTENT(OUT) :: name ! Attribute name - - INTEGER, INTENT(OUT) :: hdferr ! Error code: - ! Returns attribute name size, - ! -1 if fail - INTEGER(SIZE_T) :: obj_namelen - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list + ! Returns attribute name size, + ! -1 if fail + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list + INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size ! Indicates the size, in the number of characters, + ! of the attribute +!***** INTEGER(HID_T) :: lapl_id_default - INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size ! Indicates the size, in the number of characters, of the attribute + INTEGER(SIZE_T) :: obj_namelen INTEGER(SIZE_T) :: size_default -! -! MS FORTRAN needs explicit interface for C functions called here. -! + INTERFACE INTEGER FUNCTION h5aget_name_by_idx_c(loc_id, obj_name, obj_namelen, idx_type, order, & n, name, size_default, lapl_id_default) @@ -2079,43 +475,39 @@ CONTAINS END SUBROUTINE h5aget_name_by_idx_f - - -!---------------------------------------------------------------------- -! Name: h5aget_num_attrs_f ! -! Purpose: Determines the number of attributes attached to an object. +!****s* H5A/h5aget_num_attrs_f ! -! 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 +! NAME +! h5aget_num_attrs_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Determines the number of attributes attached to an object. ! -! Modifications: Explicit Fortran interfaces are added for -! called C functions (it is needed for Windows -! port). February 27, 2001 +! INPUTS +! obj_id - object (group, dataset, or named datatype) +! identifier +! OUTPUTS +! attr_num - number of attributes attached to the object +! hdferr - Returns 0 if successful and -1 if fails ! -!---------------------------------------------------------------------- - +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +! SOURCE SUBROUTINE h5aget_num_attrs_f(obj_id, attr_num, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier - INTEGER, INTENT(OUT) :: attr_num ! Number of attributes of the - ! object - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(OUT) :: attr_num ! Number of attributes of the object + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! 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 @@ -2130,42 +522,40 @@ CONTAINS 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) +!****s* H5A/h5adelete_f ! -! Inputs: -! obj_id - object identifier -! name - attribute name -! Outputs: +! NAME +! h5adelete_f ! -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Deletes an attribute of an object (group, dataset or +! named datatype) ! -! Programmer: Elena Pourmal -! August 12, 1999 +! INPUTS +! obj_id - object identifier +! name - attribute name +! OUTPUTS ! -! Modifications: Explicit Fortran interfaces are added for -! called C functions (it is needed for Windows -! port). February 27, 2001 +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -!---------------------------------------------------------------------- - +! HISTORY +! Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +! SOURCE SUBROUTINE h5adelete_f(obj_id, name, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTEGER(SIZE_T) :: namelen -! 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 @@ -2183,38 +573,36 @@ CONTAINS hdferr = h5adelete_c(obj_id, name, namelen) END SUBROUTINE h5adelete_f -!---------------------------------------------------------------------- -! Name: h5aclose_f ! -! Purpose: Closes the specified attribute. +!****s* H5A/h5aclose_f ! -! Inputs: -! attr_id - attribute identifier -! Outputs: +! NAME +! h5aclose_f ! -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Closes the specified attribute. ! -! Programmer: Elena Pourmal -! August 12, 1999 +! INPUTS +! attr_id - attribute identifier +! OUTPUTS ! -! Modifications: Explicit Fortran interfaces are added for -! called C functions (it is needed for Windows -! port). February 27, 2001 +! hdferr - Returns 0 if successful and -1 if fails ! -!---------------------------------------------------------------------- - +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! SOURCE SUBROUTINE h5aclose_f(attr_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code: + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5aclose_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5aclose_c(attr_id) USE H5GLOBAL @@ -2228,36 +616,32 @@ CONTAINS hdferr = h5aclose_c(attr_id) END SUBROUTINE h5aclose_f -!---------------------------------------------------------------------- -! Name: h5aget_storage_size_f ! -! Purpose: Returns the amount of storage required for an attribute. +!****s* H5A/h5aget_storage_size_f ! -! Inputs: -! attr_id - attribute identifier -! Outputs: -! size - attribute storage size -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5aget_storage_size_f ! -! Programmer: M. S. Breitenfeld -! January, 2008 +! PURPOSE +! Returns the amount of storage required for an attribute. ! -! Modifications: N/A +! INPUTS +! attr_id - attribute identifier +! OUTPUTS +! size - attribute storage size +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 ! -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5aget_storage_size_f(attr_id, size, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier - INTEGER(HSIZE_T), INTENT(OUT) :: size ! Attribute storage requirement + INTEGER(HSIZE_T), INTENT(OUT) :: size ! Attribute storage requirement INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5aget_storage_size_c(attr_id, size) USE H5GLOBAL @@ -2272,37 +656,34 @@ CONTAINS hdferr = h5aget_storage_size_c(attr_id, size) END SUBROUTINE h5aget_storage_size_f -!---------------------------------------------------------------------- -! Name: h5aget_create_plist_f ! -! Purpose: Gets an attribute creation property list identifier +!****s* H5A/h5aget_create_plist_f ! -! Inputs: -! attr_id - Identifier of the attribute -! Outputs: -! creation_prop_id - Identifier for the attribute’s creation property -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5aget_create_plist_f ! -! Programmer: M. S. Breitenfeld -! January, 2008 +! PURPOSE +! Gets an attribute creation property list identifier ! -! Modifications: N/A +! INPUTS +! attr_id - Identifier of the attribute +! OUTPUTS +! creation_prop_id - Identifier for the attribute’s creation property +! hdferr - Returns 0 if successful and -1 if fails ! -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 +! +! SOURCE SUBROUTINE h5aget_create_plist_f(attr_id, creation_prop_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Identifier of the attribute INTEGER(HID_T), INTENT(OUT) :: creation_prop_id ! Identifier for the attribute’s creation property - INTEGER, INTENT(OUT) :: hdferr ! Error code: + INTEGER, INTENT(OUT) :: hdferr ! Error code ! 0 on success and -1 on failure +!***** -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5aget_create_plist_c(attr_id, creation_prop_id) USE H5GLOBAL @@ -2317,31 +698,31 @@ CONTAINS hdferr = h5aget_create_plist_c(attr_id, creation_prop_id) END SUBROUTINE h5aget_create_plist_f -!---------------------------------------------------------------------- -! Name: h5arename_by_name_f ! -! Purpose: Renames an attribute +!****s* H5A/h5arename_by_name_f ! -! Inputs: -! loc_id - Location or object identifier; may be dataset or group -! obj_name - Name of object, relative to location, -! whose attribute is to be renamed -! old_attr_name - Prior attribute name -! new_attr_name - New attribute name -! lapl_id - Link access property list identifier +! NAME +! h5arename_by_name_f ! -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 +! PURPOSE +! Renames an attribute ! -! Programmer: M.S. Breitenfeld -! January, 2008 +! INPUTS +! loc_id - Location or object identifier; may be dataset or group +! obj_name - Name of object, relative to location, +! whose attribute is to be renamed +! old_attr_name - Prior attribute name +! new_attr_name - New attribute name +! lapl_id - Link access property list identifier ! -! Modifications: N/A +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 +! +! SOURCE SUBROUTINE h5arename_by_name_f(loc_id, obj_name, old_attr_name, new_attr_name, & hdferr, lapl_id) IMPLICIT NONE @@ -2354,14 +735,12 @@ CONTAINS INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier - +!***** INTEGER(HID_T) :: lapl_id_default INTEGER(SIZE_T) :: obj_namelen INTEGER(SIZE_T) :: old_attr_namelen INTEGER(SIZE_T) :: new_attr_namelen -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5arename_by_name_c(loc_id, obj_name, obj_namelen, & old_attr_name, old_attr_namelen, new_attr_name, new_attr_namelen, & @@ -2370,7 +749,7 @@ CONTAINS !DEC$IF DEFINED(HDF5F90_WINDOWS) !DEC$ATTRIBUTES C,reference,decorate,alias:'H5ARENAME_BY_NAME_C'::h5arename_by_name_c !DEC$ENDIF - !DEC$ATTRIBUTES reference :: obj_name, old_attr_name, new_attr_name + !DEC$ATTRIBUTES reference :: obj_name, old_attr_name, new_attr_name INTEGER(HID_T), INTENT(IN) :: loc_id CHARACTER(LEN=*), INTENT(IN) :: obj_name INTEGER(SIZE_T) :: obj_namelen @@ -2396,30 +775,31 @@ CONTAINS END SUBROUTINE h5arename_by_name_f -!---------------------------------------------------------------------- -! Name: h5aopen_f ! -! Purpose: Opens an attribute for an object specified by object -! identifier and attribute name +!****s* H5A/h5aopen_f ! -! Inputs: -! obj_id - Identifer for object to which attribute is attached -! attr_name - Name of attribute to open -! Outputs: -! attr_id - attribute identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! aapl_id - Attribute access property list +! NAME +! h5aopen_f ! -! Programmer: M.S. Breitenfeld -! January, 2008 +! PURPOSE +! Opens an attribute for an object specified by object +! identifier and attribute name ! -! Modifications: N/A -! -!---------------------------------------------------------------------- +! INPUTS +! obj_id - Identifer for object to which attribute is attached +! attr_name - Name of attribute to open +! OUTPUTS +! attr_id - attribute identifier +! OPTIONAL PARAMETERS +! aapl_id - Attribute access property list +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 +! +! SOURCE SUBROUTINE h5aopen_f(obj_id, attr_name, attr_id, hdferr, aapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier @@ -2429,12 +809,11 @@ CONTAINS ! Success: 0 ! Failure: -1 INTEGER(HID_T), OPTIONAL, INTENT(IN) :: aapl_id ! Attribute access property list +!***** INTEGER(HID_T) :: aapl_id_default INTEGER(SIZE_T) :: attr_namelen -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5aopen_c(obj_id, attr_name, attr_namelen, aapl_id_default, attr_id) USE H5GLOBAL @@ -2459,43 +838,42 @@ CONTAINS END SUBROUTINE h5aopen_f -!---------------------------------------------------------------------- -! Name: h5adelete_by_idx_f -! -! Purpose: Deletes an attribute from an object according to index order ! -! Inputs: -! loc_id - Location or object identifier; may be dataset or group -! obj_name - Name of object, relative to location, from which attribute is to be removed -! idx_type - Type of index; Possible values are: +!****s* H5A/h5adelete_by_idx_f ! -! H5_INDEX_UNKNOWN_F = -1 - Unknown index type -! H5_INDEX_NAME_F - Index on names -! H5_INDEX_CRT_ORDER_F - Index on creation order -! H5_INDEX_N_F - Number of indices defined +! NAME +! h5adelete_by_idx_f ! -! order - Order in which to iterate over index; Possible values are: +! PURPOSE +! Deletes an attribute from an object according to index order ! -! H5_ITER_UNKNOWN_F - Unknown order -! H5_ITER_INC_F - Increasing order -! H5_ITER_DEC_F - Decreasing order -! H5_ITER_NATIVE_F - No particular order, whatever is fastest -! H5_ITER_N_F - Number of iteration orders +! INPUTS +! loc_id - Location or object identifier; may be dataset or group +! obj_name - Name of object, relative to location, from which attribute is to be removed +! idx_type - Type of index; Possible values are: +! H5_INDEX_UNKNOWN_F = -1 - Unknown index type +! H5_INDEX_NAME_F - Index on names +! H5_INDEX_CRT_ORDER_F - Index on creation order +! H5_INDEX_N_F - Number of indices defined ! -! n - Offset within index -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - Link access property list +! order - Order in which to iterate over index; Possible values are: +! H5_ITER_UNKNOWN_F - Unknown order +! H5_ITER_INC_F - Increasing order +! H5_ITER_DEC_F - Decreasing order +! H5_ITER_NATIVE_F - No particular order, whatever is fastest +! H5_ITER_N_F - Number of iteration orders ! -! Programmer: M.S. Breitenfeld -! January, 2008 +! n - Offset within index +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lapl_id - Link access property list ! -! Modifications: N/A +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 ! -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5adelete_by_idx_f(loc_id, obj_name, idx_type, order, n, hdferr, lapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifer for object to which attribute is attached @@ -2513,17 +891,14 @@ CONTAINS ! H5_ITER_DEC_F - Decreasing order ! H5_ITER_NATIVE_F - No particular order, whatever is fastest ! H5_ITER_N_F - Number of iteration orders -! INTEGER(HSIZE_T), INTENT(IN) :: n ! Offset within index INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list +!***** INTEGER(SIZE_T) :: obj_namelen - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list - INTEGER(HID_T) :: lapl_id_default -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5adelete_by_idx_c(loc_id, obj_name, obj_namelen, idx_type, order, n, lapl_id_default) USE H5GLOBAL @@ -2549,45 +924,43 @@ CONTAINS END SUBROUTINE h5adelete_by_idx_f -!---------------------------------------------------------------------- -! Name: h5adelete_by_name_f ! -! Purpose: Removes an attribute from a specified location +!****s* H5A/h5adelete_by_name_f ! -! Inputs: -! loc_id - Identifer for object to which attribute is attached -! obj_name - Name of attribute to open -! attr_name - Attribute access property list -! lapl_id - Link access property list -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5adelete_by_name_f ! -! Programmer: M.S. Breitenfeld -! January, 2008 +! PURPOSE +! Removes an attribute from a specified location ! -! Modifications: N/A +! INPUTS +! loc_id - Identifer for object to which attribute is attached +! obj_name - Name of attribute to open +! attr_name - Attribute access property list +! lapl_id - Link access property list +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -!---------------------------------------------------------------------- +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 +! +! SOURCE SUBROUTINE h5adelete_by_name_f(loc_id, obj_name, attr_name, hdferr, lapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifer for object to which attribute is attached CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of object, relative to location, ! from which attribute is to be removed CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Name of attribute to delete - INTEGER, INTENT(OUT) :: hdferr ! Error code: - ! 0 on success and -1 on failure - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 on success and -1 on failure + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list +!***** INTEGER(SIZE_T) :: attr_namelen INTEGER(SIZE_T) :: obj_namelen INTEGER(HID_T) :: lapl_id_default -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5adelete_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, lapl_id_default) USE H5GLOBAL @@ -2614,32 +987,32 @@ CONTAINS END SUBROUTINE h5adelete_by_name_f -!---------------------------------------------------------------------- -! Name: h5aopen_by_idx_f ! -! Purpose: Opens an existing attribute that is attached to an object specified by location and name +!****s* H5A/h5aopen_by_idx_f ! -! Inputs: -! loc_id - Location of object to which attribute is attached -! obj_name - Name of object to which attribute is attached, relative to location -! idx_type - Type of index -! order - Index traversal order -! n - Attribute’s position in index -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! aapl_id - Attribute access property list -! lapl_id - Link access property list +! NAME +! h5aopen_by_idx_f ! -! Programmer: M.S. Breitenfeld -! January, 2008 +! PURPOSE +! Opens an existing attribute that is attached to an object specified by location and name ! -! Modifications: N/A +! INPUTS +! loc_id - Location of object to which attribute is attached +! obj_name - Name of object to which attribute is attached, relative to location +! idx_type - Type of index +! order - Index traversal order +! n - Attribute’s position in index +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! aapl_id - Attribute access property list +! lapl_id - Link access property list ! -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 +! +! SOURCE SUBROUTINE h5aopen_by_idx_f(loc_id, obj_name, idx_type, order, n, attr_id, hdferr, aapl_id, lapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier @@ -2655,21 +1028,18 @@ CONTAINS ! H5_ITER_DEC_F - Decreasing order ! H5_ITER_NATIVE_F - No particular order, whatever is fastest - INTEGER(HSIZE_T), INTENT(IN) :: n ! Attribute’s position in index + INTEGER(HSIZE_T), INTENT(IN) :: n ! Attribute’s position in index INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure INTEGER(HID_T), OPTIONAL, INTENT(IN) :: aapl_id ! Attribute access property list INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list - +!***** INTEGER(SIZE_T) :: obj_namelen INTEGER(HID_T) :: aapl_id_default INTEGER(HID_T) :: lapl_id_default -! -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5aopen_by_idx_c(loc_id, obj_name, obj_namelen, idx_type, order, n, & aapl_id_default, lapl_id_default, attr_id) @@ -2702,49 +1072,43 @@ CONTAINS END SUBROUTINE h5aopen_by_idx_f -!---------------------------------------------------------------------- -! Name: h5aget_info_f -! -! Purpose: Retrieves attribute information, by attribute identifier -! -! Inputs: -! attr_id - attribute identifier ! -! Outputs: NOTE: In C it is defined as a structure: H5A_info_t +!****s* H5A/h5aget_info_f ! -! corder_valid - indicates whether the creation order data is valid for this attribute -! corder - is a positive integer containing the creation order of the attribute -! cset - indicates the character set used for the attribute’s name -! data_size - indicates the size, in the number of characters, of the attribute +! NAME +! h5aget_info_f ! -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Retrieves attribute information, by attribute identifier ! -! Programmer: M. S. Breitenfeld -! January, 2008 +! INPUTS +! attr_id - attribute identifier ! -! Modifications: N/A +! OUTPUTS +! NOTE: In C it is defined as a structure: H5A_info_t ! -!---------------------------------------------------------------------- - - SUBROUTINE h5aget_info_f(attr_id, f_corder_valid, corder, cset, data_size, hdferr) +! corder_valid - indicates whether the creation order data is valid for this attribute +! corder - is a positive integer containing the creation order of the attribute +! cset - indicates the character set used for the attribute’s name +! data_size - indicates the size, in the number of characters, of the attribute +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 +! SOURCE + SUBROUTINE h5aget_info_f(attr_id, f_corder_valid, corder, cset, data_size, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the creation order data is valid for this attribute INTEGER, INTENT(OUT) :: corder ! Is a positive integer containing the creation order of the attribute - INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the attribute’s name - INTEGER(HSIZE_T), INTENT(OUT) :: data_size ! Indicates the size, in the number of characters, of the attribute + INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the attribute’s name + INTEGER(HSIZE_T), INTENT(OUT) :: data_size ! Indicates the size, in the number of characters, of the attribute INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure - +!***** INTEGER :: corder_valid -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5aget_info_c(attr_id, corder_valid, corder, cset, data_size) USE H5GLOBAL @@ -2766,43 +1130,43 @@ CONTAINS IF (corder_valid .EQ. 1) f_corder_valid =.TRUE. - END SUBROUTINE h5aget_info_f -!---------------------------------------------------------------------- -! Name: h5aget_info_by_idx_f ! -! Purpose: Retrieves attribute information, by attribute index position +!****s* H5A/h5aget_info_by_idx_f ! -! Inputs: -! loc_id - Location of object to which attribute is attached -! obj_name - Name of object to which attribute is attached, relative to location -! idx_type - Type of index -! order - Index traversal order -! n - Attribute’s position in index +! NAME +! h5aget_info_by_idx_f ! -! Outputs: NOTE: In C it is defined as a structure: H5A_info_t -! corder_valid - indicates whether the creation order data is valid for this attribute -! corder - is a positive integer containing the creation order of the attribute -! cset - indicates the character set used for the attribute’s name -! data_size - indicates the size, in the number of characters, of the attribute -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - Link access property list +! PURPOSE +! Retrieves attribute information, by attribute index position ! -! Programmer: M. S. Breitenfeld -! January, 2008 +! INPUTS +! loc_id - Location of object to which attribute is attached +! obj_name - Name of object to which attribute is attached, relative to location +! idx_type - Type of index +! order - Index traversal order +! n - Attribute’s position in index ! -! Modifications: N/A +! OUTPUTS NOTE: In C it is defined as a structure: H5A_info_t +! corder_valid - indicates whether the creation order data is valid for this attribute +! corder - is a positive integer containing the creation order of the attribute +! cset - indicates the character set used for the attribute’s name +! data_size - indicates the size, in the number of characters, of the attribute +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lapl_id - Link access property list ! -!---------------------------------------------------------------------- +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 +! +! SOURCE SUBROUTINE h5aget_info_by_idx_f(loc_id, obj_name, idx_type, order, n, & f_corder_valid, corder, cset, data_size, hdferr, lapl_id) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier - CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of object to which attribute is attached + INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier + CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of object to which attribute is attached INTEGER, INTENT(IN) :: idx_type ! Type of index; Possible values are: ! H5_INDEX_UNKNOWN_F - Unknown index type ! H5_INDEX_NAME_F - Index on names @@ -2814,22 +1178,21 @@ CONTAINS ! H5_ITER_DEC_F - Decreasing order ! H5_ITER_NATIVE_F - No particular order, whatever is fastest - INTEGER(HSIZE_T), INTENT(IN) :: n ! Attribute’s position in index + INTEGER(HSIZE_T), INTENT(IN) :: n ! Attribute’s position in index LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the creation order data is valid for this attribute INTEGER, INTENT(OUT) :: corder ! Is a positive integer containing the creation order of the attribute - INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the attribute’s name - INTEGER(HSIZE_T), INTENT(OUT) :: data_size ! Indicates the size, in the number of characters, of the attribute + INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the attribute’s name + INTEGER(HSIZE_T), INTENT(OUT) :: data_size ! Indicates the size, in the number of characters, of the attribute INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list +!***** INTEGER :: corder_valid INTEGER(SIZE_T) :: obj_namelen - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list INTEGER(HID_T) :: lapl_id_default -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5aget_info_by_idx_c(loc_id, obj_name, obj_namelen, idx_type, order, n, lapl_id_default, & corder_valid, corder, cset, data_size) @@ -2866,33 +1229,34 @@ CONTAINS END SUBROUTINE h5aget_info_by_idx_f -!---------------------------------------------------------------------- -! Name: h5aget_info_by_name_f ! -! Purpose: Retrieves attribute information, by attribute name +!****s* H5A/h5aget_info_by_name_f +! +! NAME +! h5aget_info_by_name_f ! -! Inputs: -! loc_id - Location of object to which attribute is attached -! obj_name - Name of object to which attribute is attached, relative to location -! attr_name - Attribute name +! PURPOSE +! Retrieves attribute information, by attribute name ! -! Outputs: NOTE: In C it is defined as a structure: H5A_info_t -! corder_valid - indicates whether the creation order data is valid for this attribute -! corder - is a positive integer containing the creation order of the attribute -! cset - indicates the character set used for the attribute’s name -! data_size - indicates the size, in the number of characters, of the attribute -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - Link access property list +! INPUTS +! loc_id - Location of object to which attribute is attached +! obj_name - Name of object to which attribute is attached, relative to location +! attr_name - Attribute name ! -! Programmer: M. S. Breitenfeld -! January, 2008 +! OUTPUTS NOTE: In C it is defined as a structure: H5A_info_t +! corder_valid - indicates whether the creation order data is valid for this attribute +! corder - is a positive integer containing the creation order of the attribute +! cset - indicates the character set used for the attribute’s name +! data_size - indicates the size, in the number of characters, of the attribute +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lapl_id - Link access property list ! -! Modifications: N/A +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 ! -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5aget_info_by_name_f(loc_id, obj_name, attr_name, & f_corder_valid, corder, cset, data_size, hdferr, lapl_id) IMPLICIT NONE @@ -2907,15 +1271,13 @@ CONTAINS INTEGER(HSIZE_T), INTENT(OUT) :: data_size ! Indicates the size, in the number of characters, of the attribute INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list +!***** INTEGER :: corder_valid INTEGER(SIZE_T) :: obj_namelen INTEGER(SIZE_T) :: attr_namelen - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list INTEGER(HID_T) :: lapl_id_default - -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5aget_info_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, lapl_id_default, & corder_valid, corder, cset, data_size) @@ -2952,52 +1314,49 @@ CONTAINS END SUBROUTINE h5aget_info_by_name_f -!---------------------------------------------------------------------- -! Name: H5Acreate_by_name_f ! -! Purpose: Creates an attribute attached to a specified object +!****s* H5A/h5acreate_by_name_f ! -! Inputs: -! loc_id - Location or object identifier; may be dataset or group -! obj_name - Name, relative to loc_id, of object that attribute is to be attached to -! attr_name - Attribute name -! type_id - Attribute datatype identifier -! space_id - Attribute dataspace identifier +! NAME +! h5acreate_by_name_f ! -! Outputs: -! attr - an attribute identifier -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! acpl_id - Attribute creation property list identifier (Currently not used.) -! aapl_id - Attribute access property list identifier (Currently not used.) -! lapl_id - Link access property list +! PURPOSE +! Creates an attribute attached to a specified object ! -! Programmer: M. S. Breitenfeld -! February, 2008 +! INPUTS +! loc_id - Location or object identifier; may be dataset or group +! obj_name - Name, relative to loc_id, of object that attribute is to be attached to +! attr_name - Attribute name +! type_id - Attribute datatype identifier +! space_id - Attribute dataspace identifier ! -! Modifications: N/A +! OUTPUTS +! attr - an attribute identifier +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! acpl_id - Attribute creation property list identifier (Currently not used.) +! aapl_id - Attribute access property list identifier (Currently not used.) +! lapl_id - Link access property list ! -!---------------------------------------------------------------------- +! AUTHOR +! M. Scot Breitenfeld +! February, 2008 +! SOURCE SUBROUTINE h5acreate_by_name_f(loc_id, obj_name, attr_name, type_id, space_id, attr, hdferr, & acpl_id, aapl_id, lapl_id) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier - CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of object to which attribute is attached - CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name - - INTEGER(HID_T), INTENT(IN) :: type_id ! Attribute datatype identifier - INTEGER(HID_T), INTENT(IN) :: space_id ! Attribute dataspace identifier - - INTEGER(HID_T), INTENT(OUT) :: attr ! an attribute identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code: - ! 0 on success and -1 on failure - - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: acpl_id ! Attribute creation property list identifier (Currently not used.) - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: aapl_id ! Attribute access property list identifier (Currently not used.) - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list - + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: obj_name + CHARACTER(LEN=*), INTENT(IN) :: attr_name + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER(HID_T), INTENT(OUT) :: attr + INTEGER, INTENT(OUT) :: hdferr + + INTEGER(HID_T), INTENT(IN), OPTIONAL :: acpl_id + INTEGER(HID_T), INTENT(IN), OPTIONAL :: aapl_id + INTEGER(HID_T), INTENT(IN), OPTIONAL :: lapl_id +!***** INTEGER(SIZE_T) :: obj_namelen INTEGER(SIZE_T) :: attr_namelen @@ -3005,8 +1364,6 @@ CONTAINS INTEGER(HID_T) :: aapl_id_default INTEGER(HID_T) :: lapl_id_default -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5acreate_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, & type_id, space_id, acpl_id_default, aapl_id_default, lapl_id_default, attr) @@ -3045,41 +1402,39 @@ CONTAINS type_id, space_id, acpl_id_default, aapl_id_default, lapl_id_default, attr) END SUBROUTINE h5acreate_by_name_f -!---------------------------------------------------------------------- -! Name: H5Aexists_f ! -! Purpose: Determines whether an attribute with a given name exists on an object +!****s* H5A/H5Aexists_f +! +! NAME +! H5Aexists_f ! -! Inputs: -! obj_id - Object identifier -! attr_name - Attribute name +! PURPOSE +! Determines whether an attribute with a given name exists on an object ! -! Outputs: -! attr_exists - attribute exists status -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! obj_id - Object identifier +! attr_name - Attribute name ! -! Programmer: M. S. Breitenfeld -! February, 2008 +! OUTPUTS +! attr_exists - attribute exists status +! hdferr - Returns 0 if successful and -1 if fails ! -! Modifications: N/A +! AUTHOR +! M. Scot Breitenfeld +! February, 2008 ! -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5aexists_f(obj_id, attr_name, attr_exists, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier + INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name - LOGICAL, INTENT(OUT) :: attr_exists ! .TRUE. if exists, .FALSE. otherwise - INTEGER, INTENT(OUT) :: hdferr ! Error code: - ! 0 on success and -1 on failure + LOGICAL, INTENT(OUT) :: attr_exists ! .TRUE. if exists, .FALSE. otherwise + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 on success and -1 on failure +!***** INTEGER(HID_T) :: attr_exists_c INTEGER(SIZE_T) :: attr_namelen -! -! MS FORTRAN needs explicit interface for C functions called here. -! + INTERFACE INTEGER FUNCTION h5aexists_c(obj_id, attr_name, attr_namelen, attr_exists_c) USE H5GLOBAL @@ -3103,55 +1458,55 @@ CONTAINS END SUBROUTINE h5aexists_f -!---------------------------------------------------------------------- -! Name: H5Aexists_by_name_f ! -! Purpose: Determines whether an attribute with a given name exists on an object +!****s* H5A/H5Aexists_by_name_f +! +! NAME +! H5Aexists_by_name_f ! -! Inputs: -! loc_id - Location identifier -! obj_name - Object name either relative to loc_id, absolute from the file’s root group, or '.' (a dot) -! attr_name - Attribute name +! PURPOSE +! Determines whether an attribute with a given name exists on an object ! -! Outputs: -! attr_exists - attribute exists status -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - Link access property list identifier +! INPUTS +! loc_id - Location identifier +! obj_name - Object name either relative to loc_id, absolute from the file’s root group, or '.' (a dot) +! attr_name - Attribute name ! -! Programmer: M. S. Breitenfeld -! February, 2008 +! OUTPUTS +! attr_exists - attribute exists status +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lapl_id - Link access property list identifier ! -! Modifications: N/A +! AUTHOR +! M. Scot Breitenfeld +! February, 2008 ! -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5aexists_by_name_f(loc_id, obj_name, attr_name, attr_exists, hdferr, lapl_id) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier + INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Object name either relative to loc_id, ! absolute from the file’s root group, or '.' CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name LOGICAL, INTENT(OUT) :: attr_exists ! .TRUE. if exists, .FALSE. otherwise - INTEGER, INTENT(OUT) :: hdferr ! Error code: - ! 0 on success and -1 on failure + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 on success and -1 on failure INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier +!***** INTEGER :: attr_exists_c INTEGER(SIZE_T) :: obj_namelen INTEGER(SIZE_T) :: attr_namelen INTEGER(HID_T) :: lapl_id_default -! -! MS FORTRAN needs explicit interface for C functions called here. -! + INTERFACE INTEGER FUNCTION h5aexists_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, lapl_id_default, attr_exists_c) USE H5GLOBAL !DEC$IF DEFINED(HDF5F90_WINDOWS) !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AEXISTS_BY_NAME_C'::h5aexists_by_name_c !DEC$ENDIF - !DEC$ATTRIBUTES reference :: obj_name, attr_name + !DEC$ATTRIBUTES reference :: obj_name, attr_name INTEGER(HID_T), INTENT(IN) :: loc_id CHARACTER(LEN=*), INTENT(IN) :: obj_name INTEGER(SIZE_T), INTENT(IN) :: obj_namelen @@ -3174,31 +1529,31 @@ CONTAINS IF(attr_exists_c.GT.0) attr_exists = .TRUE. END SUBROUTINE h5aexists_by_name_f -!---------------------------------------------------------------------- -! Name: H5Aopen_by_name_f ! -! Purpose: Opens an attribute for an object by object name and attribute name. +!****s* H5A/H5Aopen_by_name_f ! -! Inputs: -! loc_id - Location from which to find object to which attribute is attached -! obj_name - Object name either relative to loc_id, absolute from the file’s root group, or '.' (a dot) -! attr_name - Attribute name +! NAME +! H5Aopen_by_name_f ! -! Outputs: -! attr_id - attribute identifier -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! aapl_id - Attribute access property list (Currently unused; should be passed in as H5P_DEFAULT.) -! lapl_id - Link access property list identifier +! PURPOSE +! Opens an attribute for an object by object name and attribute name. ! -! Programmer: M. S. Breitenfeld -! February, 2008 +! INPUTS +! loc_id - Location from which to find object to which attribute is attached +! obj_name - Object name either relative to loc_id, absolute from the file’s root group, or '.' (a dot) +! attr_name - Attribute name ! -! Modifications: N/A +! OUTPUTS +! attr_id - attribute identifier +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! aapl_id - Attribute access property list (Currently unused; should be passed in as H5P_DEFAULT.) +! lapl_id - Link access property list identifier ! -!---------------------------------------------------------------------- +! AUTHOR +! M. Scot Breitenfeld +! February, 2008 +! SOURCE SUBROUTINE h5aopen_by_name_f(loc_id, obj_name, attr_name, attr_id, hdferr, aapl_id, lapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier @@ -3211,15 +1566,13 @@ CONTAINS INTEGER(HID_T), OPTIONAL, INTENT(IN) :: aapl_id ! Attribute access property list ! (Currently unused; should be passed in as H5P_DEFAULT_F) INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier - +!***** INTEGER(HID_T) :: aapl_id_default INTEGER(HID_T) :: lapl_id_default INTEGER(SIZE_T) :: obj_namelen INTEGER(SIZE_T) :: attr_namelen -! -! MS FORTRAN needs explicit interface for C functions called here. -! + INTERFACE INTEGER FUNCTION h5aopen_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, & aapl_id_default, lapl_id_default, attr_id) @@ -3252,28 +1605,33 @@ CONTAINS END SUBROUTINE h5aopen_by_name_f -!---------------------------------------------------------------------- -! Name: h5arename_f ! -! Purpose: Renames an attribute +!****s* H5A/h5arename_f ! -! Inputs: -! loc_id - Location or object identifier; may be dataset or group -! old_attr_name - Prior attribute name -! new_attr_name - New attribute name +! NAME +! h5arename_f ! -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 +! PURPOSE +! Renames an attribute ! -! Programmer: M.S. Breitenfeld -! January, 2008 +! INPUTS +! loc_id - Location or object identifier; may be dataset or group +! old_attr_name - Prior attribute name +! new_attr_name - New attribute name +! +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 +! +! HISTORY +! N/A ! -! Modifications: N/A ! -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5arename_f(loc_id, old_attr_name, new_attr_name, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier @@ -3281,11 +1639,10 @@ CONTAINS CHARACTER(LEN=*), INTENT(IN) :: new_attr_name ! New attribute name INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure +!***** INTEGER(SIZE_T) :: old_attr_namelen INTEGER(SIZE_T) :: new_attr_namelen -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5arename_c(loc_id, & old_attr_name, old_attr_namelen, new_attr_name, new_attr_namelen) diff --git a/fortran/src/H5Aff_F03.f90 b/fortran/src/H5Aff_F03.f90 new file mode 100644 index 0000000..8565661 --- /dev/null +++ b/fortran/src/H5Aff_F03.f90 @@ -0,0 +1,1418 @@ +!****h* ROBODoc/H5A (F03) +! NAME +! H5A_PROVISIONAL +! +! FILE +! src/fortran/src/H5Aff_F03.f90 +! +! PURPOSE +! This file contains Fortran 90 and Fortran 2003 interfaces for H5A functions. +! It contains the same functions as H5Aff_F90.f90 but includes the +! Fortran 2003 functions and the interface listings. This file will be compiled +! instead of H5Aff_F90.f90 if Fortran 2003 functions are enabled. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! +! (A) C_LOC and character strings according to the Fortran 2003 standard: +! +! 15.1.2.5 C_LOC(X) +! +! Argument. X shall either +! +! (1) have interoperable type and type parameters and be +! (a) a variable that has the TARGET attribute and is interoperable, +! (b) an allocated allocatable variable that has the TARGET attribute +! and is not an array of zero size, or +! (c) an associated scalar pointer, or +! (2) be a nonpolymorphic scalar, have no length type parameters, and be +! (a) a nonallocatable, nonpointer variable that has the TARGET attribute, +! (b) an allocated allocatable variable that has the TARGET attribute, or +! (c) an associated pointer. +! +! - When X is a character, for interoperability the standard is: +! +! 15.2.1 Interoperability of intrinsic types +! +! ...if the type is character, interoperability also requires that the length type parameter +! be omitted or be specified by an initialization expression whose value is one. +! +! THEREFORE compilers that have not extended the standard require +! +! CHARACTER(LEN=1), TARGET :: chr +! or +! CHARACTER, TARGET :: chr +! +! (B) +! *** IMPORTANT *** +! If you add a new H5A function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** + +MODULE H5A_PROVISIONAL + + USE H5GLOBAL +! +! On Windows there are no big (integer*8) integers, so overloading +! for bug #670 does not work. I have to use DEC compilation directives to make +! Windows DEC Visual Fortran and OSF compilers happy and do right things. +! 05/01/02 EP +! + INTERFACE h5awrite_f + MODULE PROCEDURE h5awrite_integer_scalar + MODULE PROCEDURE h5awrite_integer_1 + MODULE PROCEDURE h5awrite_integer_2 + MODULE PROCEDURE h5awrite_integer_3 + MODULE PROCEDURE h5awrite_integer_4 + MODULE PROCEDURE h5awrite_integer_5 + MODULE PROCEDURE h5awrite_integer_6 + MODULE PROCEDURE h5awrite_integer_7 + MODULE PROCEDURE h5awrite_char_scalar + MODULE PROCEDURE h5awrite_char_1 + MODULE PROCEDURE h5awrite_char_2 + MODULE PROCEDURE h5awrite_char_3 + MODULE PROCEDURE h5awrite_char_4 + MODULE PROCEDURE h5awrite_char_5 + MODULE PROCEDURE h5awrite_char_6 + MODULE PROCEDURE h5awrite_char_7 + MODULE PROCEDURE h5awrite_real_scalar + MODULE PROCEDURE h5awrite_real_1 + MODULE PROCEDURE h5awrite_real_2 + MODULE PROCEDURE h5awrite_real_3 + MODULE PROCEDURE h5awrite_real_4 + MODULE PROCEDURE h5awrite_real_5 + MODULE PROCEDURE h5awrite_real_6 + MODULE PROCEDURE h5awrite_real_7 + ! This is the preferred way to call h5awrite + ! by passing an address + MODULE PROCEDURE h5awrite_ptr + + END INTERFACE + + INTERFACE h5aread_f + + MODULE PROCEDURE h5aread_integer_scalar + MODULE PROCEDURE h5aread_integer_1 + MODULE PROCEDURE h5aread_integer_2 + MODULE PROCEDURE h5aread_integer_3 + MODULE PROCEDURE h5aread_integer_4 + MODULE PROCEDURE h5aread_integer_5 + MODULE PROCEDURE h5aread_integer_6 + MODULE PROCEDURE h5aread_integer_7 + MODULE PROCEDURE h5aread_char_scalar + MODULE PROCEDURE h5aread_char_1 + MODULE PROCEDURE h5aread_char_2 + MODULE PROCEDURE h5aread_char_3 + MODULE PROCEDURE h5aread_char_4 + MODULE PROCEDURE h5aread_char_5 + MODULE PROCEDURE h5aread_char_6 + MODULE PROCEDURE h5aread_char_7 + MODULE PROCEDURE h5aread_real_scalar + MODULE PROCEDURE h5aread_real_1 + MODULE PROCEDURE h5aread_real_2 + MODULE PROCEDURE h5aread_real_3 + MODULE PROCEDURE h5aread_real_4 + MODULE PROCEDURE h5aread_real_5 + MODULE PROCEDURE h5aread_real_6 + MODULE PROCEDURE h5aread_real_7 + + ! This is the preferred way to call h5aread + ! by passing an address + MODULE PROCEDURE h5aread_ptr + + END INTERFACE + +! Interface for the function used to pass the C pointer of the buffer +! to the C H5Awrite routine + + INTERFACE + INTEGER FUNCTION h5awrite_f_c(attr_id, mem_type_id, buf) + USE H5GLOBAL + USE, INTRINSIC :: ISO_C_BINDING + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_F_C'::h5awrite_f_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + TYPE(C_PTR), VALUE :: buf + END FUNCTION h5awrite_f_c + END INTERFACE + +! Interface for the function used to pass the C pointer of the buffer +! to the C H5Aread routine + + INTERFACE + INTEGER FUNCTION h5aread_f_c(attr_id, mem_type_id, buf) + USE H5GLOBAL + USE, INTRINSIC :: ISO_C_BINDING + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_F_C'::h5aread_f_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + TYPE(C_PTR), VALUE :: buf + END FUNCTION h5aread_f_c + END INTERFACE + +CONTAINS + + SUBROUTINE h5awrite_integer_scalar(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_integer_scalar + + SUBROUTINE h5awrite_integer_1(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN) , & + DIMENSION(dims(1)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_integer_1 + + + SUBROUTINE h5awrite_integer_2(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN) , & + DIMENSION(dims(1),dims(2)), TARGET :: buf + ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_integer_2 + + SUBROUTINE h5awrite_integer_3(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_integer_3 + + + SUBROUTINE h5awrite_integer_4(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims! Array to story buf dimension sizes + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_integer_4 + + + SUBROUTINE h5awrite_integer_5(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_integer_5 + + + SUBROUTINE h5awrite_integer_6(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_integer_6 + + + SUBROUTINE h5awrite_integer_7(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), & + TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_integer_7 + + + SUBROUTINE h5awrite_real_scalar(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_real_scalar + + SUBROUTINE h5awrite_real_1(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_real_1 + + + SUBROUTINE h5awrite_real_2(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2)), TARGET :: buf + ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_real_2 + + + SUBROUTINE h5awrite_real_3(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf + ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_real_3 + + + SUBROUTINE h5awrite_real_4(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf + ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_real_4 + + + SUBROUTINE h5awrite_real_5(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf + ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_real_5 + + + SUBROUTINE h5awrite_real_6(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf + ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_real_6 + + + SUBROUTINE h5awrite_real_7(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_real_7 + + + SUBROUTINE h5awrite_double_scalar(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_double_scalar + + SUBROUTINE h5awrite_double_1(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_double_1 + + + SUBROUTINE h5awrite_double_2(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_double_2 + + + SUBROUTINE h5awrite_double_3(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_double_3 + + + SUBROUTINE h5awrite_double_4(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_double_4 + + + SUBROUTINE h5awrite_double_5(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_double_5 + + + SUBROUTINE h5awrite_double_6(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_double_6 + + + SUBROUTINE h5awrite_double_7(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5awrite_double_7 + + SUBROUTINE h5awrite_char_scalar(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + CALL h5awrite_char_scalar_fix(attr_id, memtype_id, buf, LEN(buf), dims, hdferr) + + END SUBROUTINE h5awrite_char_scalar + + SUBROUTINE h5awrite_char_scalar_fix(attr_id, memtype_id, buf, buf_len, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN) :: buf_len + CHARACTER(LEN=buf_len), INTENT(IN), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1:1)) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_char_scalar_fix + + + + SUBROUTINE h5awrite_char_1(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), DIMENSION(dims(1)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1)(1:1)) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_char_1 + + SUBROUTINE h5awrite_char_2(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1,1)(1:1)) + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_char_2 + + SUBROUTINE h5awrite_char_3(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1,1,1)(1:1)) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_char_3 + + SUBROUTINE h5awrite_char_4(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1,1,1,1)(1:1)) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_char_4 + + SUBROUTINE h5awrite_char_5(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1,1,1,1,1)(1:1)) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_char_5 + + + SUBROUTINE h5awrite_char_6(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1,1,1,1,1,1)(1:1)) + + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_char_6 + + SUBROUTINE h5awrite_char_7(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1,1,1,1,1,1,1)(1:1)) + hdferr = h5awrite_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5awrite_char_7 + +!****s* H5A (F03)/h5aread_f +! +! NAME +! h5aread_f +! +! PURPOSE +! Reads an attribute. +! +! INPUTS +! attr_id - attribute identifier +! memtype_id - attribute memory type identifier +! dims - 1D array of size 7, stores sizes of the +! - buf array dimensions. +! OUTPUTS +! buf - buffer to read attribute data in +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +! dims parameter was added to make code portable; +! Aprile 4, 2001 +! +! Changed buf intent to INOUT to be consistant +! with how the C functions handles it. The pg +! compiler will return 0 if a buf value is not set. +! February, 2008 +! +! NOTES +! 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, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_integer_scalar + + SUBROUTINE h5aread_integer_1(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT), DIMENSION(dims(1)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_integer_1 + + + SUBROUTINE h5aread_integer_2(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT),DIMENSION(dims(1),dims(2)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_integer_2 + + + SUBROUTINE h5aread_integer_3(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_integer_3 + + + SUBROUTINE h5aread_integer_4(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_integer_4 + + + SUBROUTINE h5aread_integer_5(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_integer_5 + + + SUBROUTINE h5aread_integer_6(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_integer_6 + + + SUBROUTINE h5aread_integer_7(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_integer_7 + + + SUBROUTINE h5aread_real_scalar(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_real_scalar + + SUBROUTINE h5aread_real_1(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_real_1 + + + SUBROUTINE h5aread_real_2(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_real_2 + + + SUBROUTINE h5aread_real_3(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf + ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_real_3 + + + SUBROUTINE h5aread_real_4(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_real_4 + + + SUBROUTINE h5aread_real_5(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_real_5 + + + SUBROUTINE h5aread_real_6(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_real_6 + + + SUBROUTINE h5aread_real_7(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_real_7 + + + SUBROUTINE h5aread_double_scalar(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(INOUT), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_double_scalar + + SUBROUTINE h5aread_double_1(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_double_1 + + + SUBROUTINE h5aread_double_2(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_double_2 + + + SUBROUTINE h5aread_double_3(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_double_3 + + + SUBROUTINE h5aread_double_4(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_double_4 + + + SUBROUTINE h5aread_double_5(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_double_5 + + + SUBROUTINE h5aread_double_6(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_double_6 + + + SUBROUTINE h5aread_double_7(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + END SUBROUTINE h5aread_double_7 + + + SUBROUTINE h5aread_char_scalar(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + CALL h5aread_char_scalar_fix(attr_id, memtype_id, buf, LEN(buf), dims, hdferr) + + END SUBROUTINE h5aread_char_scalar + + SUBROUTINE h5aread_char_scalar_fix(attr_id, memtype_id, buf, buf_len, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN) :: buf_len + CHARACTER(LEN=buf_len), INTENT(INOUT), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1:1)) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5aread_char_scalar_fix + + SUBROUTINE h5aread_char_1(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1)(1:1)) + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5aread_char_1 + + + SUBROUTINE h5aread_char_2(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1,1)(1:1)) + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5aread_char_2 + + + SUBROUTINE h5aread_char_3(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1,1,1)(1:1)) + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5aread_char_3 + + SUBROUTINE h5aread_char_4(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1,1,1,1)(1:1)) + + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5aread_char_4 + + SUBROUTINE h5aread_char_5(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1,1,1,1,1)(1:1)) + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5aread_char_5 + + + SUBROUTINE h5aread_char_6(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1,1,1,1,1,1)(1:1)) + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5aread_char_6 + + + SUBROUTINE h5aread_char_7(attr_id, memtype_id, buf, dims, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(buf(1,1,1,1,1,1,1)(1:1)) + hdferr = h5aread_f_c(attr_id, memtype_id, f_ptr) + + END SUBROUTINE h5aread_char_7 + + SUBROUTINE h5awrite_ptr(attr_id, mem_type_id, buf, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + TYPE(C_PTR), INTENT(IN), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + + hdferr = h5awrite_f_c(attr_id, mem_type_id, buf) + + END SUBROUTINE h5awrite_ptr + + SUBROUTINE h5aread_ptr(attr_id, mem_type_id, buf, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + TYPE(C_PTR), INTENT(IN), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + + hdferr = h5aread_f_c(attr_id, mem_type_id, buf) + + END SUBROUTINE h5aread_ptr + +END MODULE H5A_PROVISIONAL + + diff --git a/fortran/src/H5Aff_F90.f90 b/fortran/src/H5Aff_F90.f90 new file mode 100644 index 0000000..7e14f7a --- /dev/null +++ b/fortran/src/H5Aff_F90.f90 @@ -0,0 +1,1618 @@ +!****h* ROBODoc/H5A (F90) +! +! NAME +! H5A_PROVISIONAL +! +! FILE +! fortran/src/H5Aff_F90.f90 +! +! PURPOSE +! +! This file contains Fortran 90 interfaces for H5A functions. It contains +! the same functions as H5Aff_F03.f90 but excludes the Fortran 2003 functions +! and the interface listings. This file will be compiled instead of H5Aff_F03.f90 +! if Fortran 2003 functions are not enabled. +! +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! *** IMPORTANT *** +! If you add a new H5A function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** + +MODULE H5A_PROVISIONAL + + USE H5GLOBAL + ! + !On Windows there are no big (integer*8) integers, so overloading + !for bug #670 does not work. I have to use DEC compilation directives to make + !Windows DEC Visual Fortran and OSF compilers happy and do right things. + ! 05/01/02 EP + ! + INTERFACE h5awrite_f + + MODULE PROCEDURE h5awrite_integer_scalar + MODULE PROCEDURE h5awrite_integer_1 + MODULE PROCEDURE h5awrite_integer_2 + MODULE PROCEDURE h5awrite_integer_3 + MODULE PROCEDURE h5awrite_integer_4 + MODULE PROCEDURE h5awrite_integer_5 + MODULE PROCEDURE h5awrite_integer_6 + MODULE PROCEDURE h5awrite_integer_7 + MODULE PROCEDURE h5awrite_char_scalar + MODULE PROCEDURE h5awrite_char_1 + MODULE PROCEDURE h5awrite_char_2 + MODULE PROCEDURE h5awrite_char_3 + MODULE PROCEDURE h5awrite_char_4 + MODULE PROCEDURE h5awrite_char_5 + MODULE PROCEDURE h5awrite_char_6 + MODULE PROCEDURE h5awrite_char_7 + MODULE PROCEDURE h5awrite_real_scalar + MODULE PROCEDURE h5awrite_real_1 + MODULE PROCEDURE h5awrite_real_2 + MODULE PROCEDURE h5awrite_real_3 + MODULE PROCEDURE h5awrite_real_4 + MODULE PROCEDURE h5awrite_real_5 + MODULE PROCEDURE h5awrite_real_6 + MODULE PROCEDURE h5awrite_real_7 + + END INTERFACE + + INTERFACE h5aread_f + + MODULE PROCEDURE h5aread_integer_scalar + MODULE PROCEDURE h5aread_integer_1 + MODULE PROCEDURE h5aread_integer_2 + MODULE PROCEDURE h5aread_integer_3 + MODULE PROCEDURE h5aread_integer_4 + MODULE PROCEDURE h5aread_integer_5 + MODULE PROCEDURE h5aread_integer_6 + MODULE PROCEDURE h5aread_integer_7 + MODULE PROCEDURE h5aread_char_scalar + MODULE PROCEDURE h5aread_char_1 + MODULE PROCEDURE h5aread_char_2 + MODULE PROCEDURE h5aread_char_3 + MODULE PROCEDURE h5aread_char_4 + MODULE PROCEDURE h5aread_char_5 + MODULE PROCEDURE h5aread_char_6 + MODULE PROCEDURE h5aread_char_7 + MODULE PROCEDURE h5aread_real_scalar + MODULE PROCEDURE h5aread_real_1 + MODULE PROCEDURE h5aread_real_2 + MODULE PROCEDURE h5aread_real_3 + MODULE PROCEDURE h5aread_real_4 + MODULE PROCEDURE h5aread_real_5 + MODULE PROCEDURE h5aread_real_6 + MODULE PROCEDURE h5aread_real_7 + END INTERFACE + +CONTAINS + + SUBROUTINE h5awrite_integer_scalar(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTERFACE + INTEGER FUNCTION h5awrite_integer_s_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_S_C'::h5awrite_integer_s_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN)::buf + END FUNCTION h5awrite_integer_s_c + END INTERFACE + + hdferr = h5awrite_integer_s_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_integer_scalar + + SUBROUTINE h5awrite_integer_1(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN) , & + DIMENSION(dims(1)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! INTEGER, EXTERNAL :: h5awrite_integer_1_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_integer_1_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_1_C'::h5awrite_integer_1_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), DIMENSION(dims(1)) :: buf + END FUNCTION h5awrite_integer_1_c + END INTERFACE + + hdferr = h5awrite_integer_1_c(attr_id, memtype_id, buf, dims) + + END SUBROUTINE h5awrite_integer_1 + + + SUBROUTINE h5awrite_integer_2(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN) , & + DIMENSION(dims(1),dims(2)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_integer_2_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_integer_2_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_2_C'::h5awrite_integer_2_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5awrite_integer_2_c + END INTERFACE + + hdferr = h5awrite_integer_2_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_integer_2 + + + SUBROUTINE h5awrite_integer_3(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_integer_3_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_integer_3_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_3_C'::h5awrite_integer_3_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5awrite_integer_3_c + END INTERFACE + + hdferr = h5awrite_integer_3_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_integer_3 + + + SUBROUTINE h5awrite_integer_4(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_integer_4_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_integer_4_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_4_C'::h5awrite_integer_4_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5awrite_integer_4_c + END INTERFACE + + hdferr = h5awrite_integer_4_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_integer_4 + + + SUBROUTINE h5awrite_integer_5(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_integer_5_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_integer_5_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_5_C'::h5awrite_integer_5_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5awrite_integer_5_c + END INTERFACE + + hdferr = h5awrite_integer_5_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_integer_5 + + + SUBROUTINE h5awrite_integer_6(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_integer_6_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_integer_6_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_6_C'::h5awrite_integer_6_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5awrite_integer_6_c + END INTERFACE + + hdferr = h5awrite_integer_6_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_integer_6 + + + SUBROUTINE h5awrite_integer_7(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_integer_7_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_integer_7_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_7_C'::h5awrite_integer_7_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5awrite_integer_7_c + END INTERFACE + + hdferr = h5awrite_integer_7_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_integer_7 + + + SUBROUTINE h5awrite_real_scalar(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_real_s_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_real_s_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_S_C'::h5awrite_real_s_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN)::buf + END FUNCTION h5awrite_real_s_c + END INTERFACE + + hdferr = h5awrite_real_s_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_real_scalar + + SUBROUTINE h5awrite_real_1(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_real_1_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_real_1_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_1_C'::h5awrite_real_1_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5awrite_real_1_c + END INTERFACE + + hdferr = h5awrite_real_1_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_real_1 + + + SUBROUTINE h5awrite_real_2(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_real_2_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_real_2_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_2_C'::h5awrite_real_2_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5awrite_real_2_c + END INTERFACE + + hdferr = h5awrite_real_2_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_real_2 + + + SUBROUTINE h5awrite_real_3(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_real_3_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_real_3_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_3_C'::h5awrite_real_3_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5awrite_real_3_c + END INTERFACE + + hdferr = h5awrite_real_3_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_real_3 + + + SUBROUTINE h5awrite_real_4(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_real_4_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_real_4_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_4_C'::h5awrite_real_4_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5awrite_real_4_c + END INTERFACE + + hdferr = h5awrite_real_4_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_real_4 + + + SUBROUTINE h5awrite_real_5(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_real_5_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_real_5_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_5_C'::h5awrite_real_5_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5awrite_real_5_c + END INTERFACE + + hdferr = h5awrite_real_5_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_real_5 + + + SUBROUTINE h5awrite_real_6(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_real_6_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_real_6_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_6_C'::h5awrite_real_6_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5awrite_real_6_c + END INTERFACE + + hdferr = h5awrite_real_6_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_real_6 + + + SUBROUTINE h5awrite_real_7(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awrite_real_7_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awrite_real_7_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_7_C'::h5awrite_real_7_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5awrite_real_7_c + END INTERFACE + + hdferr = h5awrite_real_7_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_real_7 + + SUBROUTINE h5awrite_char_scalar(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*),INTENT(IN) :: buf + ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! INTEGER, EXTERNAL :: h5awritec_s_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awritec_s_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_S_C'::h5awritec_s_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + !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_s_c + END INTERFACE + + hdferr = h5awritec_s_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_char_scalar + + SUBROUTINE h5awrite_char_1(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! INTEGER, EXTERNAL :: h5awritec_1_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awritec_1_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_1_C'::h5awritec_1_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), DIMENSION(dims(1))::buf + END FUNCTION h5awritec_1_c + END INTERFACE + + hdferr = h5awritec_1_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_char_1 + + + SUBROUTINE h5awrite_char_2(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5awritec_2_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awritec_2_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_2_C'::h5awritec_2_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5awritec_2_c + END INTERFACE + + hdferr = h5awritec_2_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_char_2 + + + SUBROUTINE h5awrite_char_3(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! INTEGER, EXTERNAL :: h5awritec_3_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awritec_3_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_3_C'::h5awritec_3_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5awritec_3_c + END INTERFACE + + hdferr = h5awritec_3_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_char_3 + + + SUBROUTINE h5awrite_char_4(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! INTEGER, EXTERNAL :: h5awritec_4_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awritec_4_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_4_C'::h5awritec_4_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5awritec_4_c + END INTERFACE + + hdferr = h5awritec_4_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_char_4 + + + SUBROUTINE h5awrite_char_5(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! INTEGER, EXTERNAL :: h5awritec_5_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awritec_5_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_5_C'::h5awritec_5_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5awritec_5_c + END INTERFACE + + hdferr = h5awritec_5_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_char_5 + + + SUBROUTINE h5awrite_char_6(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! INTEGER, EXTERNAL :: h5awritec_6_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awritec_6_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_6_C'::h5awritec_6_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5awritec_6_c + END INTERFACE + + hdferr = h5awritec_6_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_char_6 + + + SUBROUTINE h5awrite_char_7(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! INTEGER, EXTERNAL :: h5awritec_7_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5awritec_7_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AWRITEC_7_C'::h5awritec_7_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5awritec_7_c + END INTERFACE + + hdferr = h5awritec_7_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5awrite_char_7 + +! +! NAME +! h5aread_f +! +! PURPOSE +! Reads an attribute. +! +! INPUTS +! attr_id - attribute identifier +! memtype_id - attribute memory type identifier +! dims - 1D array of size 7, stores sizes of the +! - buf array dimensions. +! OUTPUTS +! buf - buffer to read attribute data in +! hdferr: - error code +! Success: 0 +! Failure: -1 +! OPTIONAL PARAMETERS +! NONE +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! +! Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +! dims parameter was added to make code portable; +! April 4, 2001 +! +! Changed buf intent to INOUT to be consistant +! with how the C functions handles it. The pg +! compiler will return 0 if a buf value is not set. +! February, 2008 +! +! NOTES +! 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, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_integer_s_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_integer_s_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_S_C'::h5aread_integer_s_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(INOUT)::buf + END FUNCTION h5aread_integer_s_c + END INTERFACE + hdferr = h5aread_integer_s_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_integer_scalar + + SUBROUTINE h5aread_integer_1(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT), DIMENSION(dims(1)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_integer_1_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_integer_1_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_1_C'::h5aread_integer_1_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(INOUT), DIMENSION(dims(1)) :: buf + END FUNCTION h5aread_integer_1_c + END INTERFACE + + hdferr = h5aread_integer_1_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_integer_1 + + + SUBROUTINE h5aread_integer_2(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT),DIMENSION(dims(1),dims(2)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_integer_2_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_integer_2_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_2_C'::h5aread_integer_2_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(INOUT), DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5aread_integer_2_c + END INTERFACE + + hdferr = h5aread_integer_2_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_integer_2 + + + SUBROUTINE h5aread_integer_3(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_integer_3_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_integer_3_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_3_C'::h5aread_integer_3_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5aread_integer_3_c + END INTERFACE + + hdferr = h5aread_integer_3_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_integer_3 + + + SUBROUTINE h5aread_integer_4(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data + ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_integer_4_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_integer_4_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_4_C'::h5aread_integer_4_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5aread_integer_4_c + END INTERFACE + + hdferr = h5aread_integer_4_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_integer_4 + + + SUBROUTINE h5aread_integer_5(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_integer_5_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_integer_5_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_5_C'::h5aread_integer_5_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5aread_integer_5_c + END INTERFACE + + hdferr = h5aread_integer_5_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_integer_5 + + + SUBROUTINE h5aread_integer_6(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_integer_6_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_integer_6_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_6_C'::h5aread_integer_6_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5aread_integer_6_c + END INTERFACE + + hdferr = h5aread_integer_6_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_integer_6 + + + SUBROUTINE h5aread_integer_7(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_integer_7_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_integer_7_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_7_C'::h5aread_integer_7_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5aread_integer_7_c + END INTERFACE + + hdferr = h5aread_integer_7_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_integer_7 + + + SUBROUTINE h5aread_real_scalar(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_real_s_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_real_s_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_S_C'::h5aread_real_s_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(INOUT)::buf + END FUNCTION h5aread_real_s_c + END INTERFACE + + hdferr = h5aread_real_s_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_real_scalar + + SUBROUTINE h5aread_real_1(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_real_1_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_real_1_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_1_C'::h5aread_real_1_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(INOUT), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5aread_real_1_c + END INTERFACE + + hdferr = h5aread_real_1_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_real_1 + + + SUBROUTINE h5aread_real_2(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_real_2_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_real_2_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_2_C'::h5aread_real_2_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5aread_real_2_c + END INTERFACE + + hdferr = h5aread_real_2_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_real_2 + + + SUBROUTINE h5aread_real_3(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_real_3_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_real_3_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_3_C'::h5aread_real_3_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5aread_real_3_c + END INTERFACE + + hdferr = h5aread_real_3_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_real_3 + + + SUBROUTINE h5aread_real_4(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_real_4_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_real_4_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_4_C'::h5aread_real_4_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5aread_real_4_c + END INTERFACE + + hdferr = h5aread_real_4_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_real_4 + + + SUBROUTINE h5aread_real_5(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_real_5_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_real_5_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_5_C'::h5aread_real_5_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5aread_real_5_c + END INTERFACE + + hdferr = h5aread_real_5_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_real_5 + + + SUBROUTINE h5aread_real_6(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_real_6_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_real_6_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_6_C'::h5aread_real_6_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5aread_real_6_c + END INTERFACE + + hdferr = h5aread_real_6_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_real_6 + + + SUBROUTINE h5aread_real_7(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5aread_real_7_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5aread_real_7_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREAD_REAL_7_C'::h5aread_real_7_c + !DEC$ENDIF + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5aread_real_7_c + END INTERFACE + + hdferr = h5aread_real_7_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_real_7 + + SUBROUTINE h5aread_char_scalar(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT) :: buf + ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5areadc_s_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5areadc_s_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_S_C'::h5areadc_s_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(INOUT) :: buf + END FUNCTION h5areadc_s_c + END INTERFACE + + hdferr = h5areadc_s_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_char_scalar + + SUBROUTINE h5aread_char_1(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5areadc_1_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5areadc_1_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_1_C'::h5areadc_1_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5areadc_1_c + END INTERFACE + + hdferr = h5areadc_1_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_char_1 + + + SUBROUTINE h5aread_char_2(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5areadc_2_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5areadc_2_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_2_C'::h5areadc_2_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5areadc_2_c + END INTERFACE + + hdferr = h5areadc_2_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_char_2 + + + SUBROUTINE h5aread_char_3(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5areadc_3_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5areadc_3_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_3_C'::h5areadc_3_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5areadc_3_c + END INTERFACE + + hdferr = h5areadc_3_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_char_3 + + + SUBROUTINE h5aread_char_4(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5areadc_4_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5areadc_4_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_4_C'::h5areadc_4_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5areadc_4_c + END INTERFACE + + hdferr = h5areadc_4_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_char_4 + + + SUBROUTINE h5aread_char_5(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5areadc_5_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5areadc_5_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_5_C'::h5areadc_5_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5areadc_5_c + END INTERFACE + + hdferr = h5areadc_5_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_char_5 + + + SUBROUTINE h5aread_char_6(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5areadc_6_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5areadc_6_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_6_C'::h5areadc_6_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5areadc_6_c + END INTERFACE + + hdferr = h5areadc_6_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_char_6 + + + SUBROUTINE h5aread_char_7(attr_id, memtype_id, buf, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier + INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype + ! identifier (in memory) + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data + INTEGER, INTENT(OUT) :: hdferr ! Error code + + ! INTEGER, EXTERNAL :: h5areadc_7_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5areadc_7_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5AREADC_7_C'::h5areadc_7_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5areadc_7_c + END INTERFACE + + hdferr = h5areadc_7_c(attr_id, memtype_id, buf, dims) + END SUBROUTINE h5aread_char_7 + +END MODULE H5A_PROVISIONAL + + diff --git a/fortran/src/H5Df.c b/fortran/src/H5Df.c index 573315a..e1aa98e 100644 --- a/fortran/src/H5Df.c +++ b/fortran/src/H5Df.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5Df/H5Df + * PURPOSE + * This file contains C stubs for H5D Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,32 +16,42 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for H5D Fortran APIs */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" -/*---------------------------------------------------------------------------- - * Name: h5dcreate_c - * Purpose: Call H5Dcreate2 to create a dataset - * Inputs: loc_id - file or group identifier +/****if* H5Df/h5dcreate_c + * NAME + * h5dcreate_c + * PURPOSE + * Call H5Dcreate2 to create a dataset + * INPUTS + * loc_id - file or group identifier * name - name of the dataset * namelen - name length * type_id - datatype identifier * space_id - dataspace identifier * crt_pr - identifier of creation property list - * Outputs: dset_id - dataset identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * dset_id - dataset identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 4, 1999 - * Modifications: + * HISTORY + * * - Added optional parameters introduced in version 1.8 * February, 2008 - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5dcreate_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *space_id, hid_t_f *lcpl_id, hid_t_f *dcpl_id, hid_t_f *dapl_id, hid_t_f *dset_id) +/******/ { char *c_name = NULL; hid_t c_dset_id; @@ -64,21 +79,30 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dopen_c - * Purpose: Call H5Dopen2 to open a dataset - * Inputs: loc_id - file or group identifier +/****if* H5Df/h5dopen_c + * NAME + * h5dopen_c + * PURPOSE + * Call H5Dopen2 to open a dataset + * INPUTS + * loc_id - file or group identifier * name - name of the dataset * namelen - name length * dapl_id - Dataset access property list - * Outputs: dset_id - dataset identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * dset_id - dataset identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 4, 1999 - * Modifications: Added 1.8 parameter: dapl_id - *---------------------------------------------------------------------------*/ + * HISTORY + * Added 1.8 parameter: dapl_id + * SOURCE +*/ int_f nh5dopen_c(hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *dapl_id, hid_t_f *dset_id) +/******/ { char *c_name = NULL; hid_t c_dset_id; @@ -105,24 +129,33 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dwritec_c - * Purpose: Call h5dwrite_c to write a dataset of characters - * Inputs: dset_id - dataset identifier + +/****if* H5Df/h5dwritec_c + * NAME + * h5dwritec_c + * PURPOSE + * Call h5dwrite_c to write a dataset of characters + * INPUTS + * dset_id - dataset identifier * mem_type_id - memory datatype identifier * mem_space_id - memory dataspace identifier * file_space_id - memory dataspace identifier * xfer_pr - identifier of transfer property list * buf - character data buffer - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, May 14, 2002 - * Modifications: This function is added to accomodate oveloaded h5dwrite_f + * HISTORY + * This function is added to accomodate oveloaded h5dwrite_f * with the dims argument being of INTEGER(HSIZE_T) type - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5dwritec_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) +/******/ { int ret_value = -1; @@ -136,6 +169,7 @@ nh5dwritec_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid int_f nh5dwritec_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -149,6 +183,7 @@ nh5dwritec_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, h int_f nh5dwritec_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -162,6 +197,7 @@ nh5dwritec_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, h int_f nh5dwritec_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -175,6 +211,7 @@ nh5dwritec_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, h int_f nh5dwritec_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -188,6 +225,7 @@ nh5dwritec_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, h int_f nh5dwritec_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -201,6 +239,7 @@ nh5dwritec_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, h int_f nh5dwritec_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -214,6 +253,7 @@ nh5dwritec_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, h int_f nh5dwritec_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -227,6 +267,7 @@ nh5dwritec_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, h int_f nh5dwritec_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -238,19 +279,25 @@ nh5dwritec_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, h return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dwrite_c - * Purpose: Call H5Dwrite to write a dataset - * Inputs: dset_id - dataset identifier +/****if* H5Df/h5dwrite_c + * NAME + * h5dwrite_c + * PURPOSE + * Call H5Dwrite to write a dataset + * INPUTS + * dset_id - dataset identifier * mem_type_id - memory datatype identifier * mem_space_id - memory dataspace identifier * file_space_id - memory dataspace identifier * xfer_pr - identifier of transfer property list * buf - data buffer - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, May 14, 2002 - * Modifications: This function is added to accomodate oveloaded h5dwrite_f + * HISTORY + * This function is added to accomodate oveloaded h5dwrite_f * with the dims argument being of INTEGER(HSIZE_T) type * * Added nh5dwrite_integer(real,double)_s,1-7_c functions to eliminate @@ -258,9 +305,11 @@ nh5dwritec_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, h * called by Fortran rouitnes * October 10, 2006 EIP * - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5dwrite_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f UNUSED *dims) +/******/ { int ret_value = -1; herr_t ret; @@ -291,6 +340,7 @@ nh5dwrite_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_ int_f nh5dwrite_integer_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -301,6 +351,7 @@ nh5dwrite_integer_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_spac int_f nh5dwrite_integer_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -311,6 +362,7 @@ nh5dwrite_integer_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_spac int_f nh5dwrite_integer_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -321,6 +373,7 @@ nh5dwrite_integer_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_spac int_f nh5dwrite_integer_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -331,6 +384,7 @@ nh5dwrite_integer_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_spac int_f nh5dwrite_integer_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -341,6 +395,7 @@ nh5dwrite_integer_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_spac int_f nh5dwrite_integer_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -351,6 +406,7 @@ nh5dwrite_integer_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_spac int_f nh5dwrite_integer_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -361,6 +417,7 @@ nh5dwrite_integer_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_spac int_f nh5dwrite_integer_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -371,6 +428,7 @@ nh5dwrite_integer_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_spac int_f nh5dwrite_real_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -380,6 +438,7 @@ nh5dwrite_real_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i int_f nh5dwrite_real_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -389,6 +448,7 @@ nh5dwrite_real_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i int_f nh5dwrite_real_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -398,6 +458,7 @@ nh5dwrite_real_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i int_f nh5dwrite_real_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -407,6 +468,7 @@ nh5dwrite_real_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i int_f nh5dwrite_real_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -416,6 +478,7 @@ nh5dwrite_real_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i int_f nh5dwrite_real_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -425,6 +488,7 @@ nh5dwrite_real_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i int_f nh5dwrite_real_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -434,6 +498,7 @@ nh5dwrite_real_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i int_f nh5dwrite_real_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -443,6 +508,7 @@ nh5dwrite_real_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i int_f nh5dwrite_double_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -452,6 +518,7 @@ nh5dwrite_double_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dwrite_double_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -461,6 +528,7 @@ nh5dwrite_double_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dwrite_double_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -470,6 +538,7 @@ nh5dwrite_double_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dwrite_double_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -479,6 +548,7 @@ nh5dwrite_double_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dwrite_double_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -488,6 +558,7 @@ nh5dwrite_double_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dwrite_double_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -497,6 +568,7 @@ nh5dwrite_double_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dwrite_double_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -506,6 +578,7 @@ nh5dwrite_double_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dwrite_double_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dwrite_c function. @@ -514,24 +587,32 @@ nh5dwrite_double_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space } -/*---------------------------------------------------------------------------- - * Name: h5dwrite_ref_obj_c - * Purpose: Call H5Dwrite to write a dataset of object references - * Inputs: dset_id - dataset identifier +/****if* H5Df/h5dwrite_ref_obj_c + * NAME + * h5dwrite_ref_obj_c + * PURPOSE + * Call H5Dwrite to write a dataset of object references + * INPUTS + * dset_id - dataset identifier * mem_type_id - memory datatype identifier * mem_space_id - memory dataspace identifier * file_space_id - memory dataspace identifier * xfer_pr - identifier of transfer property list * buf - data buffer with references to the objects. * n - number of references to be stored. - * Returns: 0 on success,e-1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success,e-1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, May 14, 2002 - * Modifications: This function was added to accomodate h5dwrite_f with the + * HISTORY + * This function was added to accomodate h5dwrite_f with the * dims argumnet being of INTEGER(HSIZE_T) type. - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5dwrite_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, haddr_t_f *buf, hsize_t_f *dims) +/******/ { int ret_value = -1; herr_t ret; @@ -573,24 +654,32 @@ nh5dwrite_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dwrite_ref_reg_c - * Purpose: Call H5Dwrite to write a dataset of dataset region references - * Inputs: dset_id - dataset identifier +/****if* H5Df/h5dwrite_ref_reg_c + * NAME + * h5dwrite_ref_reg_c + * PURPOSE + * Call H5Dwrite to write a dataset of dataset region references + * INPUTS + * dset_id - dataset identifier * mem_type_id - memory datatype identifier * mem_space_id - memory dataspace identifier * file_space_id - memory dataspace identifier * xfer_pr - identifier of transfer property list * buf - data buffer with references to the objects. * n - number of references to be stored. - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, May 14, 2002 - * Modifications: This function was added to accomodate h5dwrite_f with the + * HISTORY + * This function was added to accomodate h5dwrite_f with the * dims argument being of INTEGER(HSIZE_T) type - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5dwrite_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, hsize_t_f *dims) +/******/ { int ret_value = -1; herr_t ret; @@ -637,23 +726,32 @@ nh5dwrite_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ -/*---------------------------------------------------------------------------- - * Name: h5dreadc_c - * Purpose: Call h5dread_c to read a dataset of characters - * Inputs: dset_id - dataset identifier +/****if* H5Df/h5dreadc_c + * NAME + * h5dreadc_c + * PURPOSE + * Call h5dread_c to read a dataset of characters + * INPUTS + * dset_id - dataset identifier * mem_type_id - memory datatype identifier * mem_space_id - memory dataspace identifier * file_space_id - memory dataspace identifier * xfer_pr - identifier of transfer property list - * Outputs: buf - character data buffer - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * buf - character data buffer + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, May 15, 2002 - * Modifications: This function was added to accomodate h5dread_f subroutine + * HISTORY + * This function was added to accomodate h5dread_f subroutine * with the dims parameter being of INTEGER(HSIZE_T_F) size. - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5dreadc_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) +/******/ { int ret_value = -1; @@ -667,6 +765,7 @@ nh5dreadc_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_ int_f nh5dreadc_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -680,6 +779,7 @@ nh5dreadc_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hi int_f nh5dreadc_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -693,6 +793,7 @@ nh5dreadc_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hi int_f nh5dreadc_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -706,6 +807,7 @@ nh5dreadc_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hi int_f nh5dreadc_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -719,6 +821,7 @@ nh5dreadc_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hi int_f nh5dreadc_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -732,6 +835,7 @@ nh5dreadc_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hi int_f nh5dreadc_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -745,6 +849,7 @@ nh5dreadc_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hi int_f nh5dreadc_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -758,6 +863,7 @@ nh5dreadc_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hi int_f nh5dreadc_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims) + { int ret_value = -1; @@ -769,19 +875,26 @@ nh5dreadc_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hi return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dread_c - * Purpose: Call H5Draed to read a dataset - * Inputs: dset_id - dataset identifier +/****if* H5Df/h5dread_c + * NAME + * h5dread_c + * PURPOSE + * Call H5Draed to read a dataset + * INPUTS + * dset_id - dataset identifier * mem_type_id - memory datatype identifier * mem_space_id - memory dataspace identifier * file_space_id - memory dataspace identifier * xfer_pr - identifier of transfer property list - * Outputs: buf - data buffer - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * buf - data buffer + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, May 15, 2002 - * Modifications: This function was added to accomodate h5dread_f subroutine + * HISTORY + * This function was added to accomodate h5dread_f subroutine * with the dims parameter being of INTEGER(HSIZE_T_F) size. * * Added nh5dread_integer(real,double)_s,1-7_c functions to eliminate @@ -789,9 +902,11 @@ nh5dreadc_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hi * called by Fortran rouitnes * October 10, 2006 EIP * - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5dread_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f UNUSED *dims) +/******/ { int ret_value = -1; herr_t ret; @@ -822,6 +937,7 @@ nh5dread_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t int_f nh5dread_integer_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -831,6 +947,7 @@ nh5dread_integer_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dread_integer_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -840,6 +957,7 @@ nh5dread_integer_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dread_integer_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -849,6 +967,7 @@ nh5dread_integer_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dread_integer_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -858,6 +977,7 @@ nh5dread_integer_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dread_integer_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -867,6 +987,7 @@ nh5dread_integer_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dread_integer_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -876,6 +997,7 @@ nh5dread_integer_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dread_integer_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -885,6 +1007,7 @@ nh5dread_integer_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dread_integer_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -894,6 +1017,7 @@ nh5dread_integer_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space int_f nh5dread_real_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -903,6 +1027,7 @@ nh5dread_real_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id int_f nh5dread_real_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -912,6 +1037,7 @@ nh5dread_real_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id int_f nh5dread_real_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -921,6 +1047,7 @@ nh5dread_real_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id int_f nh5dread_real_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -930,6 +1057,7 @@ nh5dread_real_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id int_f nh5dread_real_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -939,6 +1067,7 @@ nh5dread_real_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id int_f nh5dread_real_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -948,6 +1077,7 @@ nh5dread_real_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id int_f nh5dread_real_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -957,6 +1087,7 @@ nh5dread_real_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id int_f nh5dread_real_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -966,6 +1097,7 @@ nh5dread_real_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id int_f nh5dread_double_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -975,6 +1107,7 @@ nh5dread_double_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ int_f nh5dread_double_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -984,6 +1117,7 @@ nh5dread_double_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ int_f nh5dread_double_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -993,6 +1127,7 @@ nh5dread_double_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ int_f nh5dread_double_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -1002,6 +1137,7 @@ nh5dread_double_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ int_f nh5dread_double_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -1011,6 +1147,7 @@ nh5dread_double_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ int_f nh5dread_double_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -1020,6 +1157,7 @@ nh5dread_double_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ int_f nh5dread_double_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -1029,6 +1167,7 @@ nh5dread_double_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ int_f nh5dread_double_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims) + { /* * Call h5dread_c function. @@ -1036,24 +1175,32 @@ nh5dread_double_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ return nh5dread_c(dset_id, mem_type_id, mem_space_id, file_space_id, xfer_prp, buf, dims); } -/*---------------------------------------------------------------------------- - * Name: h5dread_ref_obj_c - * Purpose: Call H5Dread to read a dataset of object references - * Inputs: dset_id - dataset identifier +/****if* H5Df/h5dread_ref_obj_c + * NAME + * h5dread_ref_obj_c + * PURPOSE + * Call H5Dread to read a dataset of object references + * INPUTS + * dset_id - dataset identifier * mem_type_id - memory datatype identifier * mem_space_id - memory dataspace identifier * file_space_id - memory dataspace identifier * xfer_pr - identifier of transfer property list * buf - data buffer to store references to the objects. * n - number of references to be stored. - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, May 15, 2002 - * Modifications: This function was added to accomodate h5dread_f subroutine + * HISTORY + * This function was added to accomodate h5dread_f subroutine * with the dims parameter being of INTEGER(HSIZE_T_F) size. - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5dread_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, haddr_t_f * buf, hsize_t_f *dims) +/******/ { int ret_value = -1; herr_t ret = -1; @@ -1095,24 +1242,32 @@ nh5dread_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dread_ref_reg_c - * Purpose: Call H5Dread to read a dataset of dataset region references - * Inputs: dset_id - dataset identifier +/****if* H5Df/h5dread_ref_reg_c + * NAME + * h5dread_ref_reg_c + * PURPOSE + * Call H5Dread to read a dataset of dataset region references + * INPUTS + * dset_id - dataset identifier * mem_type_id - memory datatype identifier * mem_space_id - memory dataspace identifier * file_space_id - memory dataspace identifier * xfer_pr - identifier of transfer property list * buf - data buffer to store references to the objects. * n - number of references to be stored. - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, May 15, 2002 - * Modifications: This function was added to accomodate h5dread_f subroutine + * HISTORY + * This function was added to accomodate h5dread_f subroutine * with the dims parameter being of INTEGER(HSIZE_T_F) size. - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5dread_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f * buf, hsize_t_f *dims) +/******/ { int ret_value = -1; herr_t ret = -1; @@ -1157,18 +1312,26 @@ nh5dread_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i -/*---------------------------------------------------------------------------- - * Name: h5dclose_c - * Purpose: Call H5Dclose to close a dataset - * Inputs: dset_id - identifier of the dataset to be closed - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Df/h5dclose_c + * NAME + * h5dclose_c + * PURPOSE + * Call H5Dclose to close a dataset + * INPUTS + * dset_id - identifier of the dataset to be closed + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 4, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dclose_c ( hid_t_f *dset_id ) +/******/ { int ret_value = 0; hid_t c_dset_id; @@ -1177,19 +1340,28 @@ nh5dclose_c ( hid_t_f *dset_id ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dget_space_c - * Purpose: Call H5Dget_space to obtain dataspace of a dataset - * Inputs: dset_id - identifier of the dataset - * Outputs: space_id - identifier of the dataset's dataspace - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Df/h5dget_space_c + * NAME + * h5dget_space_c + * PURPOSE + * Call H5Dget_space to obtain dataspace of a dataset + * INPUTS + * dset_id - identifier of the dataset + * OUTPUTS + * space_id - identifier of the dataset's dataspace + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 19, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dget_space_c ( hid_t_f *dset_id , hid_t_f *space_id) +/******/ { int ret_value = -1; hid_t c_dset_id; @@ -1203,19 +1375,28 @@ nh5dget_space_c ( hid_t_f *dset_id , hid_t_f *space_id) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dget_type_c - * Purpose: Call H5Dget_type to obtain datatype of a dataset - * Inputs: dset_id - identifier of the dataset - * Outputs: type_id - identifier of the dataset's datatype - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Df/h5dget_type_c + * NAME + * h5dget_type_c + * PURPOSE + * Call H5Dget_type to obtain datatype of a dataset + * INPUTS + * dset_id - identifier of the dataset + * OUTPUTS + * type_id - identifier of the dataset's datatype + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 19, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dget_type_c ( hid_t_f *dset_id , hid_t_f *type_id) +/******/ { int ret_value = -1; hid_t c_dset_id; @@ -1231,20 +1412,29 @@ nh5dget_type_c ( hid_t_f *dset_id , hid_t_f *type_id) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dget_create_plist_c - * Purpose: Call H5Dget_create_plist to obtain creation property list +/****if* H5Df/h5dget_create_plist_c + * NAME + * h5dget_create_plist_c + * PURPOSE + * Call H5Dget_create_plist to obtain creation property list * of a dataset - * Inputs: dset_id - identifier of the dataset - * Outputs: plist_id - identifier of he dataset creation property list - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * INPUTS + * dset_id - identifier of the dataset + * OUTPUTS + * plist_id - identifier of he dataset creation property list + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 19, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dget_create_plist_c ( hid_t_f *dset_id , hid_t_f *plist_id) +/******/ { int ret_value = -1; hid_t c_dset_id; @@ -1261,22 +1451,31 @@ nh5dget_create_plist_c ( hid_t_f *dset_id , hid_t_f *plist_id) } -/*---------------------------------------------------------------------------- - * Name: h5dset_extent_c - * Purpose: Call H5Dset_extent to extend dataset with unlimited dimensions - * Inputs: dset_id - identifier of the dataset - * Outputs: dims - array with the dimension sizes - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Df/h5dset_extent_c + * NAME + * h5dset_extent_c + * PURPOSE + * Call H5Dset_extent to extend dataset with unlimited dimensions + * INPUTS + * dset_id - identifier of the dataset + * OUTPUTS + * dims - array with the dimension sizes + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, August 19, 1999 * - * Modifications: Changed name from the now obsolete h5dextend + * HISTORY + * Changed name from the now obsolete h5dextend * to h5dset_extent in order to match new fortran interface. * -MSB- March 14, 2008 - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5dset_extent_c ( hid_t_f *dset_id , hsize_t_f *dims) +/******/ { hid_t c_space_id; hsize_t c_dims[H5S_MAX_RANK]; @@ -1305,20 +1504,29 @@ nh5dset_extent_c ( hid_t_f *dset_id , hsize_t_f *dims) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: nh5dget_storage_size_c - * Purpose: Call H5Dget_storage_size to return the amount of storage +/****if* H5Df/nh5dget_storage_size_c + * NAME + * nh5dget_storage_size_c + * PURPOSE + * Call H5Dget_storage_size to return the amount of storage * required for a dataset - * Inputs: dset_id - identifier of the dataset - * Outputs: size - the amount of storage required for a dataset - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * INPUTS + * dset_id - identifier of the dataset + * OUTPUTS + * size - the amount of storage required for a dataset + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, October 22, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dget_storage_size_c ( hid_t_f *dset_id , hsize_t_f *size) +/******/ { int ret_value = -1; hsize_t c_size; @@ -1332,21 +1540,30 @@ nh5dget_storage_size_c ( hid_t_f *dset_id , hsize_t_f *size) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: nh5dvlen_get_max_len_c - * Purpose: Get the maximum size of the VL dataset element - * Inputs: dset_id - identifier of the dataset +/****if* H5Df/nh5dvlen_get_max_len_c + * NAME + * nh5dvlen_get_max_len_c + * PURPOSE + * Get the maximum size of the VL dataset element + * INPUTS + * dset_id - identifier of the dataset * type_id - datatype identifier * space_id - dataspace identifier - * Outputs: len - maximum length of the VL dataset element - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * len - maximum length of the VL dataset element + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, October 22, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dvlen_get_max_len_c ( hid_t_f *dset_id , hid_t_f *type_id, hid_t_f *space_id, size_t_f *len) +/******/ { int ret_value = -1; size_t c_len; @@ -1381,10 +1598,13 @@ DONE: free(c_buf); return ret_value; } -/*---------------------------------------------------------------------------- - * Name: nh5dwrite_vl_integer_c - * Purpose: Write variable length dataset - * Inputs: dset_id - identifier of the dataset +/****if* H5Df/nh5dwrite_vl_integer_c + * NAME + * nh5dwrite_vl_integer_c + * PURPOSE + * Write variable length dataset + * INPUTS + * dset_id - identifier of the dataset * mem_type_id - datatype identifier * mem_space_id - dataspace identifier * file_space_id - file dataspace identifier @@ -1394,14 +1614,19 @@ DONE: * dims[0] = MAXLENGTH * dims[1] = number of elements of VL type * len - array element lenghts - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, October 23, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dwrite_vl_integer_c ( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, hsize_t_f *dims, size_t_f *len) +/******/ { int ret_value = -1; hid_t c_dset_id; @@ -1446,10 +1671,13 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: nh5dread_vl_integer_c - * Purpose: Read variable length dataset - * Inputs: dset_id - identifier of the dataset +/****if* H5Df/nh5dread_vl_integer_c + * NAME + * nh5dread_vl_integer_c + * PURPOSE + * Read variable length dataset + * INPUTS + * dset_id - identifier of the dataset * mem_type_id - datatype identifier * mem_space_id - dataspace identifier * file_space_id - file dataspace identifier @@ -1457,16 +1685,22 @@ DONE: * dims - one-demnsional array of size 2 * dims[0] = MAXLENGTH * dims[1] = number of elements of VL type - * Outputs: buf - data buffer + * OUTPUTS + * buf - data buffer * len - array element lenghts - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, October 24, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dread_vl_integer_c ( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, hsize_t_f *dims, size_t_f *len) +/******/ { int ret_value = -1; hid_t c_dset_id; @@ -1509,10 +1743,13 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: nh5dwrite_vl_string_c - * Purpose: Write variable length strings from Fortran program - * Inputs: dset_id - identifier of the dataset +/****if* H5Df/nh5dwrite_vl_string_c + * NAME + * nh5dwrite_vl_string_c + * PURPOSE + * Write variable length strings from Fortran program + * INPUTS + * dset_id - identifier of the dataset * mem_type_id - datatype identifier * mem_space_id - dataspace identifier * file_space_id - file dataspace identifier @@ -1521,14 +1758,19 @@ DONE: * dims - one-demnsional array of size 2 * dims[0] = number of strings of size max_len * len - array of strings lengths - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, October 28, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dwrite_vl_string_c( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims, size_t_f *len) +/******/ { int ret_value = -1; hid_t c_dset_id; @@ -1588,10 +1830,13 @@ DONE: free(tmp); return ret_value; } -/*---------------------------------------------------------------------------- - * Name: nh5dread_vl_string_c - * Purpose: Read variable length strings from Fortran program - * Inputs: dset_id - identifier of the dataset +/****if* H5Df/nh5dread_vl_string_c + * NAME + * nh5dread_vl_string_c + * PURPOSE + * Read variable length strings from Fortran program + * INPUTS + * dset_id - identifier of the dataset * mem_type_id - datatype identifier * mem_space_id - dataspace identifier * file_space_id - file dataspace identifier @@ -1600,14 +1845,19 @@ DONE: * dims[0] = number of strings of size max_len * Output: buf - data buffer * len - array of strings lengths - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Friday, November 1, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dread_vl_string_c( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims, size_t_f *len) +/******/ { int ret_value = -1; hid_t c_dset_id; @@ -1663,10 +1913,13 @@ nh5dread_vl_string_c( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_spa return ret_value; } -/*---------------------------------------------------------------------------- - * Name: nh5dwrite_vl_real_c - * Purpose: Write variable length dataset - * Inputs: dset_id - identifier of the dataset +/****if* H5Df/nh5dwrite_vl_real_c + * NAME + * nh5dwrite_vl_real_c + * PURPOSE + * Write variable length dataset + * INPUTS + * dset_id - identifier of the dataset * mem_type_id - datatype identifier * mem_space_id - dataspace identifier * file_space_id - file dataspace identifier @@ -1676,14 +1929,19 @@ nh5dread_vl_string_c( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_spa * dims[0] = MAXLENGTH * dims[1] = number of elements of VL type * len - array element lenghts - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, November 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dwrite_vl_real_c ( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, real_f *buf, hsize_t_f *dims, size_t_f *len) +/******/ { int ret_value = -1; hid_t c_dset_id; @@ -1728,10 +1986,13 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: nh5dread_vl_real_c - * Purpose: Read variable length dataset - * Inputs: dset_id - identifier of the dataset +/****if* H5Df/nh5dread_vl_real_c + * NAME + * nh5dread_vl_real_c + * PURPOSE + * Read variable length dataset + * INPUTS + * dset_id - identifier of the dataset * mem_type_id - datatype identifier * mem_space_id - dataspace identifier * file_space_id - file dataspace identifier @@ -1739,16 +2000,22 @@ DONE: * dims - one-demnsional array of size 2 * dims[0] = MAXLENGTH * dims[1] = number of elements of VL type - * Outputs: buf - data buffer + * OUTPUTS + * buf - data buffer * len - array element lenghts - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, November 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dread_vl_real_c ( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, real_f *buf, hsize_t_f *dims, size_t_f *len) +/******/ { int ret_value = -1; hid_t c_dset_id; @@ -1792,21 +2059,29 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dfillc_c - * Purpose: Call h5fill_c to fill memory buffer with a fill value - * Inputs: fill_value - fill value +/****if* H5Df/h5dfillc_c + * NAME + * h5dfillc_c + * PURPOSE + * Call h5fill_c to fill memory buffer with a fill value + * INPUTS + * fill_value - fill value * fill_type_id - fill value datatype identifier * space_id - memory space selection identifier * buf - memory buffer to fill * mem_type_id - memory buffer dtatype identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, March 12, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dfillc_c (_fcd fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, _fcd buf, hid_t_f *mem_type_id) +/******/ { int ret_value = -1; @@ -1817,22 +2092,29 @@ nh5dfillc_c (_fcd fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, _fcd buf return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dfill_c - * Purpose: Call H5Dfill to fill memory buffer with a fill value - * Inputs: fill_value - fill value +/****if* H5Df/h5dfill_c + * NAME + * h5dfill_c + * PURPOSE + * Call H5Dfill to fill memory buffer with a fill value + * INPUTS + * fill_value - fill value * fill_type_id - fill value datatype identifier * space_id - memory space selection identifier * buf - memory buffer to fill * mem_type_id - memory buffer dtatype identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, March 12, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dfill_c (void * fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, void * buf, hid_t_f *mem_type_id) - +/******/ { int ret_value = -1; herr_t ret; @@ -1926,19 +2208,27 @@ nh5dfill_double_c (void * fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dget_space_status_c - * Purpose: Call H5Dget_space_status to request dataspace allocation status - * Inputs: dset_id - dataset identifier - * Outputs: flag - status flag - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Df/h5dget_space_status_c + * NAME + * h5dget_space_status_c + * PURPOSE + * Call H5Dget_space_status to request dataspace allocation status + * INPUTS + * dset_id - dataset identifier + * OUTPUTS + * flag - status flag + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, March 12, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5dget_space_status_c ( hid_t_f *dset_id, int_f *flag) - +/******/ { int ret_value = -1; herr_t ret; @@ -1957,25 +2247,33 @@ nh5dget_space_status_c ( hid_t_f *dset_id, int_f *flag) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dcreate_anon_c - * Purpose: Call H5Dcreate_anon - * Inputs: +/****if* H5Df/h5dcreate_anon_c + * NAME + * h5dcreate_anon_c + * PURPOSE + * Call H5Dcreate_anon + * INPUTS + * * loc_id - Identifier of the file or group within which to create the dataset. * type_id - Identifier of the datatype to use when creating the dataset. * space_id - Identifier of the dataspace to use when creating the dataset. * dcpl_id - Dataset creation property list identifier. * dapl_id - Dataset access property list identifier. - * Outputs: + * OUTPUTS + * * dset_id - dataset identifier * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February, 2008 - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5dcreate_anon_c (hid_t_f *loc_id, hid_t_f *type_id, hid_t_f *space_id, hid_t_f *dcpl_id, hid_t_f *dapl_id, hid_t_f *dset_id) +/******/ { int ret_value = -1; @@ -1992,20 +2290,174 @@ nh5dcreate_anon_c (hid_t_f *loc_id, hid_t_f *type_id, hid_t_f *space_id, return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5dget_access_plist_c - * Purpose: Call H5Dget_access_plist - * Inputs: - * dset_id - dataset identifier - * Outputs: - * plist_id - the dataset access property list identifier. +/****if* H5Df/nh5dwrite_f_c + * NAME + * nh5dwrite_f_c + * PURPOSE + * Call H5Dwrite to write a dataset + * INPUTS + * dset_id - dataset identifier + * mem_type_id - memory datatype identifier + * mem_space_id - memory dataspace identifier + * file_space_id - memory dataspace identifier + * xfer_pr - identifier of transfer property list + * buf - data buffer + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * May 28, 2008 + * HISTORY + * + * + * SOURCE +*/ +int_f +nh5dwrite_f_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, + hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf) +/******/ +{ + int ret_value = -1; + herr_t ret; + hid_t c_dset_id; + hid_t c_mem_type_id; + hid_t c_mem_space_id; + hid_t c_file_space_id; + hid_t c_xfer_prp; + +/* int i, j; */ +/* typedef struct { */ +/* int x; */ +/* float y; */ +/* } r_dual_c; */ + +/* const r_dual_c *name=buf; */ + +/* r_dual_c access[4][4]; */ + +/* for ( i=0; i<4; ++i) */ +/* for (j = 0; j<4; ++j) { */ +/* access[i][j] = name[i*4+j]; */ +/* /\* access[i].x = access[i].x + 1; *\/ */ +/* printf("x = %i \n", access[i][j].x); */ +/* printf("y = %f \n", access[i][j].y); */ +/* } */ + + /* + * Define transfer property + */ + c_xfer_prp = (hid_t)*xfer_prp; + + /* + * Call H5Dwrite function. + */ + c_dset_id = (hid_t)*dset_id; + c_mem_type_id = (hid_t)*mem_type_id; + c_mem_space_id = (hid_t)*mem_space_id; + c_file_space_id = (hid_t)*file_space_id; + ret = H5Dwrite(c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp, buf); + + if (ret < 0) return ret_value; + ret_value = 0; + return ret_value; +} +/****if* H5Df/nh5dread_f_c + * NAME + * nh5dread_f_c + * PURPOSE + * Read variable length dataset + * INPUTS + * dset_id - identifier of the dataset + * mem_type_id - datatype identifier + * mem_space_id - dataspace identifier + * file_space_id - file dataspace identifier + * xfer - file transfer property + * dims - one-demnsional array of size 2 + * dims[0] = MAXLENGTH + * dims[1] = number of elements of VL type + * OUTPUTS + * buf - data buffer + * len - array element lenghts + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Wednesday, October 24, 2002 + * HISTORY + * + * SOURCE +*/ + +int_f +nh5dread_f_c ( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_space_id, + hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf) +/******/ +{ + int ret_value = -1; + hid_t c_dset_id; + hid_t c_mem_type_id; + hid_t c_mem_space_id; + hid_t c_file_space_id; + hid_t c_xfer_prp; + herr_t status; + +/* int i, j; */ +/* typedef struct { */ +/* int x; */ +/* float y; */ +/* } r_dual_c; */ + +/* r_dual_c *name=buf; */ + +/* r_dual_c access[4][4]; */ + + c_dset_id = (hid_t)*dset_id; + c_mem_type_id = (hid_t)*mem_type_id; + c_mem_space_id = (hid_t)*mem_space_id; + c_file_space_id = (hid_t)*file_space_id; + c_xfer_prp = (hid_t)*xfer_prp; + /* + * Call H5Dread function. + */ + +/* printf("%i %i %i %i %i \n",c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp); */ + + status = H5Dread(c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp, buf); + if ( status < 0 ) return ret_value; + +/* for ( i=0; i<4; ++i) */ +/* for (j = 0; j<4; ++j) { */ +/* access[i][j] = name[i*4+j]; */ +/* /\* access[i].x = access[i].x + 1; *\/ */ +/* printf("x = %i \n", access[i][j].x); */ +/* printf("y = %f \n", access[i][j].y); */ +/* } */ + + + ret_value = 1; + return ret_value; +} +/****if* H5Df/nh5dget_access_plist_c + * NAME + * nh5dget_access_plist_c + * PURPOSE + * Call H5Dget_access_plist + * INPUTS + * dset_id - dataset identifier + * OUTPUTS + * plist_id - the dataset access property list identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * April 13, 2009 * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * April 13, 2009 - *---------------------------------------------------------------------------*/ + * SOURCE +*/ + int_f nh5dget_access_plist_c (hid_t_f *dset_id, hid_t_f *plist_id) +/******/ { int ret_value = -1; /* @@ -2020,4 +2472,38 @@ nh5dget_access_plist_c (hid_t_f *dset_id, hid_t_f *plist_id) return ret_value; } +/****if* H5Df/nh5dvlen_reclaim_c + * NAME + * nh5dvlen_reclaim_c + * PURPOSE + * Call H5Dvlen_reclaim + * INPUTS + * type_id - Identifier of the datatype. + * space_id - Identifier of the dataspace. + * plist_id - Identifier of the property list used to create the buffer. + * buf - Pointer to the buffer to be reclaimed. + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * January 15, 2011 + * + * SOURCE +*/ +int_f +nh5dvlen_reclaim_c(hid_t_f *type_id, hid_t_f *space_id, hid_t_f *plist_id, void *buf) +/******/ +{ + int ret_value = -1; + herr_t status; + + /* + * Call H5Dvlen_reclaim function. + */ + status = H5Dvlen_reclaim((hid_t)*type_id, (hid_t)*space_id, (hid_t)*plist_id, buf); + if ( status < 0 ) return ret_value; + ret_value = 0; + return ret_value; +} diff --git a/fortran/src/H5Dff.f90 b/fortran/src/H5Dff.f90 index c4810b3..24917e7 100644 --- a/fortran/src/H5Dff.f90 +++ b/fortran/src/H5Dff.f90 @@ -1,3 +1,17 @@ +!****h* ROBODoc/H5D +! +! NAME +! MODULE H5D +! +! FILE +! fortran/src/H5Dff.f90 +! +! PURPOSE +! This file contains Fortran interfaces for H5D functions. It includes +! all the functions that are independent on whether the Fortran 2003 functions +! are enabled or disabled. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,76 +27,19 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! NOTES +! *** IMPORTANT *** +! If you add a new H5D function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. ! -! This file contains Fortran90 interfaces for H5D functions. -! +!***** + MODULE H5D USE H5GLOBAL - INTERFACE h5dwrite_f - - MODULE PROCEDURE h5dwrite_reference_obj - MODULE PROCEDURE h5dwrite_reference_dsetreg - MODULE PROCEDURE h5dwrite_integer_scalar - MODULE PROCEDURE h5dwrite_integer_1 - MODULE PROCEDURE h5dwrite_integer_2 - MODULE PROCEDURE h5dwrite_integer_3 - MODULE PROCEDURE h5dwrite_integer_4 - MODULE PROCEDURE h5dwrite_integer_5 - MODULE PROCEDURE h5dwrite_integer_6 - MODULE PROCEDURE h5dwrite_integer_7 - MODULE PROCEDURE h5dwrite_char_scalar - MODULE PROCEDURE h5dwrite_char_1 - MODULE PROCEDURE h5dwrite_char_2 - MODULE PROCEDURE h5dwrite_char_3 - MODULE PROCEDURE h5dwrite_char_4 - MODULE PROCEDURE h5dwrite_char_5 - MODULE PROCEDURE h5dwrite_char_6 - MODULE PROCEDURE h5dwrite_char_7 - MODULE PROCEDURE h5dwrite_real_scalar - MODULE PROCEDURE h5dwrite_real_1 - MODULE PROCEDURE h5dwrite_real_2 - MODULE PROCEDURE h5dwrite_real_3 - MODULE PROCEDURE h5dwrite_real_4 - MODULE PROCEDURE h5dwrite_real_5 - MODULE PROCEDURE h5dwrite_real_6 - MODULE PROCEDURE h5dwrite_real_7 - END INTERFACE - - INTERFACE h5dread_f - - MODULE PROCEDURE h5dread_reference_obj - MODULE PROCEDURE h5dread_reference_dsetreg - MODULE PROCEDURE h5dread_integer_scalar - MODULE PROCEDURE h5dread_integer_1 - MODULE PROCEDURE h5dread_integer_2 - MODULE PROCEDURE h5dread_integer_3 - MODULE PROCEDURE h5dread_integer_4 - MODULE PROCEDURE h5dread_integer_5 - MODULE PROCEDURE h5dread_integer_6 - MODULE PROCEDURE h5dread_integer_7 - MODULE PROCEDURE h5dread_char_scalar - MODULE PROCEDURE h5dread_char_1 - MODULE PROCEDURE h5dread_char_2 - MODULE PROCEDURE h5dread_char_3 - MODULE PROCEDURE h5dread_char_4 - MODULE PROCEDURE h5dread_char_5 - MODULE PROCEDURE h5dread_char_6 - MODULE PROCEDURE h5dread_char_7 - MODULE PROCEDURE h5dread_real_scalar - MODULE PROCEDURE h5dread_real_1 - MODULE PROCEDURE h5dread_real_2 - MODULE PROCEDURE h5dread_real_3 - MODULE PROCEDURE h5dread_real_4 - MODULE PROCEDURE h5dread_real_5 - MODULE PROCEDURE h5dread_real_6 - MODULE PROCEDURE h5dread_real_7 - END INTERFACE - - INTERFACE h5dwrite_vl_f - MODULE PROCEDURE h5dwrite_vl_integer - MODULE PROCEDURE h5dwrite_vl_real - MODULE PROCEDURE h5dwrite_vl_string + INTERFACE h5dextend_f + MODULE PROCEDURE h5dset_extent_f END INTERFACE INTERFACE h5dread_vl_f @@ -91,53 +48,50 @@ MODULE H5D MODULE PROCEDURE h5dread_vl_string END INTERFACE - INTERFACE h5dfill_f - MODULE PROCEDURE h5dfill_integer - MODULE PROCEDURE h5dfill_real - MODULE PROCEDURE h5dfill_char - END INTERFACE - - INTERFACE h5dextend_f - MODULE PROCEDURE h5dset_extent_f + INTERFACE h5dwrite_vl_f + MODULE PROCEDURE h5dwrite_vl_integer + MODULE PROCEDURE h5dwrite_vl_real + MODULE PROCEDURE h5dwrite_vl_string END INTERFACE - CONTAINS -!---------------------------------------------------------------------- -! Name: h5dcreate_f ! -! Purpose: Creates a dataset at the specified location +!****s* H5D/h5dcreate_f ! -! Inputs: -! loc_id - file or group identifier -! name - dataset name -! type_id - dataset datatype identifier -! space_id - dataset dataspace identifier -! Outputs: -! dset_id - dataset identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! creation_prp - Dataset creation property list -! lcpl_id - Link creation property list -! dapl_id - Dataset access property list +! NAME +! h5dcreate_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Creates a dataset at the specified location ! -! Modifications: -! - Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 +! INPUTS +! loc_id - file or group identifier +! name - dataset name +! type_id - dataset datatype identifier +! space_id - dataset dataspace identifier +! OUTPUTS +! dset_id - dataset identifier +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! creation_prp - Dataset creation property list +! lcpl_id - Link creation property list +! dapl_id - Dataset access property list ! -! - Added version's 1.8 new optional parameters -! February, 2008 +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! +! - Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! - Added version's 1.8 new optional parameters +! February, 2008 +! +! SOURCE SUBROUTINE h5dcreate_f(loc_id, name, type_id, space_id, dset_id, & hdferr, dcpl_id, lcpl_id, dapl_id) IMPLICIT NONE @@ -147,7 +101,7 @@ CONTAINS INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - +!***** INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dcpl_id ! Dataset creation property list INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dapl_id ! Dataset access property list @@ -156,7 +110,7 @@ CONTAINS INTEGER(HID_T) :: dcpl_id_default INTEGER(HID_T) :: dapl_id_default - INTEGER :: namelen ! Name length + INTEGER :: namelen ! Name length ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -196,4176 +150,885 @@ CONTAINS END SUBROUTINE h5dcreate_f -!---------------------------------------------------------------------- -! Name: h5dopen_f ! -! Purpose: Opens an existing dataset. +!****s* H5D/h5dopen_f +! +! NAME +! h5dopen_f ! -! Inputs: -! loc_id - file or group identifier -! name - dataset name -! Outputs: -! dset_id - dataset identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! dapl_id - Dataset access property list +! PURPOSE +! Opens an existing dataset. ! -! Programmer: Elena Pourmal -! August 12, 1999 +! INPUTS +! loc_id - file or group identifier +! name - dataset name +! OUTPUTS +! dset_id - dataset identifier +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! dapl_id - Dataset access property list ! -! Modifications: -Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! -Added 1.8 (optional) parameter dapl_id -! February, 2008, M. Scot Breitenfeld +! HISTORY +! -Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 ! -! Comment: -!---------------------------------------------------------------------- +! -Added 1.8 (optional) parameter dapl_id +! February, 2008, M. Scot Breitenfeld +! +! SOURCE + SUBROUTINE h5dopen_f(loc_id, name, dset_id, hdferr, dapl_id) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset + INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dapl_id ! Dataset access property list +!***** + INTEGER :: namelen ! Name length + + INTEGER(HID_T) :: dapl_id_default + + INTERFACE + INTEGER FUNCTION h5dopen_c(loc_id, name, namelen, dapl_id_default, dset_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DOPEN_C'::h5dopen_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(HID_T), INTENT(IN) :: dapl_id_default + INTEGER(HID_T), INTENT(OUT) :: dset_id + END FUNCTION h5dopen_c + END INTERFACE + + dapl_id_default = H5P_DEFAULT_F + IF(PRESENT(dapl_id)) dapl_id_default = dapl_id - SUBROUTINE h5dopen_f(loc_id, name, dset_id, hdferr, dapl_id) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset - INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dapl_id ! Dataset access property list - INTEGER :: namelen ! Name length + namelen = LEN(name) + hdferr = h5dopen_c(loc_id, name, namelen, dapl_id_default, dset_id) - INTEGER(HID_T) :: dapl_id_default + END SUBROUTINE h5dopen_f -! INTEGER, EXTERNAL :: h5dopen_c -! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5dopen_c(loc_id, name, namelen, dapl_id_default, dset_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DOPEN_C'::h5dopen_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER :: namelen - INTEGER(HID_T), INTENT(IN) :: dapl_id_default - INTEGER(HID_T), INTENT(OUT) :: dset_id - END FUNCTION h5dopen_c - END INTERFACE - - dapl_id_default = H5P_DEFAULT_F - IF(PRESENT(dapl_id)) dapl_id_default = dapl_id +!****s* H5D/h5dclose_f +! +! NAME +! h5dclose_f +! +! PURPOSE +! Closes a dataset. +! +! INPUTS +! dset_id - dataset identifier +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! SOURCE + SUBROUTINE h5dclose_f(dset_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5dclose_c(dset_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DCLOSE_C'::h5dclose_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + END FUNCTION h5dclose_c + END INTERFACE - namelen = LEN(name) - hdferr = h5dopen_c(loc_id, name, namelen, dapl_id_default, dset_id) + hdferr = h5dclose_c(dset_id) - END SUBROUTINE h5dopen_f + END SUBROUTINE h5dclose_f -!---------------------------------------------------------------------- -! Name: h5dclose_f ! -! Purpose: Closes a dataset. +!****s* H5D/h5dget_type_f +! +! NAME +! h5dget_type_f +! +! PURPOSE +! Returns an identifier for a copy of the datatype for a +! dataset. ! -! Inputs: -! dset_id - dataset identifier -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! dataset_id - dataset identifier +! OUTPUTS +! datatype_id - dataspace identifier +! hdferr - Returns 0 if successful and -1 if fails ! -! Programmer: Elena Pourmal -! August 12, 1999 +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 ! -! Comment: -!---------------------------------------------------------------------- +! NOTES +! +! SOURCE + SUBROUTINE h5dget_type_f(dataset_id, datatype_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier + INTEGER(HID_T), INTENT(OUT) :: datatype_id ! Datatype identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5dget_type_c (dataset_id, datatype_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DGET_TYPE_C'::h5dget_type_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dataset_id + INTEGER(HID_T), INTENT(OUT) :: datatype_id + END FUNCTION h5dget_type_c + END INTERFACE - SUBROUTINE h5dclose_f(dset_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code + hdferr = h5dget_type_c (dataset_id, datatype_id) + END SUBROUTINE h5dget_type_f -! INTEGER, EXTERNAL :: h5dclose_c -! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5dclose_c(dset_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DCLOSE_C'::h5dclose_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - END FUNCTION h5dclose_c - END INTERFACE +!****s* H5D/h5dset_extent +! +! NAME +! h5dset_extent (instead of obsolete name: h5dextend_f) +! +! PURPOSE +! Extends a dataset with unlimited dimension. +! +! INPUTS +! dataset_id - dataset identifier +! size - array containing the new magnitude of +! each dimension +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Changed name from the now obsolete h5dextend_f +! to h5dset_extent_f. Provided interface to old name +! for backward compatability. -MSB- March 14, 2008 +! +! SOURCE + SUBROUTINE h5dset_extent_f(dataset_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier + INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: size + ! Array containing + ! dimensions' sizes + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5dset_extent_c(dataset_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DSET_EXTENT_C'::h5dset_extent_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dataset_id + INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: size + END FUNCTION h5dset_extent_c + END INTERFACE + + hdferr = H5Dset_extent_c(dataset_id, size) + END SUBROUTINE h5dset_extent_f - hdferr = h5dclose_c(dset_id) +!****s* H5D/h5dget_create_plist_f +! +! NAME +! h5dget_create_plist_f +! +! PURPOSE +! Returns an identifier for a copy of the dataset creation +! property list for a dataset. +! +! INPUTS +! dataset_id - dataset identifier +! OUTPUTS +! plist_id - creation property list identifier +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! SOURCE + SUBROUTINE h5dget_create_plist_f(dataset_id, plist_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier + INTEGER(HID_T), INTENT(OUT) :: plist_id ! Dataset creation + ! property list identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5dget_create_plist_c(dataset_id, plist_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DGET_CREATE_PLIST_C'::h5dget_create_plist_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dataset_id + INTEGER(HID_T), INTENT(OUT) :: plist_id + END FUNCTION h5dget_create_plist_c + END INTERFACE - END SUBROUTINE h5dclose_f + hdferr = h5dget_create_plist_c(dataset_id, plist_id) + END SUBROUTINE h5dget_create_plist_f - SUBROUTINE h5dwrite_reference_obj(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: dims ! size of the bufffer buf - TYPE(hobj_ref_t_f), DIMENSION(dims(1)), INTENT(IN) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier +! +!****s* H5D/h5dget_storage_size_f +! +! NAME +! h5dget_storage_size_f +! +! PURPOSE +! Returns the amount of storage requires by a dataset +! +! INPUTS +! dataset_id - dataset identifier +! OUTPUTS +! size - datastorage size +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! October 15, 2002 +! SOURCE + SUBROUTINE h5dget_storage_size_f(dataset_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier + INTEGER(HSIZE_T), INTENT(OUT) :: size ! Amount of storage + ! allocated for dataset + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5dget_storage_size_c(dataset_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DGET_STORAGE_SIZE_C'::h5dget_storage_size_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dataset_id + INTEGER(HSIZE_T), INTENT(OUT) :: size + END FUNCTION h5dget_storage_size_c + END INTERFACE - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HADDR_T), ALLOCATABLE, DIMENSION(:) :: ref_buf - INTEGER :: j + hdferr = h5dget_storage_size_c(dataset_id, size) + END SUBROUTINE h5dget_storage_size_f -! INTEGER, EXTERNAL :: h5dwrite_ref_obj_c -! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5dwrite_ref_obj_c(dset_id, mem_type_id,& - mem_space_id_default, & - file_space_id_default, xfer_prp_default, ref_buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REF_OBJ_C'::h5dwrite_ref_obj_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HADDR_T), DIMENSION(*) :: ref_buf - INTEGER(HSIZE_T), DIMENSION(*) :: dims - END FUNCTION h5dwrite_ref_obj_c - END INTERFACE +!****s* H5D/h5dvlen_get_max_len_f +! +! NAME +! h5dvlen_get_max_len_f +! +! PURPOSE +! Returns maximum length of the VL array elements +! +! INPUTS +! dataset_id - dataset identifier +! type_id - datatype identifier +! space_id - dataspace identifier +! OUTPUTS +! size - buffer size +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! NONE +! +! AUTHOR +! Elena Pourmal +! October 15, 2002 +! +! SOURCE + SUBROUTINE h5dvlen_get_max_len_f(dataset_id, type_id, space_id, len, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier + INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier + INTEGER(SIZE_T), INTENT(OUT) :: len ! Maximum length of the element + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5dvlen_get_max_len_c(dataset_id, type_id, space_id, len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DVLEN_GET_MAX_LEN_C'::h5dvlen_get_max_len_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dataset_id + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER(SIZE_T), INTENT(OUT) :: len + END FUNCTION h5dvlen_get_max_len_c + END INTERFACE - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F + hdferr = h5dvlen_get_max_len_c(dataset_id, type_id, space_id, len) + END SUBROUTINE h5dvlen_get_max_len_f - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id +! +!****s* H5D/h5dget_space_status_f +! +! NAME +! h5dget_space_status_f +! +! PURPOSE +! Returns the status of data space allocation. +! +! INPUTS +! dset_id - dataset identifier +! OUTPUTS +! flag - status; may have one of the following values: +! H5D_SPACE_STS_ERROR_F +! H5D_SPACE_STS_NOT_ALLOCATED_F +! H5D_SPACE_STS_PART_ALLOCATED_F +! H5D_SPACE_STS_ALLOCATED_F +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! March 12, 2003 +! +! SOURCE + SUBROUTINE h5dget_space_status_f(dset_id, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataspace identifier + INTEGER, INTENT(IN) :: flag ! Memory buffer to fill in + INTEGER, INTENT(OUT) :: hdferr ! Error code + !***** + INTERFACE + INTEGER FUNCTION h5dget_space_status_c(dset_id, flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DGET_SPACE_STATUS_C'::h5dget_space_status_c + !DEC$ENDIF + INTEGER(HID_T) :: dset_id + INTEGER :: flag + END FUNCTION h5dget_space_status_c + END INTERFACE - allocate(ref_buf(dims(1)), stat=hdferr) - if (hdferr .NE. 0 ) then - hdferr = -1 - return - else - do j = 1, dims(1) - ref_buf(j) = buf(j)%ref - enddo - endif - hdferr = h5dwrite_ref_obj_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, ref_buf, dims(1)) - deallocate(ref_buf) + hdferr = h5dget_space_status_c(dset_id, flag) + END SUBROUTINE h5dget_space_status_f - END SUBROUTINE h5dwrite_reference_obj +! +!****s* H5D/h5dcreate_anon_f +! +! NAME +! h5dcreate_anon_f +! +! PURPOSE +! Creates a dataset in a file without linking it into the file structure +! +! INPUTS +! loc_id - Identifier of the file or group within which to create the dataset. +! type_id - Identifier of the datatype to use when creating the dataset. +! space_id - Identifier of the dataspace to use when creating the dataset. +! OUTPUTS +! dset_id - dataset identifier +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! dcpl_id - Dataset creation property list identifier. +! dapl_id - Dataset access property list identifier. +! +! AUTHOR +! M. Scot Breitenfeld +! February 11, 2008 +! +! SOURCE + SUBROUTINE h5dcreate_anon_f(loc_id, type_id, space_id, dset_id, hdferr, dcpl_id, dapl_id) + IMPLICIT NONE + 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) :: space_id ! Dataspace identifier. + INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier. + INTEGER, INTENT(OUT) :: hdferr ! Error code. + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dcpl_id ! Dataset creation property list identifier. + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dapl_id ! Dataset access property list identifier. +!***** + INTEGER(HID_T) :: dcpl_id_default + INTEGER(HID_T) :: dapl_id_default - SUBROUTINE h5dwrite_reference_dsetreg(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: dims ! size of the bufffer buf - TYPE(hdset_reg_ref_t_f), DIMENSION(dims(1)), INTENT(IN) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier + ! + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5dcreate_anon_c(loc_id, type_id, space_id, dcpl_id_default, dapl_id_default, dset_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DCREATE_ANON_C'::h5dcreate_anon_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: loc_id + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER(HID_T) :: dcpl_id_default + INTEGER(HID_T) :: dapl_id_default + INTEGER(HID_T), INTENT(OUT) :: dset_id + END FUNCTION h5dcreate_anon_c + END INTERFACE - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf - INTEGER :: i,j + dcpl_id_default = H5P_DEFAULT_F + dapl_id_default = H5P_DEFAULT_F -! INTEGER, EXTERNAL :: h5dwrite_ref_reg_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_ref_reg_c(dset_id, mem_type_id,& - mem_space_id_default, & - file_space_id_default, xfer_prp_default, ref_buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REF_REG_C'::h5dwrite_ref_reg_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER, DIMENSION(*) :: ref_buf - INTEGER(HSIZE_T), DIMENSION(*) :: dims - END FUNCTION h5dwrite_ref_reg_c - END INTERFACE + IF(PRESENT(dcpl_id)) dcpl_id_default = dcpl_id + IF(PRESENT(dapl_id)) dapl_id_default = dapl_id + hdferr = h5dcreate_anon_c(loc_id, type_id, space_id, dcpl_id_default, dapl_id_default, dset_id) - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F + END SUBROUTINE h5dcreate_anon_f - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id + SUBROUTINE h5dwrite_vl_integer(dset_id, mem_type_id, buf, dims, len, & + hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims ! MAX len x num_elem + INTEGER(SIZE_T), INTENT(IN), DIMENSION(*) :: len ! Array to store + ! the length of each + ! element + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2)), TARGET :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default - allocate(ref_buf(REF_REG_BUF_LEN*dims(1)), stat=hdferr) - if (hdferr .NE. 0 ) then - hdferr = -1 - return - else - do j = 1, dims(1) - do i = 1, REF_REG_BUF_LEN - ref_buf(REF_REG_BUF_LEN*(j-1) + i) = buf(j)%ref(i) - enddo - enddo - endif - hdferr = h5dwrite_ref_reg_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, ref_buf, dims) - deallocate(ref_buf) + INTERFACE + INTEGER FUNCTION h5dwrite_vl_integer_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims, len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_VL_INTEGER_C'::h5dwrite_vl_integer_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER(SIZE_T), INTENT(IN), DIMENSION(*) :: len + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dwrite_vl_integer_c + END INTERFACE - END SUBROUTINE h5dwrite_reference_dsetreg + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id - SUBROUTINE h5dwrite_integer_scalar(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(IN) :: buf ! Data buffer - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier + hdferr = h5dwrite_vl_integer_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims, len) - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default + END SUBROUTINE h5dwrite_vl_integer -! INTEGER, EXTERNAL :: h5dwrite_integer_s_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_integer_s_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_S_C'::h5dwrite_integer_s_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN) :: buf - END FUNCTION h5dwrite_integer_s_c - END INTERFACE + SUBROUTINE h5dread_vl_integer(dset_id, mem_type_id, buf, dims, len, & + hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims ! MAX len x num_elem + INTEGER(SIZE_T), INTENT(INOUT), DIMENSION(*) :: len ! Array to store + ! the length of each + ! element + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)), TARGET :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! -1 if failed, 0 otherwise + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: tmp + INTEGER :: error + INTERFACE + INTEGER FUNCTION h5dread_vl_integer_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims, len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_VL_INTEGER_C'::h5dread_vl_integer_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER(SIZE_T), INTENT(INOUT), DIMENSION(*) :: len + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dread_vl_integer_c + END INTERFACE - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F + CALL h5dget_space_f(dset_id, tmp, error) + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = tmp + file_space_id_default = tmp - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id - hdferr = h5dwrite_integer_s_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) + hdferr = h5dread_vl_integer_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims, len) - END SUBROUTINE h5dwrite_integer_scalar + END SUBROUTINE h5dread_vl_integer - SUBROUTINE h5dwrite_integer_1(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & - DIMENSION(dims(1)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier + SUBROUTINE h5dwrite_vl_real(dset_id, mem_type_id, buf, dims, len, & + hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims ! MAX len x num_elem + INTEGER(SIZE_T), INTENT(IN), DIMENSION(*) :: len ! Array to store + ! the length of each + ! element + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default -! INTEGER, EXTERNAL :: h5dwrite_integer_1_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_integer_1_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_1_C'::h5dwrite_integer_1_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & - DIMENSION(dims(1)) :: buf - END FUNCTION h5dwrite_integer_1_c - END INTERFACE + INTERFACE + INTEGER FUNCTION h5dwrite_vl_real_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims, len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_VL_REAL_C'::h5dwrite_vl_real_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER(SIZE_T), INTENT(IN), DIMENSION(*) :: len + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dwrite_vl_real_c + END INTERFACE - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id - hdferr = h5dwrite_integer_1_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) + hdferr = h5dwrite_vl_real_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims, len) - END SUBROUTINE h5dwrite_integer_1 + END SUBROUTINE h5dwrite_vl_real - SUBROUTINE h5dwrite_integer_2(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2)) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier + SUBROUTINE h5dread_vl_real(dset_id, mem_type_id, buf, dims, len, & + hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims ! MAX len x num_elem + INTEGER(SIZE_T), INTENT(INOUT), DIMENSION(*) :: len ! Array to store the length of each element + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! -1 if failed, 0 otherwise + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: tmp + INTEGER :: error -! INTEGER, EXTERNAL :: h5dwrite_integer_2_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_integer_2_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_2_C'::h5dwrite_integer_2_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & + INTERFACE + INTEGER FUNCTION h5dread_vl_real_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims, len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_VL_REAL_C'::h5dread_vl_real_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER(SIZE_T), INTENT(INOUT), DIMENSION(*) :: len + REAL, INTENT(INOUT), & DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5dwrite_integer_2_c - END INTERFACE + END FUNCTION h5dread_vl_real_c + END INTERFACE + CALL h5dget_space_f(dset_id, tmp, error) + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = tmp + file_space_id_default = tmp - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - hdferr = h5dwrite_integer_2_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims) + hdferr = h5dread_vl_real_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims, len) - END SUBROUTINE h5dwrite_integer_2 + END SUBROUTINE h5dread_vl_real - SUBROUTINE h5dwrite_integer_3(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier + SUBROUTINE h5dwrite_vl_string(dset_id, mem_type_id, buf, dims, str_len, & + hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims ! Number of strings + INTEGER(SIZE_T), INTENT(IN), DIMENSION(*) :: str_len ! Array to store the length of each element + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(2)) :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default + INTERFACE + INTEGER FUNCTION h5dwrite_vl_string_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + ! xfer_prp_default, tmp_buf, dims, str_len) + xfer_prp_default, buf, dims, str_len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_VL_STRING_C'::h5dwrite_vl_string_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims + INTEGER(SIZE_T), INTENT(IN), DIMENSION(*) :: str_len + CHARACTER(LEN=*), DIMENSION(dims(2)) :: buf + END FUNCTION + END INTERFACE -! INTEGER, EXTERNAL :: h5dwrite_integer_3_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_integer_3_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_3_C'::h5dwrite_integer_3_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - END FUNCTION h5dwrite_integer_3_c - END INTERFACE + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id + hdferr = h5dwrite_vl_string_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims, str_len) - hdferr = h5dwrite_integer_3_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims) + END SUBROUTINE h5dwrite_vl_string - END SUBROUTINE h5dwrite_integer_3 - - SUBROUTINE h5dwrite_integer_4(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwrite_integer_4_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_integer_4_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_4_C'::h5dwrite_integer_4_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - END FUNCTION h5dwrite_integer_4_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_integer_4_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims) - - END SUBROUTINE h5dwrite_integer_4 - - SUBROUTINE h5dwrite_integer_5(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwrite_integer_5_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_integer_5_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_5_C'::h5dwrite_integer_5_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - END FUNCTION h5dwrite_integer_5_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_integer_5_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims) - - END SUBROUTINE h5dwrite_integer_5 - - SUBROUTINE h5dwrite_integer_6(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwrite_integer_6_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_integer_6_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_6_C'::h5dwrite_integer_6_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - END FUNCTION h5dwrite_integer_6_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_integer_6_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims) - - END SUBROUTINE h5dwrite_integer_6 - - SUBROUTINE h5dwrite_integer_7(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwrite_integer_7_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_integer_7_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_7_C'::h5dwrite_integer_7_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - END FUNCTION h5dwrite_integer_7_c - END INTERFACE - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_integer_7_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims) - - END SUBROUTINE h5dwrite_integer_7 - - - SUBROUTINE h5dwrite_char_scalar(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwritec_s_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwritec_s_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_S_C'::h5dwritec_s_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN) :: buf - END FUNCTION h5dwritec_s_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwritec_s_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_char_scalar - - SUBROUTINE h5dwrite_char_1(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwritec_1_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwritec_1_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_1_C'::h5dwritec_1_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1)) :: buf - END FUNCTION h5dwritec_1_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwritec_1_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_char_1 - - SUBROUTINE h5dwrite_char_2(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwritec_2_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwritec_2_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_2_C'::h5dwritec_2_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5dwritec_2_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwritec_2_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_char_2 - - SUBROUTINE h5dwrite_char_3(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwritec_3_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwritec_3_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_3_C'::h5dwritec_3_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - END FUNCTION h5dwritec_3_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwritec_3_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_char_3 - - SUBROUTINE h5dwrite_char_4(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwritec_4_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwritec_4_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_4_C'::h5dwritec_4_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - END FUNCTION h5dwritec_4_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwritec_4_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_char_4 - - SUBROUTINE h5dwrite_char_5(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwritec_5_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwritec_5_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_5_C'::h5dwritec_5_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - END FUNCTION h5dwritec_5_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwritec_5_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_char_5 - - SUBROUTINE h5dwrite_char_6(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwritec_6_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwritec_6_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_6_C'::h5dwritec_6_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - END FUNCTION h5dwritec_6_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwritec_6_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_char_6 - - SUBROUTINE h5dwrite_char_7(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwritec_7_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwritec_7_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_7_C'::h5dwritec_7_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - END FUNCTION h5dwritec_7_c - END INTERFACE - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwritec_7_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_char_7 - - SUBROUTINE h5dwrite_real_scalar(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwrite_real_s_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_real_s_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_S_C'::h5dwrite_real_s_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN) :: buf - END FUNCTION h5dwrite_real_s_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_real_s_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_real_scalar - - SUBROUTINE h5dwrite_real_1(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwrite_real_1_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_real_1_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_1_C'::h5dwrite_real_1_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1)) :: buf - END FUNCTION h5dwrite_real_1_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_real_1_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_real_1 - - SUBROUTINE h5dwrite_real_2(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwrite_real_2_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_real_2_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_2_C'::h5dwrite_real_2_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5dwrite_real_2_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_real_2_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_real_2 - - SUBROUTINE h5dwrite_real_3(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwrite_real_3_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_real_3_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_3_C'::h5dwrite_real_3_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - END FUNCTION h5dwrite_real_3_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_real_3_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_real_3 - - SUBROUTINE h5dwrite_real_4(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwrite_real_4_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_real_4_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_4_C'::h5dwrite_real_4_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - END FUNCTION h5dwrite_real_4_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_real_4_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_real_4 - - SUBROUTINE h5dwrite_real_5(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwrite_real_5_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_real_5_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_5_C'::h5dwrite_real_5_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - END FUNCTION h5dwrite_real_5_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_real_5_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_real_5 - - SUBROUTINE h5dwrite_real_6(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwrite_real_6_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_real_6_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_6_C'::h5dwrite_real_6_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - END FUNCTION h5dwrite_real_6_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_real_6_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_real_6 - - SUBROUTINE h5dwrite_real_7(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dwrite_real_7_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dwrite_real_7_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_7_C'::h5dwrite_real_7_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - END FUNCTION h5dwrite_real_7_c - END INTERFACE - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_real_7_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dwrite_real_7 - -!---------------------------------------------------------------------- -! Name: h5dread_f -! -! Purpose: Reads raw data from the specified dataset into buf, -! converting from file datatype and dataspace to memory -! datatype and dataspace. -! -! Inputs: -! dset_id - dataset identifier -! mem_type_id - memory type identifier -! dims - 1-dim array of size 7; dims(k) has the size -! - of k-th dimension of the buf array -! Outputs: -! buf - buffer to read data in -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! mem_space_id - memory dataspace identifier -! file_space_id - file dataspace identifier -! xfer_prp - trasfer property list identifier -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! dims parameter was added to make code portable; -! n parameter was replaced with dims parameter in -! the h5dwrite_reference_obj and h5dwrite_reference_dsetreg -! functions. April 2, 2001 -! -! Comment: This function is overloaded to read INTEGER, -! REAL, DOUBLE PRECISION and CHARACTER buffers -! up to 7 dimensions, and one dimensional buffers -! of the TYPE(hobj_ref_t_f) and TYPE(hdset_reg_ref_t_f) -! types. -!---------------------------------------------------------------------- - SUBROUTINE h5dread_reference_obj(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - TYPE(hobj_ref_t_f), INTENT(INOUT) , & - DIMENSION(dims(1)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HADDR_T), ALLOCATABLE, DIMENSION(:) :: ref_buf - INTEGER :: j - -! INTEGER, EXTERNAL :: h5dread_ref_obj_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_ref_obj_c(dset_id, mem_type_id,& - mem_space_id_default, & - file_space_id_default, xfer_prp_default, ref_buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REF_OBJ_C'::h5dread_ref_obj_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER(HADDR_T), DIMENSION(*) :: ref_buf - END FUNCTION h5dread_ref_obj_c - END INTERFACE - - allocate(ref_buf(dims(1)), stat=hdferr) - if (hdferr .NE. 0) then - hdferr = -1 - return - endif - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_ref_obj_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, ref_buf, dims) - do j = 1, dims(1) - buf(j)%ref = ref_buf(j) - enddo - deallocate(ref_buf) - END SUBROUTINE h5dread_reference_obj - - SUBROUTINE h5dread_reference_dsetreg(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - TYPE(hdset_reg_ref_t_f), INTENT(INOUT), & - DIMENSION(dims(1)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf - INTEGER :: i,j - -! INTEGER, EXTERNAL :: h5dread_ref_reg_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_ref_reg_c(dset_id, mem_type_id,& - mem_space_id_default, & - file_space_id_default, xfer_prp_default, ref_buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REF_REG_C'::h5dread_ref_reg_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, DIMENSION(*) :: ref_buf - END FUNCTION h5dread_ref_reg_c - END INTERFACE - - allocate(ref_buf(REF_REG_BUF_LEN*dims(1)), stat=hdferr) - if (hdferr .NE. 0) then - hdferr = -1 - return - endif - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_ref_reg_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, ref_buf, dims) - - do j = 1, dims(1) - do i = 1, REF_REG_BUF_LEN - buf(j)%ref(i) = ref_buf(REF_REG_BUF_LEN*(j-1) + i) - enddo - enddo - deallocate(ref_buf) - END SUBROUTINE h5dread_reference_dsetreg - - - SUBROUTINE h5dread_integer_scalar(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(INOUT) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_integer_s_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_integer_s_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_S_C'::h5dread_integer_s_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(OUT) :: buf - END FUNCTION h5dread_integer_s_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_integer_s_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_integer_scalar - - SUBROUTINE h5dread_integer_1(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_integer_1_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_integer_1_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_1_C'::h5dread_integer_1_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(OUT), & - DIMENSION(dims(1)) :: buf - END FUNCTION h5dread_integer_1_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_integer_1_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_integer_1 - - SUBROUTINE h5dread_integer_2(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_integer_2_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_integer_2_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_2_C'::h5dread_integer_2_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(OUT), & - DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5dread_integer_2_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_integer_2_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims) - - END SUBROUTINE h5dread_integer_2 - - SUBROUTINE h5dread_integer_3(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_integer_3_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_integer_3_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_3_C'::h5dread_integer_3_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(OUT), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - END FUNCTION h5dread_integer_3_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_integer_3_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims) - - END SUBROUTINE h5dread_integer_3 - - SUBROUTINE h5dread_integer_4(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_integer_4_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_integer_4_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_4_C'::h5dread_integer_4_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(OUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - END FUNCTION h5dread_integer_4_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_integer_4_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims) - - END SUBROUTINE h5dread_integer_4 - - SUBROUTINE h5dread_integer_5(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_integer_5_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_integer_5_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_5_C'::h5dread_integer_5_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - END FUNCTION h5dread_integer_5_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_integer_5_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims) - - END SUBROUTINE h5dread_integer_5 - - SUBROUTINE h5dread_integer_6(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_integer_6_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_integer_6_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_6_C'::h5dread_integer_6_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - END FUNCTION h5dread_integer_6_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_integer_6_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims) - - END SUBROUTINE h5dread_integer_6 - - SUBROUTINE h5dread_integer_7(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_integer_7_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_integer_7_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_7_C'::h5dread_integer_7_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - END FUNCTION h5dread_integer_7_c - END INTERFACE - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_integer_7_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims) - - END SUBROUTINE h5dread_integer_7 - - SUBROUTINE h5dread_char_scalar(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dreadc_s_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dreadc_s_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_S_C'::h5dreadc_s_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(OUT) :: buf - END FUNCTION h5dreadc_s_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dreadc_s_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_char_scalar - - SUBROUTINE h5dread_char_1(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dreadc_1_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dreadc_1_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_1_C'::h5dreadc_1_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1)) :: buf - END FUNCTION h5dreadc_1_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dreadc_1_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_char_1 - - SUBROUTINE h5dread_char_2(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dreadc_2_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dreadc_2_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_2_C'::h5dreadc_2_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5dreadc_2_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dreadc_2_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_char_2 - - SUBROUTINE h5dread_char_3(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dreadc_3_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dreadc_3_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_3_C'::h5dreadc_3_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - END FUNCTION h5dreadc_3_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dreadc_3_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_char_3 - - SUBROUTINE h5dread_char_4(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dreadc_4_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dreadc_4_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_4_C'::h5dreadc_4_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf - END FUNCTION h5dreadc_4_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dreadc_4_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_char_4 - - SUBROUTINE h5dread_char_5(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dreadc_5_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dreadc_5_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_5_C'::h5dreadc_5_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - END FUNCTION h5dreadc_5_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dreadc_5_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_char_5 - - SUBROUTINE h5dread_char_6(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dreadc_6_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dreadc_6_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_6_C'::h5dreadc_6_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - END FUNCTION h5dreadc_6_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dreadc_6_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_char_6 - - SUBROUTINE h5dread_char_7(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dreadc_7_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dreadc_7_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_7_C'::h5dreadc_7_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - CHARACTER(LEN=*), INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - END FUNCTION h5dreadc_7_c - END INTERFACE - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dreadc_7_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_char_7 - - SUBROUTINE h5dread_real_scalar(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_real_s_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_real_s_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_S_C'::h5dread_real_s_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(OUT) :: buf - END FUNCTION h5dread_real_s_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_real_s_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_real_scalar - - SUBROUTINE h5dread_real_1(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_real_1_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_real_1_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_1_C'::h5dread_real_1_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1)) :: buf - END FUNCTION h5dread_real_1_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_real_1_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_real_1 - - SUBROUTINE h5dread_real_2(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_real_2_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_real_2_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_2_C'::h5dread_real_2_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5dread_real_2_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_real_2_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_real_2 - - SUBROUTINE h5dread_real_3(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_real_3_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_real_3_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_3_C'::h5dread_real_3_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3)) :: buf - END FUNCTION h5dread_real_3_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_real_3_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_real_3 - - SUBROUTINE h5dread_real_4(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3), dims(4)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_real_4_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_real_4_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_4_C'::h5dread_real_4_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3), dims(4)) :: buf - END FUNCTION h5dread_real_4_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_real_4_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_real_4 - - SUBROUTINE h5dread_real_5(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_real_5_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_real_5_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_5_C'::h5dread_real_5_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf - END FUNCTION h5dread_real_5_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_real_5_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_real_5 - - SUBROUTINE h5dread_real_6(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_real_6_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_real_6_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_6_C'::h5dread_real_6_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf - END FUNCTION h5dread_real_6_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_real_6_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_real_6 - - SUBROUTINE h5dread_real_7(dset_id, mem_type_id, buf, dims, hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - -! INTEGER, EXTERNAL :: h5dread_real_7_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dread_real_7_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_7_C'::h5dread_real_7_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf - END FUNCTION h5dread_real_7_c - END INTERFACE - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_real_7_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf, dims) - - END SUBROUTINE h5dread_real_7 - -!---------------------------------------------------------------------- -! Name: h5dget_space_f -! -! Purpose: Returns an identifier for a copy of the dataspace for a -! dataset. -! -! Inputs: -! dataset_id - dataset identifier -! Outputs: -! dataspace_id - dataspace identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5dget_space_f(dataset_id, dataspace_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier - INTEGER(HID_T), INTENT(OUT) :: dataspace_id ! Dataspace identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5dget_space_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dget_space_c(dataset_id, dataspace_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DGET_SPACE_C'::h5dget_space_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dataset_id - INTEGER(HID_T), INTENT(OUT) :: dataspace_id - END FUNCTION h5dget_space_c - END INTERFACE - - hdferr = h5dget_space_c(dataset_id, dataspace_id) - END SUBROUTINE h5dget_space_f - -!---------------------------------------------------------------------- -! Name: h5dget_type_f -! -! Purpose: Returns an identifier for a copy of the datatype for a -! dataset. -! -! Inputs: -! dataset_id - dataset identifier -! Outputs: -! datatype_id - dataspace identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5dget_type_f(dataset_id, datatype_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier - INTEGER(HID_T), INTENT(OUT) :: datatype_id ! Datatype identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code -! INTEGER, EXTERNAL :: h5dget_type_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dget_type_c (dataset_id, datatype_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DGET_TYPE_C'::h5dget_type_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dataset_id - INTEGER(HID_T), INTENT(OUT) :: datatype_id - END FUNCTION h5dget_type_c - END INTERFACE - - hdferr = h5dget_type_c (dataset_id, datatype_id) - END SUBROUTINE h5dget_type_f - -!---------------------------------------------------------------------- -! Name: h5dset_extent (instead of obsolete name: h5dextend_f) -! -! Purpose: Extends a dataset with unlimited dimension. -! -! Inputs: -! dataset_id - dataset identifier -! size - array containing the new magnitude of -! each dimension -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Changed name from the now obsolete h5dextend_f -! to h5dset_extent_f. Provided interface to old name -! for backward compatability. -MSB- March 14, 2008 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5dset_extent_f(dataset_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier - INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: size - ! Array containing - ! dimensions' sizes - INTEGER, INTENT(OUT) :: hdferr ! Error code - - ! - ! MS FORTRAN needs explicit interface for C functions called here. - ! - INTERFACE - INTEGER FUNCTION h5dset_extent_c(dataset_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DSET_EXTENT_C'::h5dset_extent_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dataset_id - INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: size - END FUNCTION h5dset_extent_c - END INTERFACE - - hdferr = H5Dset_extent_c(dataset_id, size) - END SUBROUTINE h5dset_extent_f - - -!---------------------------------------------------------------------- -! Name: h5dget_create_plist_f -! -! Purpose: Returns an identifier for a copy of the dataset creation -! property list for a dataset. -! -! Inputs: -! dataset_id - dataset identifier -! Outputs: -! plist_id - creation property list identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5dget_create_plist_f(dataset_id, plist_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier - INTEGER(HID_T), INTENT(OUT) :: plist_id ! Dataset creation - ! property list identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5dget_create_plist_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dget_create_plist_c(dataset_id, plist_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DGET_CREATE_PLIST_C'::h5dget_create_plist_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dataset_id - INTEGER(HID_T), INTENT(OUT) :: plist_id - END FUNCTION h5dget_create_plist_c - END INTERFACE - - hdferr = h5dget_create_plist_c(dataset_id, plist_id) - END SUBROUTINE h5dget_create_plist_f - -!---------------------------------------------------------------------- -! Name: h5dget_storage_size_f -! -! Purpose: Returns the amount of storage requires by a dataset -! -! Inputs: -! dataset_id - dataset identifier -! Outputs: -! size - datastorage size -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 15, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5dget_storage_size_f(dataset_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier - INTEGER(HSIZE_T), INTENT(OUT) :: size - ! Amount of storage - ! allocated for dataset - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5dget_storage_size_c(dataset_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DGET_STORAGE_SIZE_C'::h5dget_storage_size_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dataset_id - INTEGER(HSIZE_T), INTENT(OUT) :: size - END FUNCTION h5dget_storage_size_c - END INTERFACE - - hdferr = h5dget_storage_size_c(dataset_id, size) - END SUBROUTINE h5dget_storage_size_f - -!---------------------------------------------------------------------- -! Name: h5dvlen_get_max_len_f -! -! Purpose: Returns maximum lenght of the VL array elements -! -! Inputs: -! dataset_id - dataset identifier -! type_id - datatype identifier -! space_id - dataspace identifier -! Outputs: -! size - buffer size -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 15, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5dvlen_get_max_len_f(dataset_id, type_id, space_id, len, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier - INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier - INTEGER(SIZE_T), INTENT(OUT) :: len ! Maximum length of the element - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5dvlen_get_max_len_c(dataset_id, type_id, space_id, len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DVLEN_GET_MAX_LEN_C'::h5dvlen_get_max_len_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dataset_id - INTEGER(HID_T), INTENT(IN) :: type_id - INTEGER(HID_T), INTENT(IN) :: space_id - INTEGER(SIZE_T), INTENT(OUT) :: len - END FUNCTION h5dvlen_get_max_len_c - END INTERFACE - - hdferr = h5dvlen_get_max_len_c(dataset_id, type_id, space_id, len) - END SUBROUTINE h5dvlen_get_max_len_f - - SUBROUTINE h5dwrite_vl_integer(dset_id, mem_type_id, buf, dims, len, & - hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims ! MAX len x num_elem - INTEGER(SIZE_T), INTENT(IN), DIMENSION(*) :: len ! Array to store - ! the lenght of each - ! element - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2)) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - - INTERFACE - INTEGER FUNCTION h5dwrite_vl_integer_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims, len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_VL_INTEGER_C'::h5dwrite_vl_integer_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER(SIZE_T), INTENT(IN), DIMENSION(*) :: len - INTEGER, INTENT(IN), & - DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5dwrite_vl_integer_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_vl_integer_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims, len) - - END SUBROUTINE h5dwrite_vl_integer - - SUBROUTINE h5dread_vl_integer(dset_id, mem_type_id, buf, dims, len, & - hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims ! MAX len x num_elem - INTEGER(SIZE_T), INTENT(INOUT), DIMENSION(*) :: len ! Array to store - ! the lenght of each - ! element - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2)) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - ! -1 if failed, 0 otherwise - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: tmp - INTEGER :: error - - INTERFACE - INTEGER FUNCTION h5dread_vl_integer_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims, len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_VL_INTEGER_C'::h5dread_vl_integer_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER(SIZE_T), INTENT(INOUT), DIMENSION(*) :: len - INTEGER, INTENT(INOUT), & - DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5dread_vl_integer_c - END INTERFACE - - CALL h5dget_space_f(dset_id, tmp, error) - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = tmp - file_space_id_default = tmp - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_vl_integer_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims, len) - - END SUBROUTINE h5dread_vl_integer - - SUBROUTINE h5dwrite_vl_real(dset_id, mem_type_id, buf, dims, len, & - hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims ! MAX len x num_elem - INTEGER(SIZE_T), INTENT(IN), DIMENSION(*) :: len ! Array to store - ! the lenght of each - ! element - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2)) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - - INTERFACE - INTEGER FUNCTION h5dwrite_vl_real_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims, len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_VL_REAL_C'::h5dwrite_vl_real_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER(SIZE_T), INTENT(IN), DIMENSION(*) :: len - REAL, INTENT(IN), & - DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5dwrite_vl_real_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dwrite_vl_real_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims, len) - - END SUBROUTINE h5dwrite_vl_real - - SUBROUTINE h5dread_vl_real(dset_id, mem_type_id, buf, dims, len, & - hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims ! MAX len x num_elem - INTEGER(SIZE_T), INTENT(INOUT), DIMENSION(*) :: len ! Array to store - ! the lenght of each - ! element - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2)) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - ! -1 if failed, 0 otherwise - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: tmp - INTEGER :: error - - INTERFACE - INTEGER FUNCTION h5dread_vl_real_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & - xfer_prp_default, buf, dims, len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_VL_REAL_C'::h5dread_vl_real_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims - INTEGER(SIZE_T), INTENT(INOUT), DIMENSION(*) :: len - REAL, INTENT(INOUT), & - DIMENSION(dims(1),dims(2)) :: buf - END FUNCTION h5dread_vl_real_c - END INTERFACE - - CALL h5dget_space_f(dset_id, tmp, error) - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = tmp - file_space_id_default = tmp - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id - - hdferr = h5dread_vl_real_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims, len) - - END SUBROUTINE h5dread_vl_real - - SUBROUTINE h5dwrite_vl_string(dset_id, mem_type_id, buf, dims, str_len, & - hdferr, & - mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims ! number of strings - INTEGER(SIZE_T), INTENT(IN), DIMENSION(*) :: str_len ! Array to store - ! the lenght of each - ! element - CHARACTER(LEN=*), INTENT(IN), & - DIMENSION(dims(2)) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default -! CHARACTER, DIMENSION(dims(1)*dims(2)) :: tmp_buf - - INTERFACE - INTEGER FUNCTION h5dwrite_vl_string_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & -! xfer_prp_default, tmp_buf, dims, str_len) - xfer_prp_default, buf, dims, str_len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_VL_STRING_C'::h5dwrite_vl_string_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims - INTEGER(SIZE_T), INTENT(IN), DIMENSION(*) :: str_len -! CHARACTER, INTENT(IN), & -! DIMENSION(dims(1)*dims(2)) :: tmp_buf - CHARACTER(LEN=*), DIMENSION(dims(2)) :: buf - END FUNCTION h5dwrite_vl_string_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id -! do i = 1, dims(2) -! do j = 1, dims(1) -! tmp_buf((i-1)*dims(1) +j) = buf(i)(j:j) -! enddo -! enddo -! write(*,*) (tmp_buf(j:j), j=1,dims(1)*dims(2)) -! write(*,*) str_len(1), str_len(2), str_len(3), str_len(4) - - hdferr = h5dwrite_vl_string_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims, str_len) - - END SUBROUTINE h5dwrite_vl_string - - SUBROUTINE h5dread_vl_string(dset_id, mem_type_id, buf, dims, str_len, & + SUBROUTINE h5dread_vl_string(dset_id, mem_type_id, buf, dims, str_len, & hdferr, & mem_space_id, file_space_id, xfer_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims ! number of strings - INTEGER(SIZE_T), INTENT(OUT), DIMENSION(*) :: str_len ! Array to store - ! the lenght of each - ! element - CHARACTER(LEN=*), INTENT(OUT), & - DIMENSION(dims(2)) :: buf ! Data buffer - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id - ! Memory dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id - ! File dataspace identfier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp - ! Transfer property list identifier - - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default -! CHARACTER, DIMENSION(dims(1)*dims(2)) :: tmp_buf -! integer i, j - - INTERFACE - INTEGER FUNCTION h5dread_vl_string_c(dset_id, mem_type_id, & - mem_space_id_default, & - file_space_id_default, & -! xfer_prp_default, tmp_buf, dims, str_len) - xfer_prp_default, buf, dims, str_len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_VL_STRING_C'::h5dread_vl_string_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(IN) :: mem_type_id - INTEGER(HID_T) :: mem_space_id_default - INTEGER(HID_T) :: file_space_id_default - INTEGER(HID_T) :: xfer_prp_default - INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims - INTEGER(SIZE_T), INTENT(OUT), DIMENSION(*) :: str_len -! CHARACTER, INTENT(IN), & -! DIMENSION(dims(1)*dims(2)) :: tmp_buf - CHARACTER(LEN=*), DIMENSION(dims(2)) :: buf - END FUNCTION h5dread_vl_string_c - END INTERFACE - - - xfer_prp_default = H5P_DEFAULT_F - mem_space_id_default = H5S_ALL_F - file_space_id_default = H5S_ALL_F - - if (present(xfer_prp)) xfer_prp_default = xfer_prp - if (present(mem_space_id)) mem_space_id_default = mem_space_id - if (present(file_space_id)) file_space_id_default = file_space_id -! do i = 1, dims(2) -! do j = 1, dims(1) -! tmp_buf((i-1)*dims(1) +j) = buf(i)(j:j) -! enddo -! enddo -! write(*,*) (tmp_buf(j:j), j=1,dims(1)*dims(2)) -! write(*,*) str_len(1), str_len(2), str_len(3), str_len(4) - - hdferr = h5dread_vl_string_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, & - buf, dims, str_len) - RETURN - END SUBROUTINE h5dread_vl_string - -!---------------------------------------------------------------------- -! Name: h5dfill_integer -! -! Purpose: Fills dataspace elements with a fill value in a memory buffer. -! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes -! of the fillvalues and buffers are supported. Buffer and fillvalue -! are assumed to have the same datatype. -! Only one-dimesional buffers are supported. -! -! Inputs: -! fill_value - fill value -! space_id - memory space selection identifier -! buf - data buffer iin memory ro apply selection to -! - of k-th dimension of the buf array -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! -! Programmer: Elena Pourmal -! March 12, 2003 -! -!---------------------------------------------------------------------- - - SUBROUTINE h5dfill_integer(fill_value, space_id, buf, hdferr) - IMPLICIT NONE - INTEGER, INTENT(IN) :: fill_value ! Fill value - INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier - INTEGER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier - INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier - -! INTEGER, EXTERNAL :: h5dfill_integer_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dfill_integer_c(fill_value, fill_type_id, space_id, & - buf, mem_type_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DFILL_INTEGER_C'::h5dfill_integer_c - !DEC$ENDIF - INTEGER, INTENT(IN) :: fill_value ! Fill value - INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier - INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier - INTEGER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in - INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier - END FUNCTION h5dfill_integer_c - END INTERFACE - fill_type_id = H5T_NATIVE_INTEGER - mem_type_id = H5T_NATIVE_INTEGER - - hdferr = h5dfill_integer_c(fill_value, fill_type_id, space_id, & - buf, mem_type_id) - - END SUBROUTINE h5dfill_integer - -!---------------------------------------------------------------------- -! Name: h5dfill_real -! -! Purpose: Fills dataspace elements with a fill value in a memory buffer. -! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes -! of the fillvalues and buffers are supported. Buffer and fillvalue -! are assumed to have the same datatype. -! Only one-dimesional buffers are supported. -! -! Inputs: -! fill_value - fill value -! space_id - memory space selection identifier -! buf - data buffer iin memory ro apply selection to -! - of k-th dimension of the buf array -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! -! Programmer: Elena Pourmal -! March 12, 2003 -! -!---------------------------------------------------------------------- - - SUBROUTINE h5dfill_real(fill_valuer, space_id, buf, hdferr) - IMPLICIT NONE - REAL, INTENT(IN) :: fill_valuer ! Fill value - INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier - REAL, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier - INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier - -! INTEGER, EXTERNAL :: h5dfill_real_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dfill_real_c(fill_valuer, fill_type_id, space_id, & - buf, mem_type_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DFILL_REAL_C'::h5dfill_real_c - !DEC$ENDIF - REAL, INTENT(IN) :: fill_valuer ! Fill value - INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier - INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier - REAL, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in - INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier - END FUNCTION h5dfill_real_c - END INTERFACE - fill_type_id = H5T_NATIVE_REAL - mem_type_id = H5T_NATIVE_REAL - - hdferr = h5dfill_real_c(fill_valuer, fill_type_id, space_id, & - buf, mem_type_id) - END SUBROUTINE h5dfill_real - -!---------------------------------------------------------------------- -! Name: h5dfill_char -! -! Purpose: Fills dataspace elements with a fill value in a memory buffer. -! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes -! of the fillvalues and buffers are supported. Buffer and fillvalue -! are assumed to have the same datatype. -! Only one-dimesional buffers are supported. -! -! Inputs: -! fill_value - fill value -! space_id - memory space selection identifier -! buf - data buffer iin memory ro apply selection to -! - of k-th dimension of the buf array -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! -! Programmer: Elena Pourmal -! March 12, 2003 -! -!---------------------------------------------------------------------- - - SUBROUTINE h5dfill_char(fill_value, space_id, buf, hdferr) - IMPLICIT NONE - CHARACTER, INTENT(IN) :: fill_value ! Fill value - INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier - CHARACTER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier - INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier - -! INTEGER, EXTERNAL :: h5dfillc_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dfillc_c(fill_value, fill_type_id, space_id, & - buf, mem_type_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DFILLC_C'::h5dfillc_c - !DEC$ENDIF - CHARACTER, INTENT(IN) :: fill_value ! Fill value - INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier - INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier - CHARACTER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in - INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier - END FUNCTION h5dfillc_c - END INTERFACE - fill_type_id = H5T_NATIVE_CHARACTER - mem_type_id = H5T_NATIVE_CHARACTER - - hdferr = h5dfillc_c(fill_value, fill_type_id, space_id, & - buf, mem_type_id) - - END SUBROUTINE h5dfill_char - -!---------------------------------------------------------------------- -! Name: h5dget_space_status_f -! -! Purpose: Returns the status of data space allocation. -! -! Inputs: -! dset_id - dataset identifier -! Outputs: -! flag - status; may have one of the following values: -! H5D_SPACE_STS_ERROR_F -! H5D_SPACE_STS_NOT_ALLOCATED_F -! H5D_SPACE_STS_PART_ALLOCATED_F -! H5D_SPACE_STS_ALLOCATED_F -! hdferr: - error code -! Success: 0 -! Failure: -1 -! -! Programmer: Elena Pourmal -! March 12, 2003 -! -!---------------------------------------------------------------------- - - SUBROUTINE h5dget_space_status_f(dset_id, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataspace identifier - INTEGER, INTENT(IN) :: flag ! Memory buffer to fill in - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5dget_space_status_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5dget_space_status_c(dset_id, flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DGET_SPACE_STATUS_C'::h5dget_space_status_c - !DEC$ENDIF - INTEGER(HID_T) :: dset_id - INTEGER :: flag - END FUNCTION h5dget_space_status_c - END INTERFACE - - hdferr = h5dget_space_status_c(dset_id, flag) - END SUBROUTINE h5dget_space_status_f - -!---------------------------------------------------------------------- -! Name: h5dcreate_anon_f -! -! Purpose: Creates a dataset in a file without linking it into the file structure -! -! Inputs: -! loc_id - Identifier of the file or group within which to create the dataset. -! type_id - Identifier of the datatype to use when creating the dataset. -! space_id - Identifier of the dataspace to use when creating the dataset. -! Outputs: -! dset_id - dataset identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! dcpl_id - Dataset creation property list identifier. -! dapl_id - Dataset access property list identifier. -! -! Programmer: M. Scot Breitenfeld -! February 11, 2008 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5dcreate_anon_f(loc_id, type_id, space_id, dset_id, hdferr, dcpl_id, dapl_id) IMPLICIT NONE - 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) :: space_id ! Dataspace identifier. - INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier. - INTEGER, INTENT(OUT) :: hdferr ! Error code. - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dcpl_id ! Dataset creation property list identifier. - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dapl_id ! Dataset access property list identifier. - - INTEGER(HID_T) :: dcpl_id_default - INTEGER(HID_T) :: dapl_id_default + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims ! number of strings + INTEGER(SIZE_T), INTENT(OUT), DIMENSION(*) :: str_len ! Array to store + ! the length of each + ! element + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(2)) :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default -! -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE - INTEGER FUNCTION h5dcreate_anon_c(loc_id, type_id, space_id, dcpl_id_default, dapl_id_default, dset_id) + INTEGER FUNCTION h5dread_vl_string_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims, str_len) USE H5GLOBAL !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DCREATE_ANON_C'::h5dcreate_anon_c + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_VL_STRING_C'::h5dread_vl_string_c !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: loc_id - INTEGER(HID_T), INTENT(IN) :: type_id - INTEGER(HID_T), INTENT(IN) :: space_id - INTEGER(HID_T) :: dcpl_id_default - INTEGER(HID_T) :: dapl_id_default - INTEGER(HID_T), INTENT(OUT) :: dset_id - END FUNCTION h5dcreate_anon_c + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(2) :: dims + INTEGER(SIZE_T), INTENT(OUT), DIMENSION(*) :: str_len + CHARACTER(LEN=*), DIMENSION(dims(2)) :: buf + END FUNCTION h5dread_vl_string_c END INTERFACE - dcpl_id_default = H5P_DEFAULT_F - dapl_id_default = H5P_DEFAULT_F - - IF(PRESENT(dcpl_id)) dcpl_id_default = dcpl_id - IF(PRESENT(dapl_id)) dapl_id_default = dapl_id + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F - hdferr = h5dcreate_anon_c(loc_id, type_id, space_id, dcpl_id_default, dapl_id_default, dset_id) + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id - END SUBROUTINE h5dcreate_anon_f + hdferr = h5dread_vl_string_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims, str_len) + RETURN + END SUBROUTINE h5dread_vl_string -!---------------------------------------------------------------------- -! Name: h5dget_access_plist_f ! -! Purpose: Returns a copy of the dataset creation property list. +!****s* H5D/h5dget_space_f ! -! Inputs: -! dset_id - dataset identifier. -! Outputs: -! plist_id - the dataset access property list identifier. -! hdferr: - error code -! Success: 0 -! Failure: -1 +! NAME +! h5dget_space_f ! -! Programmer: M. Scot Breitenfeld -! April 13, 2009 +! PURPOSE +! Returns an identifier for a copy of the dataspace for a +! dataset. ! -! Modifications: +! INPUTS +! dataset_id - dataset identifier +! OUTPUTS +! dataspace_id - dataspace identifier +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5dget_access_plist_f(dset_id, plist_id, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! SOURCE + SUBROUTINE h5dget_space_f(dataset_id, dataspace_id, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(OUT) :: plist_id - INTEGER, INTENT(OUT) :: hdferr ! Error code. - + INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier + INTEGER(HID_T), INTENT(OUT) :: dataspace_id ! Dataspace identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTERFACE - INTEGER FUNCTION h5dget_access_plist_c(dset_id, plist_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DGET_ACCESS_PLIST_C'::h5dget_access_plist_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HID_T), INTENT(OUT) :: plist_id - END FUNCTION h5dget_access_plist_c - END INTERFACE - - hdferr = h5dget_access_plist_c(dset_id, plist_id) + INTEGER FUNCTION h5dget_space_c(dataset_id, dataspace_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DGET_SPACE_C'::h5dget_space_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dataset_id + INTEGER(HID_T), INTENT(OUT) :: dataspace_id + END FUNCTION h5dget_space_c + END INTERFACE - END SUBROUTINE h5dget_access_plist_f + hdferr = h5dget_space_c(dataset_id, dataspace_id) +END SUBROUTINE h5dget_space_f + +!****s* H5D/h5dget_access_plist_f +! +! NAME +! h5dget_access_plist_f +! +! PURPOSE +! Returns a copy of the dataset creation property list. +! +! INPUTS +! dset_id - Dataset identifier +! +! OUTPUTS +! plist_id - Dataset access property list identifier +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! M. Scot Breitenfeld +! April 13, 2009 +! +! SOURCE +SUBROUTINE h5dget_access_plist_f(dset_id, plist_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(OUT) :: plist_id + INTEGER , INTENT(OUT) :: hdferr +!***** + INTERFACE + INTEGER FUNCTION h5dget_access_plist_c(dset_id, plist_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DGET_ACCESS_PLIST_C'::h5dget_access_plist_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(OUT) :: plist_id + END FUNCTION h5dget_access_plist_c + END INTERFACE + + hdferr = h5dget_access_plist_c(dset_id, plist_id) + +END SUBROUTINE h5dget_access_plist_f END MODULE H5D diff --git a/fortran/src/H5Dff_F03.f90 b/fortran/src/H5Dff_F03.f90 new file mode 100644 index 0000000..c4c8599 --- /dev/null +++ b/fortran/src/H5Dff_F03.f90 @@ -0,0 +1,2912 @@ +!****h* ROBODoc/H5D (F03) +! +! NAME +! H5D_PROVISIONAL +! +! PURPOSE +! This file contains Fortran 90 and Fortran 2003 interfaces for H5D functions. +! It contains the same functions as H5Dff_DEPRECIATE.f90 but includes the +! Fortran 2003 functions and the interface listings. This file will be compiled +! instead of H5Dff_DEPRECIATE.f90 if Fortran 2003 functions are enabled. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! (1) The maximum rank of an array allowed in Fortran is 7, therefore +! we only provide an interface for arrays up to and including rank 7. +! +! (2) Unfortunately we are using a generic interface and one of the factors +! used in determining the proper routine to select is that of the array +! rank being passed. Therefore, we can not create just one subroutine for +! each array type (integer, real, etc...) and use a +! rank 1 array of assumed size to handle multiple ranks, i.e. +! (i.e. integer, dimension(*) :: ... ) +! (i.e. real , dimension(*) :: ... ) etc... +! +! (3) Could not place the USE ISO_C_BINDING in the module header because it may +! conflict with the USE ISO_C_BINDING included in the user's program. Moved +! the statement instead to each subroutine. +! +! +! (4) C_LOC and character strings according to the Fortran 2003 standard: +! +! 15.1.2.5 C_LOC(X) +! +! Argument. X shall either +! +! (A) have interoperable type and type parameters and be +! (a) a variable that has the TARGET attribute and is interoperable, +! (b) an allocated allocatable variable that has the TARGET attribute +! and is not an array of zero size, or +! (c) an associated scalar pointer, or +! (B) be a nonpolymorphic scalar, have no length type parameters, and be +! (a) a nonallocatable, nonpointer variable that has the TARGET attribute, +! (b) an allocated allocatable variable that has the TARGET attribute, or +! (c) an associated pointer. +! +! - When X is a character, for interoperability the standard is: +! +! 15.2.1 Interoperability of intrinsic types +! +! ...if the type is character, interoperability also requires that the length type parameter +! be omitted or be specified by an initialization expression whose value is one. +! +! THEREFORE compilers that have not extended the standard require the +! argument in C_LOC to be of the variant: +! +! CHARACTER(LEN=1), TARGET :: chr +! or +! CHARACTER, TARGET :: chr +! (B) +! *** IMPORTANT *** +! If you add a new H5D function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** + +MODULE H5D_PROVISIONAL + USE H5GLOBAL + + INTERFACE h5dwrite_f + + MODULE PROCEDURE h5dwrite_reference_obj + MODULE PROCEDURE h5dwrite_reference_dsetreg + MODULE PROCEDURE h5dwrite_integer_scalar + MODULE PROCEDURE h5dwrite_integer_1 + MODULE PROCEDURE h5dwrite_integer_2 + MODULE PROCEDURE h5dwrite_integer_3 + MODULE PROCEDURE h5dwrite_integer_4 + MODULE PROCEDURE h5dwrite_integer_5 + MODULE PROCEDURE h5dwrite_integer_6 + MODULE PROCEDURE h5dwrite_integer_7 + MODULE PROCEDURE h5dwrite_char_scalar + MODULE PROCEDURE h5dwrite_char_1 + MODULE PROCEDURE h5dwrite_char_2 + MODULE PROCEDURE h5dwrite_char_3 + MODULE PROCEDURE h5dwrite_char_4 + MODULE PROCEDURE h5dwrite_char_5 + MODULE PROCEDURE h5dwrite_char_6 + MODULE PROCEDURE h5dwrite_char_7 + MODULE PROCEDURE h5dwrite_real_scalar + MODULE PROCEDURE h5dwrite_real_1 + MODULE PROCEDURE h5dwrite_real_2 + MODULE PROCEDURE h5dwrite_real_3 + MODULE PROCEDURE h5dwrite_real_4 + MODULE PROCEDURE h5dwrite_real_5 + MODULE PROCEDURE h5dwrite_real_6 + MODULE PROCEDURE h5dwrite_real_7 + + ! This is the preferred way to call h5dwrite + ! by passing an address + MODULE PROCEDURE h5dwrite_ptr + + END INTERFACE + + INTERFACE h5dread_f + + MODULE PROCEDURE h5dread_reference_obj + MODULE PROCEDURE h5dread_reference_dsetreg + MODULE PROCEDURE h5dread_integer_scalar + MODULE PROCEDURE h5dread_integer_1 + MODULE PROCEDURE h5dread_integer_2 + MODULE PROCEDURE h5dread_integer_3 + MODULE PROCEDURE h5dread_integer_4 + MODULE PROCEDURE h5dread_integer_5 + MODULE PROCEDURE h5dread_integer_6 + MODULE PROCEDURE h5dread_integer_7 + MODULE PROCEDURE h5dread_char_scalar + MODULE PROCEDURE h5dread_char_1 + MODULE PROCEDURE h5dread_char_2 + MODULE PROCEDURE h5dread_char_3 + MODULE PROCEDURE h5dread_char_4 + MODULE PROCEDURE h5dread_char_5 + MODULE PROCEDURE h5dread_char_6 + MODULE PROCEDURE h5dread_char_7 + MODULE PROCEDURE h5dread_real_scalar + MODULE PROCEDURE h5dread_real_1 + MODULE PROCEDURE h5dread_real_2 + MODULE PROCEDURE h5dread_real_3 + MODULE PROCEDURE h5dread_real_4 + MODULE PROCEDURE h5dread_real_5 + MODULE PROCEDURE h5dread_real_6 + MODULE PROCEDURE h5dread_real_7 + + ! This is the preferred way to call h5dread + ! by passing an address + MODULE PROCEDURE h5dread_ptr + + END INTERFACE + +! Interface for the function used to pass the C pointer of the buffer +! to the C H5Dwrite routine + + INTERFACE + INTEGER FUNCTION h5dwrite_f_c(dset_id, mem_type_id, & + mem_space_id_default , & + file_space_id_default, & + xfer_prp_default, buf ) + USE H5GLOBAL + USE, INTRINSIC :: ISO_C_BINDING + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_F_C'::h5dwrite_f_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + TYPE(C_PTR), VALUE :: buf + END FUNCTION h5dwrite_f_c + END INTERFACE + +! Interface for the function used to pass the C pointer of the buffer +! to the C H5Dread routine + + INTERFACE + INTEGER FUNCTION h5dread_f_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf) + USE H5GLOBAL + USE, INTRINSIC :: ISO_C_BINDING + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_F_C'::h5dread_f_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + TYPE(C_PTR), VALUE :: buf + END FUNCTION h5dread_f_c + END INTERFACE + + INTERFACE h5dfill_f + MODULE PROCEDURE h5dfill_integer + MODULE PROCEDURE h5dfill_real + MODULE PROCEDURE h5dfill_char + END INTERFACE + +! Interface for the function used to pass the C pointer of the buffer +! to the C H5Dfill routine + + INTERFACE + INTEGER FUNCTION h5dfill_c(f_ptr_fill_value, fill_type_id, space_id, & + f_ptr_buf, mem_type_id) + USE H5GLOBAL + USE, INTRINSIC :: ISO_C_BINDING + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DFILL_C'::h5dfill_c + !DEC$ENDIF + TYPE(C_PTR), VALUE :: f_ptr_fill_value + INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier + INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier + TYPE(C_PTR), VALUE :: f_ptr_buf + INTEGER(HID_T) :: mem_type_id + END FUNCTION h5dfill_c + END INTERFACE + +CONTAINS + + SUBROUTINE h5dwrite_reference_obj(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: dims ! size of the bufffer buf + TYPE(hobj_ref_t_f), DIMENSION(dims(1)), INTENT(IN), TARGET :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf(1)) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + + END SUBROUTINE h5dwrite_reference_obj + + SUBROUTINE h5dwrite_reference_dsetreg(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: dims ! size of the bufffer buf + TYPE(hdset_reg_ref_t_f), DIMENSION(dims(1)), INTENT(IN), TARGET :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf + INTEGER :: i,j + TYPE(C_PTR) :: f_ptr + INTERFACE + INTEGER FUNCTION h5dwrite_ref_reg_c(dset_id, mem_type_id,& + mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REF_REG_C'::h5dwrite_ref_reg_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER, DIMENSION(*) :: ref_buf + INTEGER(HSIZE_T), DIMENSION(*) :: dims + END FUNCTION h5dwrite_ref_reg_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf(1)) + + ALLOCATE(ref_buf(REF_REG_BUF_LEN*dims(1)), stat=hdferr) + IF (hdferr .NE. 0 ) THEN + hdferr = -1 + RETURN + ELSE + DO j = 1, dims(1) + DO i = 1, REF_REG_BUF_LEN + ref_buf(REF_REG_BUF_LEN*(j-1) + i) = buf(j)%ref(i) + ENDDO + ENDDO + ENDIF + hdferr = h5dwrite_ref_reg_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + DEALLOCATE(ref_buf) + + END SUBROUTINE h5dwrite_reference_dsetreg + + + SUBROUTINE h5dwrite_integer_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER, INTENT(IN), TARGET :: buf ! Data buffer + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_integer_scalar + + SUBROUTINE h5dwrite_integer_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_integer_1 + + SUBROUTINE h5dwrite_integer_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2)),TARGET :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_integer_2 + + SUBROUTINE h5dwrite_integer_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_integer_3 + + SUBROUTINE h5dwrite_integer_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_integer_4 + + SUBROUTINE h5dwrite_integer_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_integer_5 + + SUBROUTINE h5dwrite_integer_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_integer_6 + + SUBROUTINE h5dwrite_integer_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_integer_7 + + SUBROUTINE h5dwrite_char_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(*), INTENT(IN), TARGET :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + CALL h5dwrite_char_scalar_fix(dset_id, mem_type_id, buf, LEN(buf), dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + + END SUBROUTINE h5dwrite_char_scalar + + SUBROUTINE h5dwrite_char_scalar_fix(dset_id, mem_type_id, buf, buf_len, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN) :: buf_len + CHARACTER(LEN=buf_len), INTENT(IN), TARGET :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1:1)) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_char_scalar_fix + + SUBROUTINE h5dwrite_char_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), DIMENSION(dims(1)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1)(1:1)) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_char_1 + + SUBROUTINE h5dwrite_char_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1,1)(1:1)) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_char_2 + + SUBROUTINE h5dwrite_char_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1,1,1)(1:1)) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_char_3 + + SUBROUTINE h5dwrite_char_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1,1,1,1)(1:1)) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_char_4 + + SUBROUTINE h5dwrite_char_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1,1,1,1,1)(1:1)) + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_char_5 + + SUBROUTINE h5dwrite_char_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1,1,1,1,1,1)(1:1)) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_char_6 + + SUBROUTINE h5dwrite_char_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1,1,1,1,1,1,1)(1:1)) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_char_7 + + + SUBROUTINE h5dwrite_real_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), TARGET :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_real_scalar + + + SUBROUTINE h5dwrite_real_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_real_1 + + SUBROUTINE h5dwrite_real_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_real_2 + + SUBROUTINE h5dwrite_real_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_real_3 + + SUBROUTINE h5dwrite_real_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_real_4 + + SUBROUTINE h5dwrite_real_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_real_5 + + SUBROUTINE h5dwrite_real_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_real_6 + + SUBROUTINE h5dwrite_real_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_real_7 + + SUBROUTINE h5dwrite_double_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(IN), TARGET :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_double_scalar + + SUBROUTINE h5dwrite_double_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_double_1 + + SUBROUTINE h5dwrite_double_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_double_2 + + SUBROUTINE h5dwrite_double_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_double_3 + + SUBROUTINE h5dwrite_double_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_double_4 + + SUBROUTINE h5dwrite_double_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_double_5 + + SUBROUTINE h5dwrite_double_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf + ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_double_6 + + SUBROUTINE h5dwrite_double_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf + ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dwrite_double_7 + +! +! NAME +! h5dread_f +! +! PURPOSE +! Reads raw data from the specified dataset into buf, +! converting from file datatype and dataspace to memory +! datatype and dataspace. +! +! INPUTS +! dset_id - dataset identifier +! mem_type_id - memory type identifier +! dims - 1-dim array of size 7; dims(k) has the size +! - of k-th dimension of the buf array +! OUTPUTS +! buf - buffer to read data in +! hdferr: - error code +! Success: 0 +! Failure: -1 +! OPTIONAL PARAMETERS +! mem_space_id - memory dataspace identifier +! file_space_id - file dataspace identifier +! xfer_prp - trasfer property list identifier +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! dims parameter was added to make code portable; +! n parameter was replaced with dims parameter in +! the h5dwrite_reference_obj and h5dwrite_reference_dsetreg +! functions. April 2, 2001 +! +! NOTES +! This function is overloaded to read INTEGER, +! REAL, DOUBLE PRECISION and CHARACTER buffers +! up to 7 dimensions, and one dimensional buffers +! of the TYPE(hobj_ref_t_f) and TYPE(hdset_reg_ref_t_f) +! types. +! + SUBROUTINE h5dread_reference_obj(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + TYPE(hobj_ref_t_f), INTENT(INOUT) , & + DIMENSION(dims(1)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf(1)) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_reference_obj + + SUBROUTINE h5dread_reference_dsetreg(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + TYPE(hdset_reg_ref_t_f), INTENT(INOUT), & + DIMENSION(dims(1)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf + INTEGER :: i,j + INTERFACE + INTEGER FUNCTION h5dread_ref_reg_c(dset_id, mem_type_id,& + mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REF_REG_C'::h5dread_ref_reg_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, DIMENSION(*) :: ref_buf + END FUNCTION h5dread_ref_reg_c + END INTERFACE + + ALLOCATE(ref_buf(REF_REG_BUF_LEN*dims(1)), stat=hdferr) + IF (hdferr .NE. 0) THEN + hdferr = -1 + RETURN + ENDIF + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_ref_reg_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + + DO j = 1, dims(1) + DO i = 1, REF_REG_BUF_LEN + buf(j)%ref(i) = ref_buf(REF_REG_BUF_LEN*(j-1) + i) + ENDDO + ENDDO + DEALLOCATE(ref_buf) + + END SUBROUTINE h5dread_reference_dsetreg + + + SUBROUTINE h5dread_integer_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT) , TARGET :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + + END SUBROUTINE h5dread_integer_scalar + + SUBROUTINE h5dread_integer_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_integer_1 + + SUBROUTINE h5dread_integer_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_integer_2 + + SUBROUTINE h5dread_integer_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_integer_3 + + SUBROUTINE h5dread_integer_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_integer_4 + + SUBROUTINE h5dread_integer_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_integer_5 + + SUBROUTINE h5dread_integer_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_integer_6 + + SUBROUTINE h5dread_integer_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_integer_7 + + SUBROUTINE h5dread_char_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT) :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + CALL h5dread_char_scalar_fix(dset_id, mem_type_id, buf, LEN(buf), dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + + END SUBROUTINE h5dread_char_scalar + + SUBROUTINE h5dread_char_scalar_fix(dset_id, mem_type_id, buf, buf_len, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN) :: buf_len + CHARACTER(LEN=buf_len), INTENT(INOUT), TARGET :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1:1)) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_char_scalar_fix + + SUBROUTINE h5dread_char_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1)(1:1)) + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_char_1 + + SUBROUTINE h5dread_char_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1,1)(1:1)) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_char_2 + + SUBROUTINE h5dread_char_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1,1,1)(1:1)) + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_char_3 + + SUBROUTINE h5dread_char_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1,1,1,1)(1:1)) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_char_4 + + SUBROUTINE h5dread_char_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1,1,1,1,1)(1:1)) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_char_5 + + SUBROUTINE h5dread_char_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1,1,1,1,1,1)(1:1)) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_char_6 + + SUBROUTINE h5dread_char_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf(1,1,1,1,1,1,1)(1:1)) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_char_7 + + SUBROUTINE h5dread_real_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT) , TARGET :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_real_scalar + + SUBROUTINE h5dread_real_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_real_1 + + SUBROUTINE h5dread_real_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_real_2 + + SUBROUTINE h5dread_real_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_real_3 + + SUBROUTINE h5dread_real_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3), dims(4)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_real_4 + + SUBROUTINE h5dread_real_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_real_5 + + SUBROUTINE h5dread_real_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_real_6 + + SUBROUTINE h5dread_real_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_real_7 + + SUBROUTINE h5dread_double_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(INOUT) , TARGET :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_double_scalar + + SUBROUTINE h5dread_double_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf) + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_double_1 + + SUBROUTINE h5dread_double_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf) + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_double_2 + + SUBROUTINE h5dread_double_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf) + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_double_3 + + SUBROUTINE h5dread_double_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) , TARGET :: buf + ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf) + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_double_4 + + SUBROUTINE h5dread_double_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) , TARGET :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + + f_ptr = C_LOC(buf) + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_double_5 + + SUBROUTINE h5dread_double_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) , TARGET :: buf + ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_double_6 + + SUBROUTINE h5dread_double_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) , TARGET :: buf + ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + TYPE(C_PTR) :: f_ptr + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF(PRESENT(file_space_id)) file_space_id_default = file_space_id + f_ptr = C_LOC(buf) + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, f_ptr) + + END SUBROUTINE h5dread_double_7 + + SUBROUTINE h5dwrite_ptr(dset_id, mem_type_id, buf, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + TYPE(C_PTR), INTENT(INOUT) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf) + + END SUBROUTINE h5dwrite_ptr + + SUBROUTINE h5dread_ptr(dset_id, mem_type_id, buf, hdferr, & + mem_space_id, file_space_id, xfer_prp) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + TYPE(C_PTR), INTENT(INOUT) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf) + + END SUBROUTINE h5dread_ptr + +! +! NAME +! h5dfill_integer +! +! PURPOSE +! Fills dataspace elements with a fill value in a memory buffer. +! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes +! of the fillvalues and buffers are supported. Buffer and fillvalue +! are assumed to have the same datatype. +! Only one-dimesional buffers are supported. +! +! INPUTS +! fill_value - fill value +! space_id - memory space selection identifier +! buf - data buffer iin memory ro apply selection to +! - of k-th dimension of the buf array +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! March 12, 2003 +! +! + + SUBROUTINE h5dfill_integer(fill_value, space_id, buf, hdferr) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER, INTENT(IN), TARGET :: fill_value ! Fill value + INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier + INTEGER, INTENT(IN), DIMENSION(*), TARGET :: buf ! Memory buffer to fill in + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier + INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier + + TYPE(C_PTR) :: f_ptr_fill_value ! C pointer to fill_value + TYPE(C_PTR) :: f_ptr_buf ! C pointer to buf + + f_ptr_fill_value = C_LOC(fill_value) + f_ptr_buf = C_LOC(buf(1)) + + fill_type_id = H5T_NATIVE_INTEGER + mem_type_id = H5T_NATIVE_INTEGER + + hdferr = h5dfill_c(f_ptr_fill_value, fill_type_id, space_id, & + f_ptr_buf, mem_type_id) + + END SUBROUTINE h5dfill_integer + +! +! NAME +! h5dfill_real +! +! PURPOSE +! Fills dataspace elements with a fill value in a memory buffer. +! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes +! of the fillvalues and buffers are supported. Buffer and fillvalue +! are assumed to have the same datatype. +! Only one-dimesional buffers are supported. +! +! INPUTS +! fill_value - fill value +! space_id - memory space selection identifier +! buf - data buffer iin memory ro apply selection to +! - of k-th dimension of the buf array +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! March 12, 2003 +! + SUBROUTINE h5dfill_real(fill_valuer, space_id, buf, hdferr) + USE ISO_C_BINDING + IMPLICIT NONE + REAL, INTENT(IN), TARGET :: fill_valuer ! Fill value + INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier + REAL, INTENT(IN), DIMENSION(*), TARGET :: buf ! Memory buffer to fill in + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier + INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier + + TYPE(C_PTR) :: f_ptr_fill_valuer ! C pointer to fill_value + TYPE(C_PTR) :: f_ptr_buf ! C pointer to buf + + f_ptr_fill_valuer = C_LOC(fill_valuer) + f_ptr_buf = C_LOC(buf(1)) + + fill_type_id = H5T_NATIVE_REAL + mem_type_id = H5T_NATIVE_REAL + + hdferr = h5dfill_c(f_ptr_fill_valuer, fill_type_id, space_id, & + f_ptr_buf, mem_type_id) + + END SUBROUTINE h5dfill_real + +! +! NAME +! h5dfill_double +! +! PURPOSE +! Fills dataspace elements with a fill value in a memory buffer. +! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes +! of the fillvalues and buffers are supported. Buffer and fillvalue +! are assumed to have the same datatype. +! Only one-dimesional buffers are supported. +! +! INPUTS +! fill_value - fill value +! space_id - memory space selection identifier +! buf - data buffer iin memory ro apply selection to +! - of k-th dimension of the buf array +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! March 12, 2003 +! + SUBROUTINE h5dfill_double(fill_value, space_id, buf, hdferr) + USE ISO_C_BINDING + IMPLICIT NONE + DOUBLE PRECISION, INTENT(IN), TARGET :: fill_value ! Fill value + INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier + DOUBLE PRECISION, INTENT(IN), DIMENSION(*), TARGET :: buf ! Memory buffer to fill in + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier + INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier + + TYPE(C_PTR) :: f_ptr_fill_value ! C pointer to fill_value + TYPE(C_PTR) :: f_ptr_buf ! C pointer to buf + + f_ptr_fill_value = C_LOC(fill_value) + f_ptr_buf = C_LOC(buf(1)) + + fill_type_id = H5T_NATIVE_DOUBLE + mem_type_id = H5T_NATIVE_DOUBLE + + hdferr = h5dfill_c(f_ptr_fill_value, fill_type_id, space_id, & + f_ptr_buf, mem_type_id) + + END SUBROUTINE h5dfill_double + +! +! NAME +! h5dfill_char +! +! PURPOSE +! Fills dataspace elements with a fill value in a memory buffer. +! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes +! of the fillvalues and buffers are supported. Buffer and fillvalue +! are assumed to have the same datatype. +! Only one-dimesional buffers are supported. +! +! INPUTS +! fill_value - fill value +! space_id - memory space selection identifier +! buf - data buffer iin memory ro apply selection to +! - of k-th dimension of the buf array +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! March 12, 2003 +! + SUBROUTINE h5dfill_char(fill_value, space_id, buf, hdferr) + USE ISO_C_BINDING + IMPLICIT NONE + CHARACTER, INTENT(IN), TARGET :: fill_value ! Fill value + INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier + CHARACTER, INTENT(IN), DIMENSION(*), TARGET :: buf ! Memory buffer to fill in + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier + INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier + + TYPE(C_PTR) :: f_ptr_fill_value ! C pointer to fill_value + TYPE(C_PTR) :: f_ptr_buf ! C pointer to buf + + f_ptr_fill_value = C_LOC(fill_value) + f_ptr_buf = C_LOC(buf(1)) + + hdferr = h5dfill_c(f_ptr_fill_value, fill_type_id, space_id, & + f_ptr_buf, mem_type_id) + + END SUBROUTINE h5dfill_char +! +!****s* H5D/h5dvlen_reclaim +! NAME +! h5dvlen_reclaim +! +! PURPOSE +! Reclaims VL datatype memory buffers. +! +! INPUTS +! +! type_id - Identifier of the datatype. +! space_id - Identifier of the dataspace. +! plist_id - Identifier of the property list used to create the buffer. +! buf - Pointer to the buffer to be reclaimed. +! +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! M. Scot Breitenfeld +! January 11, 2011 +! +! SOURCE + SUBROUTINE H5Dvlen_reclaim_f(type_id, space_id, plist_id, buf, hdferr) + + USE ISO_C_BINDING + IMPLICIT NONE + + INTEGER(HID_T), INTENT(IN) :: type_id ! Identifier of the datatype. + INTEGER(HID_T), INTENT(IN) :: space_id ! Identifier of the dataspace. + INTEGER(HID_T), INTENT(IN) :: plist_id ! Identifier of the property list used to create the buffer. + TYPE(C_PTR), INTENT(INOUT) :: buf ! Pointer to the buffer to be reclaimed. + INTEGER, INTENT(OUT) :: hdferr ! Error code. +!***** + + INTERFACE + INTEGER FUNCTION h5dvlen_reclaim_c(type_id, space_id, plist_id, buf) + USE H5GLOBAL + USE, INTRINSIC :: ISO_C_BINDING + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DVLEN_RECLAIM_C'::h5dvlen_reclaim_c + !DEC$ENDIF + INTEGER(HID_T) :: type_id + INTEGER(HID_T) :: space_id + INTEGER(HID_T) :: plist_id + TYPE(C_PTR), VALUE :: buf + END FUNCTION h5dvlen_reclaim_c + END INTERFACE + + hdferr = H5Dvlen_reclaim_c(type_id, space_id, plist_id, buf) + + END SUBROUTINE H5Dvlen_reclaim_f + +END MODULE H5D_PROVISIONAL + + diff --git a/fortran/src/H5Dff_F90.f90 b/fortran/src/H5Dff_F90.f90 new file mode 100644 index 0000000..3bb0fc0 --- /dev/null +++ b/fortran/src/H5Dff_F90.f90 @@ -0,0 +1,3002 @@ +!****h* ROBODoc/H5D (F90) +! +! NAME +! +! H5D_PROVISIONAL +! +! PURPOSE +! +! This file contains Fortran 90 interfaces for H5D functions. It contains +! the same functions as H5Dff_F03.f90 but excludes the Fortran 2003 functions +! and the interface listings. This file will be compiled instead of H5Dff_F03.f90 +! if Fortran 2003 functions are not enabled. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! (1) The maximum rank of an array allowed in Fortran is 7, therefore +! we only provide an interface for arrays up to and including rank 7. +! +! (2) Unfortunately we are using a generic interface and one of the factors +! used in determining the proper routine to select is that of the array +! rank being passed, therefore we can not create just one subroutine for +! each array type (integer, real, etc...) of various ranks and then use a +! rank 1 array of assumed size in the just one subroutine, +! (i.e. integer, dimension(*) :: ... ) +! (i.e. real , dimension(*) :: ... ) etc... +! +! (3) +! *** IMPORTANT *** +! If you add a new H5D function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +!***** + +MODULE H5D_PROVISIONAL + USE H5GLOBAL + + INTERFACE h5dwrite_f + + MODULE PROCEDURE h5dwrite_reference_obj + MODULE PROCEDURE h5dwrite_reference_dsetreg + MODULE PROCEDURE h5dwrite_integer_scalar + MODULE PROCEDURE h5dwrite_integer_1 + MODULE PROCEDURE h5dwrite_integer_2 + MODULE PROCEDURE h5dwrite_integer_3 + MODULE PROCEDURE h5dwrite_integer_4 + MODULE PROCEDURE h5dwrite_integer_5 + MODULE PROCEDURE h5dwrite_integer_6 + MODULE PROCEDURE h5dwrite_integer_7 + MODULE PROCEDURE h5dwrite_char_scalar + MODULE PROCEDURE h5dwrite_char_1 + MODULE PROCEDURE h5dwrite_char_2 + MODULE PROCEDURE h5dwrite_char_3 + MODULE PROCEDURE h5dwrite_char_4 + MODULE PROCEDURE h5dwrite_char_5 + MODULE PROCEDURE h5dwrite_char_6 + MODULE PROCEDURE h5dwrite_char_7 + MODULE PROCEDURE h5dwrite_real_scalar + MODULE PROCEDURE h5dwrite_real_1 + MODULE PROCEDURE h5dwrite_real_2 + MODULE PROCEDURE h5dwrite_real_3 + MODULE PROCEDURE h5dwrite_real_4 + MODULE PROCEDURE h5dwrite_real_5 + MODULE PROCEDURE h5dwrite_real_6 + MODULE PROCEDURE h5dwrite_real_7 + + END INTERFACE + + INTERFACE h5dread_f + + MODULE PROCEDURE h5dread_reference_obj + MODULE PROCEDURE h5dread_reference_dsetreg + MODULE PROCEDURE h5dread_integer_scalar + MODULE PROCEDURE h5dread_integer_1 + MODULE PROCEDURE h5dread_integer_2 + MODULE PROCEDURE h5dread_integer_3 + MODULE PROCEDURE h5dread_integer_4 + MODULE PROCEDURE h5dread_integer_5 + MODULE PROCEDURE h5dread_integer_6 + MODULE PROCEDURE h5dread_integer_7 + MODULE PROCEDURE h5dread_char_scalar + MODULE PROCEDURE h5dread_char_1 + MODULE PROCEDURE h5dread_char_2 + MODULE PROCEDURE h5dread_char_3 + MODULE PROCEDURE h5dread_char_4 + MODULE PROCEDURE h5dread_char_5 + MODULE PROCEDURE h5dread_char_6 + MODULE PROCEDURE h5dread_char_7 + MODULE PROCEDURE h5dread_real_scalar + MODULE PROCEDURE h5dread_real_1 + MODULE PROCEDURE h5dread_real_2 + MODULE PROCEDURE h5dread_real_3 + MODULE PROCEDURE h5dread_real_4 + MODULE PROCEDURE h5dread_real_5 + MODULE PROCEDURE h5dread_real_6 + MODULE PROCEDURE h5dread_real_7 + END INTERFACE + + INTERFACE h5dfill_f + MODULE PROCEDURE h5dfill_integer + MODULE PROCEDURE h5dfill_real + MODULE PROCEDURE h5dfill_char + END INTERFACE + +CONTAINS + +!****s* H5D/h5dread_f +! +! NAME +! h5dread_f +! +! PURPOSE +! Reads raw data from the specified dataset into buf, +! converting from file datatype and dataspace to memory +! datatype and dataspace. +! +! INPUTS +! dset_id - dataset identifier +! mem_type_id - memory type identifier +! dims - 1-dim array of size 7; dims(k) has the size +! of k-th dimension of the buf array +! OUTPUTS +! buf - buffer to read data in +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! OPTIONAL PARAMETERS +! mem_space_id - memory dataspace identifier +! file_space_id - file dataspace identifier +! xfer_prp - trasfer property list identifier +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! dims parameter was added to make code portable; +! n parameter was replaced with dims parameter in +! the h5dwrite_reference_obj and h5dwrite_reference_dsetreg +! functions. April 2, 2001 +! +! NOTES +! This function is overloaded to read INTEGER, +! REAL, DOUBLE PRECISION and CHARACTER buffers +! up to 7 dimensions, and one dimensional buffers +! of the TYPE(hobj_ref_t_f) and TYPE(hdset_reg_ref_t_f) types. +!***** + SUBROUTINE h5dread_reference_obj(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + TYPE(hobj_ref_t_f), INTENT(INOUT) , & + DIMENSION(dims(1)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HADDR_T), ALLOCATABLE, DIMENSION(:) :: ref_buf + INTEGER :: j + + INTERFACE + INTEGER FUNCTION h5dread_ref_obj_c(dset_id, mem_type_id,& + mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REF_OBJ_C'::h5dread_ref_obj_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER(HADDR_T), DIMENSION(*) :: ref_buf + END FUNCTION h5dread_ref_obj_c + END INTERFACE + + ALLOCATE(ref_buf(dims(1)), stat=hdferr) + IF (hdferr .NE. 0) THEN + hdferr = -1 + RETURN + ENDIF + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_ref_obj_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + DO j = 1, dims(1) + buf(j)%ref = ref_buf(j) + ENDDO + DEALLOCATE(ref_buf) + END SUBROUTINE h5dread_reference_obj + + SUBROUTINE h5dread_reference_dsetreg(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + TYPE(hdset_reg_ref_t_f), INTENT(INOUT), & + DIMENSION(dims(1)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf + INTEGER :: i,j + + INTERFACE + INTEGER FUNCTION h5dread_ref_reg_c(dset_id, mem_type_id,& + mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REF_REG_C'::h5dread_ref_reg_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, DIMENSION(*) :: ref_buf + END FUNCTION h5dread_ref_reg_c + END INTERFACE + + ALLOCATE(ref_buf(REF_REG_BUF_LEN*dims(1)), stat=hdferr) + IF (hdferr .NE. 0) THEN + hdferr = -1 + RETURN + ENDIF + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_ref_reg_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + + DO j = 1, dims(1) + DO i = 1, REF_REG_BUF_LEN + buf(j)%ref(i) = ref_buf(REF_REG_BUF_LEN*(j-1) + i) + ENDDO + ENDDO + DEALLOCATE(ref_buf) + END SUBROUTINE h5dread_reference_dsetreg + + SUBROUTINE h5dread_integer_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT) :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dread_integer_s_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_S_C'::h5dread_integer_s_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(OUT) :: buf + END FUNCTION h5dread_integer_s_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_integer_s_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_integer_scalar + + SUBROUTINE h5dread_integer_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), DIMENSION(dims(1)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dread_integer_1_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_1_C'::h5dread_integer_1_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(OUT), DIMENSION(dims(1)) :: buf + END FUNCTION h5dread_integer_1_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_integer_1_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_integer_1 + + SUBROUTINE h5dread_integer_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), DIMENSION(dims(1),dims(2)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dread_integer_2_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_2_C'::h5dread_integer_2_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(OUT), DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dread_integer_2_c + END INTERFACE + + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_integer_2_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims) + + END SUBROUTINE h5dread_integer_2 + + SUBROUTINE h5dread_integer_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + ! + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5dread_integer_3_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_3_C'::h5dread_integer_3_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(OUT), DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dread_integer_3_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_integer_3_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims) + + END SUBROUTINE h5dread_integer_3 + + SUBROUTINE h5dread_integer_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + ! + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5dread_integer_4_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_4_C'::h5dread_integer_4_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(OUT), DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5dread_integer_4_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_integer_4_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims) + + END SUBROUTINE h5dread_integer_4 + + SUBROUTINE h5dread_integer_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + ! + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5dread_integer_5_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_5_C'::h5dread_integer_5_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dread_integer_5_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_integer_5_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims) + + END SUBROUTINE h5dread_integer_5 + + SUBROUTINE h5dread_integer_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + + INTERFACE + INTEGER FUNCTION h5dread_integer_6_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_6_C'::h5dread_integer_6_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dread_integer_6_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_integer_6_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims) + + END SUBROUTINE h5dread_integer_6 + + SUBROUTINE h5dread_integer_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dread_integer_7_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_INTEGER_7_C'::h5dread_integer_7_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dread_integer_7_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_integer_7_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims) + + END SUBROUTINE h5dread_integer_7 + + SUBROUTINE h5dread_char_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT) :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dreadc_s_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_S_C'::h5dreadc_s_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(OUT) :: buf + END FUNCTION h5dreadc_s_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dreadc_s_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_char_scalar + + SUBROUTINE h5dread_char_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dreadc_1_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_1_C'::h5dreadc_1_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5dreadc_1_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dreadc_1_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_char_1 + + SUBROUTINE h5dread_char_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + + INTERFACE + INTEGER FUNCTION h5dreadc_2_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_2_C'::h5dreadc_2_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dreadc_2_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dreadc_2_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_char_2 + + SUBROUTINE h5dread_char_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dreadc_3_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_3_C'::h5dreadc_3_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dreadc_3_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dreadc_3_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_char_3 + + SUBROUTINE h5dread_char_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dreadc_4_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_4_C'::h5dreadc_4_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5dreadc_4_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dreadc_4_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_char_4 + + SUBROUTINE h5dread_char_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dreadc_5_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_5_C'::h5dreadc_5_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dreadc_5_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dreadc_5_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_char_5 + + SUBROUTINE h5dread_char_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dreadc_6_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_6_C'::h5dreadc_6_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dreadc_6_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dreadc_6_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_char_6 + + SUBROUTINE h5dread_char_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dreadc_7_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREADC_7_C'::h5dreadc_7_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dreadc_7_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dreadc_7_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_char_7 + + SUBROUTINE h5dread_real_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT) :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dread_real_s_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_S_C'::h5dread_real_s_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(OUT) :: buf + END FUNCTION h5dread_real_s_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_real_s_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_real_scalar + + SUBROUTINE h5dread_real_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + ! INTEGER, EXTERNAL :: h5dread_real_1_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5dread_real_1_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_1_C'::h5dread_real_1_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5dread_real_1_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_real_1_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_real_1 + + SUBROUTINE h5dread_real_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dread_real_2_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_2_C'::h5dread_real_2_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dread_real_2_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_real_2_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_real_2 + + SUBROUTINE h5dread_real_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dread_real_3_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_3_C'::h5dread_real_3_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dread_real_3_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_real_3_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_real_3 + + SUBROUTINE h5dread_real_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3), dims(4)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dread_real_4_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_4_C'::h5dread_real_4_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3), dims(4)) :: buf + END FUNCTION h5dread_real_4_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_real_4_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_real_4 + + SUBROUTINE h5dread_real_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dread_real_5_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_5_C'::h5dread_real_5_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dread_real_5_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_real_5_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_real_5 + + SUBROUTINE h5dread_real_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dread_real_6_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_6_C'::h5dread_real_6_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dread_real_6_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_real_6_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_real_6 + + SUBROUTINE h5dread_real_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dread_real_7_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DREAD_REAL_7_C'::h5dread_real_7_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dread_real_7_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dread_real_7_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dread_real_7 + + SUBROUTINE h5dwrite_reference_obj(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: dims ! size of the bufffer buf + TYPE(hobj_ref_t_f), DIMENSION(dims(1)), INTENT(IN) :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HADDR_T), ALLOCATABLE, DIMENSION(:) :: ref_buf + INTEGER :: j + + INTERFACE + INTEGER FUNCTION h5dwrite_ref_obj_c(dset_id, mem_type_id,& + mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REF_OBJ_C'::h5dwrite_ref_obj_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HADDR_T), DIMENSION(*) :: ref_buf + INTEGER(HSIZE_T), DIMENSION(*) :: dims + END FUNCTION h5dwrite_ref_obj_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + ALLOCATE(ref_buf(dims(1)), stat=hdferr) + IF (hdferr .NE. 0 ) THEN + hdferr = -1 + RETURN + ELSE + DO j = 1, dims(1) + ref_buf(j) = buf(j)%ref + ENDDO + ENDIF + hdferr = h5dwrite_ref_obj_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims(1)) + DEALLOCATE(ref_buf) + + END SUBROUTINE h5dwrite_reference_obj + + SUBROUTINE h5dwrite_reference_dsetreg(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: dims ! size of the bufffer buf + TYPE(hdset_reg_ref_t_f), DIMENSION(dims(1)), INTENT(IN) :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf + INTEGER :: i,j + + INTERFACE + INTEGER FUNCTION h5dwrite_ref_reg_c(dset_id, mem_type_id,& + mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REF_REG_C'::h5dwrite_ref_reg_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER, DIMENSION(*) :: ref_buf + INTEGER(HSIZE_T), DIMENSION(*) :: dims + END FUNCTION h5dwrite_ref_reg_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + ALLOCATE(ref_buf(REF_REG_BUF_LEN*dims(1)), stat=hdferr) + IF (hdferr .NE. 0 ) THEN + hdferr = -1 + RETURN + ELSE + DO j = 1, dims(1) + DO i = 1, REF_REG_BUF_LEN + ref_buf(REF_REG_BUF_LEN*(j-1) + i) = buf(j)%ref(i) + ENDDO + ENDDO + ENDIF + hdferr = h5dwrite_ref_reg_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + DEALLOCATE(ref_buf) + + END SUBROUTINE h5dwrite_reference_dsetreg + + SUBROUTINE h5dwrite_integer_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER, INTENT(IN) :: buf ! Data buffer + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_integer_s_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_S_C'::h5dwrite_integer_s_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN) :: buf + END FUNCTION h5dwrite_integer_s_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_integer_s_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_integer_scalar + + SUBROUTINE h5dwrite_integer_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_integer_1_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_1_C'::h5dwrite_integer_1_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5dwrite_integer_1_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_integer_1_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_integer_1 + + SUBROUTINE h5dwrite_integer_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_integer_2_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_2_C'::h5dwrite_integer_2_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dwrite_integer_2_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + hdferr = h5dwrite_integer_2_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims) + + END SUBROUTINE h5dwrite_integer_2 + + SUBROUTINE h5dwrite_integer_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_integer_3_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_3_C'::h5dwrite_integer_3_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dwrite_integer_3_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_integer_3_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims) + + END SUBROUTINE h5dwrite_integer_3 + + SUBROUTINE h5dwrite_integer_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_integer_4_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_4_C'::h5dwrite_integer_4_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5dwrite_integer_4_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_integer_4_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims) + + END SUBROUTINE h5dwrite_integer_4 + + SUBROUTINE h5dwrite_integer_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_integer_5_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_5_C'::h5dwrite_integer_5_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dwrite_integer_5_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_integer_5_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims) + + END SUBROUTINE h5dwrite_integer_5 + + SUBROUTINE h5dwrite_integer_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_integer_6_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_6_C'::h5dwrite_integer_6_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dwrite_integer_6_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_integer_6_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims) + + END SUBROUTINE h5dwrite_integer_6 + + SUBROUTINE h5dwrite_integer_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_integer_7_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_INTEGER_7_C'::h5dwrite_integer_7_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dwrite_integer_7_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_integer_7_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, & + buf, dims) + + END SUBROUTINE h5dwrite_integer_7 + + + SUBROUTINE h5dwrite_char_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN) :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwritec_s_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_S_C'::h5dwritec_s_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN) :: buf + END FUNCTION h5dwritec_s_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwritec_s_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_char_scalar + + SUBROUTINE h5dwrite_char_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwritec_1_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_1_C'::h5dwritec_1_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5dwritec_1_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwritec_1_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_char_1 + + SUBROUTINE h5dwrite_char_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwritec_2_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_2_C'::h5dwritec_2_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dwritec_2_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwritec_2_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_char_2 + + SUBROUTINE h5dwrite_char_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwritec_3_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_3_C'::h5dwritec_3_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dwritec_3_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwritec_3_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_char_3 + + SUBROUTINE h5dwrite_char_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwritec_4_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_4_C'::h5dwritec_4_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5dwritec_4_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwritec_4_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_char_4 + + SUBROUTINE h5dwrite_char_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwritec_5_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_5_C'::h5dwritec_5_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dwritec_5_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwritec_5_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_char_5 + + SUBROUTINE h5dwrite_char_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwritec_6_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_6_C'::h5dwritec_6_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dwritec_6_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwritec_6_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_char_6 + + SUBROUTINE h5dwrite_char_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwritec_7_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITEC_7_C'::h5dwritec_7_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dwritec_7_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwritec_7_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_char_7 + + SUBROUTINE h5dwrite_real_scalar(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN) :: buf ! Data buffer + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_real_s_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_S_C'::h5dwrite_real_s_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN) :: buf + END FUNCTION h5dwrite_real_s_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_real_s_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_real_scalar + + SUBROUTINE h5dwrite_real_1(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_real_1_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_1_C'::h5dwrite_real_1_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5dwrite_real_1_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_real_1_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_real_1 + + SUBROUTINE h5dwrite_real_2(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_real_2_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_2_C'::h5dwrite_real_2_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dwrite_real_2_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_real_2_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_real_2 + + SUBROUTINE h5dwrite_real_3(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_real_3_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_3_C'::h5dwrite_real_3_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dwrite_real_3_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_real_3_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_real_3 + + SUBROUTINE h5dwrite_real_4(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_real_4_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_4_C'::h5dwrite_real_4_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5dwrite_real_4_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_real_4_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_real_4 + + SUBROUTINE h5dwrite_real_5(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_real_5_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_5_C'::h5dwrite_real_5_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dwrite_real_5_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_real_5_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_real_5 + + SUBROUTINE h5dwrite_real_6(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_real_6_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_6_C'::h5dwrite_real_6_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dwrite_real_6_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_real_6_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_real_6 + + SUBROUTINE h5dwrite_real_7(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + + INTERFACE + INTEGER FUNCTION h5dwrite_real_7_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DWRITE_REAL_7_C'::h5dwrite_real_7_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dwrite_real_7_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F + mem_space_id_default = H5S_ALL_F + file_space_id_default = H5S_ALL_F + + IF (PRESENT(xfer_prp)) xfer_prp_default = xfer_prp + IF (PRESENT(mem_space_id)) mem_space_id_default = mem_space_id + IF (PRESENT(file_space_id)) file_space_id_default = file_space_id + + hdferr = h5dwrite_real_7_c(dset_id, mem_type_id, mem_space_id_default, & + file_space_id_default, xfer_prp_default, buf, dims) + + END SUBROUTINE h5dwrite_real_7 + +! +! NAME +! h5dfill_integer +! +! PURPOSE +! Fills dataspace elements with a fill value in a memory buffer. +! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes +! of the fillvalues and buffers are supported. Buffer and fillvalue +! are assumed to have the same datatype. +! Only one-dimesional buffers are supported. +! +! INPUTS +! fill_value - fill value +! space_id - memory space selection identifier +! buf - data buffer iin memory ro apply selection to +! - of k-th dimension of the buf array +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! March 12, 2003 +! +! + + SUBROUTINE h5dfill_integer(fill_value, space_id, buf, hdferr) + IMPLICIT NONE + INTEGER, INTENT(IN) :: fill_value ! Fill value + INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier + INTEGER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier + INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier + + ! INTEGER, EXTERNAL :: h5dfill_integer_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5dfill_integer_c(fill_value, fill_type_id, space_id, & + buf, mem_type_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DFILL_INTEGER_C'::h5dfill_integer_c + !DEC$ENDIF + INTEGER, INTENT(IN) :: fill_value ! Fill value + INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier + INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier + INTEGER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in + INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier + END FUNCTION h5dfill_integer_c + END INTERFACE + fill_type_id = H5T_NATIVE_INTEGER + mem_type_id = H5T_NATIVE_INTEGER + + hdferr = h5dfill_integer_c(fill_value, fill_type_id, space_id, & + buf, mem_type_id) + + END SUBROUTINE h5dfill_integer + +! +! NAME +! h5dfill_real +! +! PURPOSE +! Fills dataspace elements with a fill value in a memory buffer. +! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes +! of the fillvalues and buffers are supported. Buffer and fillvalue +! are assumed to have the same datatype. +! Only one-dimesional buffers are supported. +! +! INPUTS +! fill_value - fill value +! space_id - memory space selection identifier +! buf - data buffer iin memory ro apply selection to +! - of k-th dimension of the buf array +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! March 12, 2003 +! +! + + SUBROUTINE h5dfill_real(fill_valuer, space_id, buf, hdferr) + IMPLICIT NONE + REAL, INTENT(IN) :: fill_valuer ! Fill value + INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier + REAL, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier + INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier + + ! INTEGER, EXTERNAL :: h5dfill_real_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5dfill_real_c(fill_valuer, fill_type_id, space_id, & + buf, mem_type_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DFILL_REAL_C'::h5dfill_real_c + !DEC$ENDIF + REAL, INTENT(IN) :: fill_valuer ! Fill value + INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier + INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier + REAL, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in + INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier + END FUNCTION h5dfill_real_c + END INTERFACE + fill_type_id = H5T_NATIVE_REAL + mem_type_id = H5T_NATIVE_REAL + + hdferr = h5dfill_real_c(fill_valuer, fill_type_id, space_id, & + buf, mem_type_id) + END SUBROUTINE h5dfill_real + +! +! NAME +! h5dfill_char +! +! PURPOSE +! Fills dataspace elements with a fill value in a memory buffer. +! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes +! of the fillvalues and buffers are supported. Buffer and fillvalue +! are assumed to have the same datatype. +! Only one-dimesional buffers are supported. +! +! INPUTS +! fill_value - fill value +! space_id - memory space selection identifier +! buf - data buffer iin memory ro apply selection to +! - of k-th dimension of the buf array +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! March 12, 2003 +! +! + + SUBROUTINE h5dfill_char(fill_value, space_id, buf, hdferr) + IMPLICIT NONE + CHARACTER, INTENT(IN) :: fill_value ! Fill value + INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier + CHARACTER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier + INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier + + ! INTEGER, EXTERNAL :: h5dfillc_c + ! MS FORTRAN needs explicit interface for C functions called here. + ! + INTERFACE + INTEGER FUNCTION h5dfillc_c(fill_value, fill_type_id, space_id, & + buf, mem_type_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DFILLC_C'::h5dfillc_c + !DEC$ENDIF + CHARACTER, INTENT(IN) :: fill_value ! Fill value + INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier + INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier + CHARACTER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in + INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier + END FUNCTION h5dfillc_c + END INTERFACE + fill_type_id = H5T_NATIVE_CHARACTER + mem_type_id = H5T_NATIVE_CHARACTER + + hdferr = h5dfillc_c(fill_value, fill_type_id, space_id, & + buf, mem_type_id) + + END SUBROUTINE h5dfill_char + + +END MODULE H5D_PROVISIONAL diff --git a/fortran/src/H5Ef.c b/fortran/src/H5Ef.c index c6d860c..875b59f 100644 --- a/fortran/src/H5Ef.c +++ b/fortran/src/H5Ef.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5Ef/H5Ef + * PURPOSE + * This file contains C stubs for H5E Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,53 +16,70 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for H5E Fortran APIs */ - + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" #include "H5Eprivate.h" -/*---------------------------------------------------------------------------- - * Name: h5eclear_c - * Purpose: Call H5Eclear to clear the error stack for the current thread - * Inputs: - * Outputs: - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Wednesday, March 29, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ - +/****if* H5Ef/h5eclear_c + * NAME + * h5eclear_c + * PURPOSE + * Call H5Eclear to clear the error stack for the current thread + * INPUTS + * + * OUTPUTS + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su + * Wednesday, March 29, 2000 + * HISTORY + * + * SOURCE +*/ int_f -nh5eclear_c(void) +nh5eclear_c(hid_t_f *estack_id ) +/******/ { - int_f ret_value = 0; + int_f ret_value = 0; - /* - * Call H5Eclear function. - */ - if(H5Eclear2(H5E_DEFAULT) < 0) - HGOTO_DONE(FAIL) + /* + * Call H5Eclear function. + */ + if(H5Eclear2((hid_t)*estack_id) < 0) + HGOTO_DONE(FAIL) done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5eprint_c1 - * Purpose: Call H5Eprint to print the error stack in a default manner. - * Inputs: name - file name - * namelen - length of name - * Outputs: - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Wednesday, March 29, 2000 - * Modifications: Bug fix: Added call to close the file with the error messages - * EP 11/26/01 - *---------------------------------------------------------------------------*/ +/****if* H5Ef/h5eprint_c1 + * NAME + * h5eprint_c1 + * PURPOSE + * Call H5Eprint to print the error stack in a default manner. + * INPUTS + * name - file name + * namelen - length of name + * OUTPUTS + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su + * Wednesday, March 29, 2000 + * HISTORY + * Bug fix: Added call to close the file with the error messages + * EP 11/26/01 + * SOURCE +*/ int_f nh5eprint_c1(_fcd name, int_f* namelen) +/******/ { FILE *file = NULL; char *c_name = NULL; @@ -83,20 +105,27 @@ done: return ret_value; } - -/*---------------------------------------------------------------------------- - * Name: h5eprint_c2 - * Purpose: Call H5Eprint to print the error stack to stderr - * in a default manner. - * Inputs: - * Outputs: - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Wednesday, March 29, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5Ef/h5eprint_c2 + * NAME + * h5eprint_c2 + * PURPOSE + * Call H5Eprint to print the error stack to stderr + * in a default manner. + * INPUTS + * + * OUTPUTS + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su + * Wednesday, March 29, 2000 + * + * SOURCE +*/ int_f nh5eprint_c2(void) +/******/ { int_f ret_value = 0; @@ -110,19 +139,28 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5eget_major_c - * Purpose: Call H5Eget_major to get a character string - * describing an error specified by a major error number. - * Inputs: error_no - Major error number - * Outputs: name - character string describing the error - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Wednesday, March 29, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5Ef/h5eget_major_c + * NAME + * h5eget_major_c + * PURPOSE + * Call H5Eget_major to get a character string + * describing an error specified by a major error number. + * INPUTS + * error_no - Major error number + * OUTPUTS + * name - character string describing the error + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su + * Wednesday, March 29, 2000 + * HISTORY + * + * SOURCE +*/ int_f nh5eget_major_c(int_f* error_no, _fcd name, size_t_f* namelen) +/******/ { char *c_name = NULL; size_t c_namelen = (size_t)*namelen; @@ -149,19 +187,28 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5eget_minor_c - * Purpose: Call H5Eget_minor to get a character string - * describing an error specified by a minor error number. - * Inputs: error_no - Major error number - * Outputs: name - character string describing the error - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Wednesday, March 29, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5Ef/h5eget_minor_c + * NAME + * h5eget_minor_c + * PURPOSE + * Call H5Eget_minor to get a character string + * describing an error specified by a minor error number. + * INPUTS + * error_no - Major error number + * OUTPUTS + * name - character string describing the error + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su + * Wednesday, March 29, 2000 + * HISTORY + * + * SOURCE +*/ int_f nh5eget_minor_c(int_f* error_no, _fcd name, size_t_f* namelen) +/******/ { char *c_name = NULL; size_t c_namelen = (size_t)*namelen; @@ -188,18 +235,27 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5eset_auto_c - * Purpose: Call H5Eset_auto to turn automatic error printing on or off. - * Inputs: printflag - flag to turn automatic error printing on or off. - * Outputs: - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Friday, November 17, 2000 - * Modifications: major bug fix. Function never disabled printing. - *---------------------------------------------------------------------------*/ +/****if* H5Ef/h5eset_auto_c + * NAME + * h5eset_auto_c + * PURPOSE + * Call H5Eset_auto to turn automatic error printing on or off. + * INPUTS + * printflag - flag to turn automatic error printing on or off. + * OUTPUTS + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Friday, November 17, 2000 + * HISTORY + * Major bug fix: Function never disabled printing. + * SOURCE +*/ int_f nh5eset_auto_c(int_f* printflag) +/******/ { herr_t status = -1; int_f ret_value = 0; @@ -215,3 +271,199 @@ done: return ret_value; } + +/****if* H5Ef/h5eset_auto2_c + * NAME + * h5eset_auto2_c + * PURPOSE + * Calls H5Eset_auto2 + * INPUTS + * estack_id - Error stack identifier. + * func - Function to be called upon an error condition. + * client_data - Data passed to the error function. + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * July 22, 2009 + * SOURCE +*/ +/* int_f */ +/* nh5eset_auto2_c(hid_t_f *estack_id, H5E_auto2_t *func, void *client_data) */ +/* /\******\/ */ +/* { */ +/* int ret_val = -1; */ +/* herr_t status = -1; */ + +/* status = H5Eset_auto2((hid_t)*estack_id, *func, client_data); */ +/* if (status >= 0) ret_val = 0; */ +/* return ret_val; */ +/* } */ + +int_f +nh5eset_auto2_c(int_f *printflag, hid_t_f *estack_id, H5E_auto2_t func, void *client_data) +/******/ +{ + int ret_val = -1; + herr_t status = -1; + + if (*printflag == 1 && *estack_id == -1) + status = H5Eset_auto2(H5E_DEFAULT, H5Eprint2, stderr); + else if (*printflag == 1) + status = H5Eset_auto2((hid_t)*estack_id, func, client_data); + else if (*printflag == 0) + status = H5Eset_auto2(H5E_DEFAULT, NULL, NULL); + if (status >= 0) ret_val = 0; + + return ret_val; +} + + +int_f +H5Eget_auto3(void **client_data) +{ + int *i; + + i = (int*)client_data; + + *i = 1000; + printf(" Buffer In (C) = %d \n", *i); + + return 0; + +} + +int_f nprocess_buffer(hid_t_f *estack_id, void **buffer) +{ + int status; + int *i; + H5E_auto2_t func_c; + + status = H5Eget_auto2((hid_t)*estack_id, &func_c, buffer); +/* status = H5Eget_auto3(buffer); */ + + i = (int*)buffer; + + printf(" Buffer In (C) = %d \n", *i); + return; +} +/****if* H5Ef/h5eget_auto_c + * NAME + * h5eget_auto_c + * PURPOSE + * Calls H5Eget_auto2 + * INPUTS + * estack_id - Error stack identifier + * OUTPUTS + * func - The function currently set to be called upon an error condition. + * client_data - Data currently set to be passed to the error function. + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * July 10, 2009 + * NOTE + * if func is the default H5Eprint or H5Eprint2 then need to use the Fortran callback function + * associated with H5Eprint*. + * SOURCE +*/ +int_f +nh5eget_auto_c(hid_t_f *estack_id, H5E_auto2_t *func, void **client_data, int_f *ret_func) +/******/ +{ + int ret_val = -1; + herr_t status = -1; + hid_t dataset; + H5E_auto2_t func_c; + void *client_data_c=NULL; + void **data_c; + int *i; + +/* status = H5Eget_auto3(client_data); */ +/* i = (int*)client_data; */ + +/* printf(" Buffer In (C3) = %d \n", *i); */ + +/* return 0; */ + +/* *ret_func = -1; */ + + status = H5Eget_auto2((hid_t)*estack_id, &func_c, &client_data_c); + +/* status = H5Eget_auto2((hid_t)*estack_id, &func_c, client_data); */ + + i = (int*)*client_data; + +/* *i = 1000; */ + + +/* i = (int*)client_data_c; */ +/* *i = 100; */ + +/* *client_data = client_data_c; */ +/* *data_c = client_data_c; */ + + printf("aa %d \n",*((int*)client_data_c)); +/* printf("bb %d \n",**((int**)client_data)); */ +/* printf("cc %d \n",**((int**)data_c)); */ + +/* printf("a %p \n",client_data_c); */ +/* printf("b %p \n",*client_data); */ +/* printf("c %p \n",*data_c); */ + +/* i = (int*)client_data_c; */ +/* **client_data = *((int*)client_data_c);*/ + +/* *i = 200; */ + +/* if(client_data == NULL) */ +/* printf("error \n"); */ + +/* if(func == NULL) */ +/* printf("error \n"); */ + +/* #ifdef H5_USE_16_API */ +/* if (func == (H5E_auto_t)H5Eprint) */ +/* *ret_func = 0; */ +/* #else /\* H5_USE_16_API *\/ */ +/* if (func == (H5E_auto2_t)H5Eprint2) */ +/* *ret_func = 0; */ +/* #endif /\* H5_USE_16_API *\/ */ + +/* #ifdef H5_USE_16_API */ +/* if (func == (H5E_auto_t)H5Eprint) */ +/* *ret_func = 0; */ +/* #else /\* H5_USE_16_API *\/ */ +/* if (func == (H5E_auto2_t)H5Eprint2) */ +/* *ret_func = 0; */ /* printf("%p %p \n",func,(H5E_auto2_t)H5Eprint2); */ +/* #endif /\* H5_USE_16_API *\/ */ + +/* printf(" ret %d \n", ret_val); */ + if (status >= 0) ret_val = 0; + ret_func = 0; + return ret_val; +} + +void* +nh5eget_auto_c2(hid_t_f *estack_id, H5E_auto2_t *func, int_f *ret_func) +/******/ +{ + int ret_val = -1; + herr_t status = -1; + hid_t dataset; + H5E_auto2_t func_c; + void *client_data_c=NULL; + void **data_c; + int *i; + + status = H5Eget_auto2((hid_t)*estack_id, &func_c, &client_data_c); + + printf("a %p \n",client_data_c); + + + if (status >= 0) ret_val = 0; + ret_func = 0; + return client_data_c; +} + diff --git a/fortran/src/H5Eff.f90 b/fortran/src/H5Eff.f90 index c33f9c1..2e137df 100644 --- a/fortran/src/H5Eff.f90 +++ b/fortran/src/H5Eff.f90 @@ -1,10 +1,13 @@ -!****h* fortran/src/H5Eff.f90 +!****h* ROBODoc/H5E ! ! NAME -! H5E +! MODULE H5E ! -! FUNCTION -! This file contains Fortran interfaces for H5E functions. +! FILE +! fortran/src/H5Eff.f90 +! +! PURPOSE +! This Module contains Fortran interfaces for H5E functions. ! ! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * @@ -23,10 +26,10 @@ ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! ! NOTES -! *** IMPORTANT *** -! If you add a new H5E function you must add the function name to the -! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. -! This is needed for Windows based operating systems. +! *** IMPORTANT *** +! If you add a new H5E function to the module you must add the function name +! to the Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. ! !***** @@ -42,76 +45,82 @@ MODULE H5E CONTAINS -!---------------------------------------------------------------------- -! Name: h5eclear_f -! -! Purpose: Clears the error stack for the current thread. -! -! Inputs: -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! -! -! -! -! Programmer: Elena Pourmal -! August 12, 1999 +!****s* H5E/h5eclear_f ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). April 6, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5eclear_f(hdferr) +! NAME +! h5eclear_f +! +! PURPOSE +! Clears the error stack for the current thread. +! +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! estack_id - Error Stack id +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). April 6, 2001 +! +! Added optional error stack identifier in order to bring +! the function in line with the h5eclear2 routine. +! MSB, July 9, 2009 +! +! SOURCE + SUBROUTINE h5eclear_f(hdferr, estack_id) IMPLICIT NONE INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: estack_id +!***** + INTEGER(HID_T) :: estack_id_default -! INTEGER, EXTERNAL :: h5eclear_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE - INTEGER FUNCTION h5eclear_c() + INTEGER FUNCTION h5eclear_c(estack_id_default) USE H5GLOBAL !DEC$IF DEFINED(HDF5F90_WINDOWS) !DEC$ATTRIBUTES C,reference,decorate,alias:'H5ECLEAR_C'::h5eclear_c !DEC$ENDIF + INTEGER(HID_T) :: estack_id_default END FUNCTION h5eclear_c END INTERFACE - hdferr = h5eclear_c() + + estack_id_default = H5E_DEFAULT_F + IF(PRESENT(estack_id)) estack_id_default = estack_id + + hdferr = h5eclear_c(estack_id_default) END SUBROUTINE h5eclear_f -!---------------------------------------------------------------------- -! Name: h5h5eprint_f +!****s* H5E/h5eprint_f ! -! Purpose: Prints the error stack in a default manner. +! NAME +! h5eprint_f ! -! Inputs: -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! name - name of the file that -! contains print output +! PURPOSE +! Prints the error stack in a default manner. ! -! Programmer: Elena Pourmal -! August 12, 1999 +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). April 6, 2001 +! OPTIONAL PARAMETERS +! name - name of the file that contains print output +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). April 6, 2001 +! +! SOURCE SUBROUTINE h5eprint_f(hdferr, name) CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: name ! File name INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTEGER :: namelen INTERFACE @@ -141,40 +150,41 @@ CONTAINS hdferr = h5eprint_c2() ENDIF END SUBROUTINE h5eprint_f - -!---------------------------------------------------------------------- -! Name: h5eget_major_f -! -! Purpose: Returns a character string describing an error specified -! by a major error number. -! -! Inputs: -! error_no - mojor error number -! Outputs: -! name - character string describing the error -! namelen - number of characters in the name buffer -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). April 6, 2001 -! -! Comment: -!---------------------------------------------------------------------- - +!****s* H5E/h5eget_major_f +! +! NAME +! h5eget_major_f +! +! PURPOSE +! Returns a character string describing an error specified +! by a major error number. +! +! INPUTS +! error_no - major error number +! +! OUTPUTS +! name - character string describing the error +! namelen - number of characters in the name buffer +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). April 6, 2001 +! +! SOURCE SUBROUTINE h5eget_major_f(error_no, name, namelen, hdferr) - INTEGER, INTENT(IN) :: error_no ! Major error number - CHARACTER(LEN=*), INTENT(OUT) :: name ! Character string describing - ! the error. - INTEGER(SIZE_T), INTENT(IN) :: namelen !Anticipated number of characters in name. - INTEGER, INTENT(OUT) :: hdferr ! Error code - + INTEGER, INTENT(IN) :: error_no ! Major error number + CHARACTER(LEN=*), INTENT(OUT) :: name ! Character string describing + ! the error. + INTEGER(SIZE_T), INTENT(IN) :: namelen ! Anticipated number of characters + ! in name. + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTERFACE INTEGER FUNCTION h5eget_major_c(error_no, name, namelen) USE H5GLOBAL @@ -190,41 +200,38 @@ CONTAINS hdferr = h5eget_major_c(error_no, name, namelen) END SUBROUTINE h5eget_major_f - -!---------------------------------------------------------------------- -! Name: h5eget_minor_f -! -! Purpose: Returns a character string describing an error specified -! by a minor error number. +!****s* H5E/h5eget_minor_f ! -! Inputs: -! error_no - minor error number -! Outputs: -! name - character string describing the error -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: +! NAME +! h5eget_minor_f ! +! PURPOSE +! Returns a character string describing an error specified +! by a minor error number. ! +! INPUTS +! error_no - minor error number ! +! OUTPUTS +! name - character string describing the error +! hdferr - Returns 0 if successful and -1 if fails ! -! Programmer: Elena Pourmal -! August 12, 1999 +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). April 6, 2001 +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). April 6, 2001 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5eget_minor_f(error_no, name, hdferr) - INTEGER, INTENT(IN) :: error_no !Major error number + INTEGER, INTENT(IN) :: error_no ! Major error number CHARACTER(LEN=*), INTENT(OUT) :: name ! Character string describing ! the error INTEGER, INTENT(OUT) :: hdferr ! Error code - +!***** INTERFACE INTEGER FUNCTION h5eget_minor_c(error_no, name) USE H5GLOBAL @@ -239,55 +246,6 @@ CONTAINS hdferr = h5eget_minor_c(error_no, name) END SUBROUTINE h5eget_minor_f -!---------------------------------------------------------------------- -! Name: h5eset_auto_f -! -! Purpose: Turns automatic error printing on or off -! -! Inputs: -! printflag - flag to turn automatic error -! - Possible values are: -! - 1 (on), 0 (off) -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! -! -! -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). April 6, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5eset_auto_f(printflag, hdferr) - INTEGER, INTENT(IN) :: printflag !flag to turn automatic error - !printing on or off - !possible values are: - !printon (1) - !printoff(0) - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5eset_auto_c(printflag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5ESET_AUTO_C'::h5eset_auto_c - !DEC$ENDIF - INTEGER :: printflag - END FUNCTION h5eset_auto_c - END INTERFACE - - hdferr = h5eset_auto_c(printflag) - END SUBROUTINE h5eset_auto_f END MODULE H5E diff --git a/fortran/src/H5Eff_F03.f90 b/fortran/src/H5Eff_F03.f90 new file mode 100644 index 0000000..e9eeac9 --- /dev/null +++ b/fortran/src/H5Eff_F03.f90 @@ -0,0 +1,248 @@ +!****h* ROBODoc/H5E (F03) +! +! NAME +! H5L_PROVISIONAL +! +! FILE +! src/fortran/src/H5Eff_F03.f90 +! +! PURPOSE +! +! This file contains Fortran 90 and Fortran 2003 interfaces for H5E functions. +! It contains the same functions as H5Eff_DEPRECIATE.f90 but includes the +! Fortran 2003 functions and the interface listings. This file will be compiled +! instead of H5Eff_DEPRECIATE.f90 if Fortran 2003 functions are enabled. +! +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! *** IMPORTANT *** +! If you add a new H5E function to the module you must add the function name +! to the Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** + +MODULE H5E_PROVISIONAL + + USE H5GLOBAL + +CONTAINS + + INTEGER FUNCTION h5eprint_def() bind(C) + + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER :: hdferr + + PRINT*,'Inside h5eprint_def' +! STOP + +!!$ CALL h5eprint_f(hdferr) +!!$ h5eprint_def = hdferr + + END FUNCTION h5eprint_def + +!****s* H5E/h5eset_auto2_f +! +! NAME +! h5eset_auto2_f +! +! PURPOSE +! Returns settings for automatic error stack traversal function and its data. +! +! INPUTS +! printflag - Flag to turn automatic error printing on or off; +! possible values are: +! printon (1) +! printoff(0) +! estack_id - Error stack identifier. +! func - Function to be called upon an error condition. +! client_data - Data passed to the error function +! +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! M. Scot Breitenfeld +! July 10, 2009 +! +! SOURCE + SUBROUTINE h5eset_auto_f(printflag, hdferr, estack_id, func, client_data) + USE ISO_C_BINDING + INTEGER , INTENT(IN) :: printflag + INTEGER , INTENT(OUT) :: hdferr + INTEGER(HID_T), INTENT(IN) , OPTIONAL :: estack_id + TYPE(C_FUNPTR), INTENT(IN) , OPTIONAL :: func + TYPE(C_PTR) , INTENT(IN) , OPTIONAL :: client_data +!***** + INTEGER(HID_T) :: estack_id_default + TYPE(C_FUNPTR) :: func_default + TYPE(C_PTR) :: client_data_default + INTERFACE + INTEGER FUNCTION h5eset_auto2_c(printflag, estack_id, func, client_data) + USE ISO_C_BINDING + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5ESET_AUTO2_C'::h5eset_auto2_c + !DEC$ENDIF + INTEGER :: printflag + INTEGER(HID_T) :: estack_id +!!$ TYPE(C_FUNPTR) :: func +!!$ TYPE(C_PTR), VALUE :: client_data + TYPE(C_FUNPTR), VALUE :: func + TYPE(C_PTR), VALUE :: client_data + END FUNCTION h5eset_auto2_c + END INTERFACE + + estack_id_default = -1 + func_default = C_NULL_FUNPTR + client_data_default = C_NULL_PTR + + IF(PRESENT(estack_id)) estack_id_default = estack_id + IF(PRESENT(func)) func_default = func + IF(PRESENT(client_data)) client_data_default = client_data + + hdferr = h5eset_auto2_c(printflag, estack_id_default, func_default, client_data_default) + END SUBROUTINE h5eset_auto_f + +!****s* H5E/h5eget_auto_f +! +! NAME +! h5eget_auto_f +! +! PURPOSE +! Returns the settings for the automatic error stack traversal function and its data. +! +! INPUTS +! estack_id - Error stack identifier. H5E_DEFAULT_F indicates the current stack. +! OUTPUTS +! func - The function currently set to be called upon an error condition. +! client_data - Data currently set to be passed to the error function. +! hdferr - Returns 0 if successful and -1 if fails. +! +! AUTHOR +! M. Scot Breitenfeld +! July 10, 2009 +! +! SOURCE + SUBROUTINE h5eget_auto_f(estack_id, op, client_data, hdferr) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: estack_id +!!$ TYPE(C_FUNPTR) :: op_f +!!$ TYPE(C_PTR) :: client_data_f + TYPE(C_FUNPTR) :: op + TYPE(C_PTR), VALUE :: client_data + INTEGER, INTENT(OUT) :: hdferr +!***** + INTEGER :: ret_func2 + !INTEGER(C_INT), DIMENSION(:), POINTER :: ptr_data + INTEGER, DIMENSION(1:1) :: array_shape + TYPE(C_PTR), TARGET :: f_ptr1 + INTEGER(C_INT) :: ptr_data + INTEGER(C_INT) :: i + TYPE(C_PTR) :: test + INTEGER, POINTER :: a + + INTEGER, TARGET :: j + TYPE(C_PTR) :: f_ptr2 + + INTERFACE + INTEGER FUNCTION h5eget_auto_c(estack_id, op, client_data, ret_func2) + USE ISO_C_BINDING + USE H5GLOBAL + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5EGET_AUTO_C'::h5eget_auto_c + !DEC$ENDIF + INTEGER(HID_T) :: estack_id + TYPE(C_FUNPTR) :: op + TYPE(C_PTR) :: client_data + INTEGER :: ret_func2 + END FUNCTION h5eget_auto_c + +!!$ TYPE(C_PTR) FUNCTION h5eget_auto_c2(estack_id, op, ret_func2) +!!$ USE ISO_C_BINDING +!!$ USE H5GLOBAL +!!$ IMPLICIT NONE +!!$ !DEC$IF DEFINED(HDF5F90_WINDOWS) +!!$ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5EGET_AUTO_C'::h5eget_auto_c +!!$ !DEC$ENDIF +!!$ INTEGER(HID_T) :: estack_id +!!$ TYPE(C_FUNPTR) :: op +!!$ INTEGER :: ret_func2 +!!$ END FUNCTION h5eget_auto_c2 + +!!$ SUBROUTINE process_buffer(estack_id, buffer) +!!$ USE, INTRINSIC :: ISO_C_BINDING +!!$ USE H5GLOBAL +!!$ INTEGER(HID_T) :: estack_id +!!$ TYPE(C_PTR) :: buffer +!!$ END SUBROUTINE process_buffer + + END INTERFACE + +! j = -9999 + + + f_ptr2 = c_loc(j) +! CALL process_buffer(estack_id,f_ptr2) + + hdferr = h5eget_auto_c(estack_id, op, f_ptr2, ret_func2) + +!!!!! PRINT*,c_associated(f_ptr2) +!!$ hdferr = h5eget_auto_c(estack_id, op, client_data, ret_func2) + + PRINT*,'fortran',j + stop + +! client_data = h5eget_auto_c2(estack_id, op, ret_func2) + +! PRINT*,'Is client_data associated',C_associated(client_data) +! PRINT*,'Is op_data associated',C_associated(op) + +! ALLOCATE(i(1:1)) +! CALL c_f_pointer(f_ptr2,a,[1]) +! CALL c_f_pointer(f_ptr2,i) +! PRINT*,i +! PRINT*,"Buffer in (F) = ", a(1) + +! stop + +! ALLOCATE(ptr_data(1:2)) +! ptr_data = 0 +! array_shape(1) = 1 +! CALL C_F_POINTER(client_data, ptr_data, array_shape) +! CALL C_F_POINTER(f_ptr2, i,(/ 1 /)) + +! ptr_data => f_ptr1(1) + +! PRINT*,'value in fortran',i + + +! Check to see if the user created their own function, +! otherwise we have to create a fortran version of the default + +!!$ IF(ret_func2.EQ.0)THEN +!!$ op = c_funloc(h5eprint_def) +!!$ END IF + + END SUBROUTINE h5eget_auto_f + +END MODULE H5E_PROVISIONAL diff --git a/fortran/src/H5Eff_F90.f90 b/fortran/src/H5Eff_F90.f90 new file mode 100644 index 0000000..e698a84 --- /dev/null +++ b/fortran/src/H5Eff_F90.f90 @@ -0,0 +1,89 @@ +!****h* ROBODoc/H5E (F90) +! +! NAME +! MODULE H5E_PROVISIONAL +! +! PURPOSE +! This file contains Fortran 90 interfaces for H5E functions. It contains +! the same functions as H5Eff_F03.f90 but excludes the Fortran 2003 functions +! and the interface listings. This file will be compiled instead of H5Eff_F03.f90 +! if Fortran 2003 functions are not enabled. +! +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! *** IMPORTANT *** +! If you add a new H5D function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +!***** + +MODULE H5E_PROVISIONAL + + USE H5GLOBAL + +CONTAINS + +!****s* H5E/h5eset_auto_f +! +! NAME +! h5eset_auto_f +! +! PURPOSE +! Turns automatic error printing on or off. +! +! INPUTS +! printflag - Flag to turn automatic error printing on or off; +! possible values are: +! printon (1) +! printoff(0) +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). April 6, 2001 +! +! SOURCE + SUBROUTINE h5eset_auto_f(printflag, hdferr) + INTEGER, INTENT(IN) :: printflag ! flag to turn automatic error + ! printing on or off + ! possible values are: + ! printon (1) + ! printoff(0) + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5eset_auto_c(printflag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5ESET_AUTO_C'::h5eset_auto_c + !DEC$ENDIF + INTEGER :: printflag + END FUNCTION h5eset_auto_c + END INTERFACE + + hdferr = h5eset_auto_c(printflag) + END SUBROUTINE h5eset_auto_f + + +END MODULE H5E_PROVISIONAL diff --git a/fortran/src/H5FDmpiof.c b/fortran/src/H5FDmpiof.c index 2f22b55..89b4180 100644 --- a/fortran/src/H5FDmpiof.c +++ b/fortran/src/H5FDmpiof.c @@ -1,4 +1,10 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5FDmpiof/H5FDmpiof + * + * PURPOSE + * This file contains C stubs for Parallel Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,9 +17,10 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for Parallel Fortran APIs */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" #include @@ -30,20 +37,28 @@ #define MPI_Info_f2c(info) (MPI_Info)(info) #endif /*MPI Info*/ -/*---------------------------------------------------------------------------- - * Name: h5pset_fapl_mpio_c - * Purpose: Call H5Pset_fapl_mpio to set mode for parallel I/O and the user +/****if* H5FDmpiof/h5pset_fapl_mpio_c + * NAME + * h5pset_fapl_mpio_c + * PURPOSE + * Call H5Pset_fapl_mpio to set mode for parallel I/O and the user * supplied communicator and info object - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * comm - MPI communicator * info - MPI info object - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, October 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_fapl_mpio_c(hid_t_f *prp_id, int_f* comm, int_f* info) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -62,20 +77,27 @@ nh5pset_fapl_mpio_c(hid_t_f *prp_id, int_f* comm, int_f* info) ret_value = 0; return ret_value; } - -/*---------------------------------------------------------------------------- - * Name: h5pget_fapl_mpio_c - * Purpose: Call H5Pget_fapl_mpio to retrieve communicator and info object - * Inputs: prp_id - property list identifier +/****if* H5FDmpiof/h5pget_fapl_mpio_c + * NAME + * h5pget_fapl_mpio_c + * PURPOSE + * Call H5Pget_fapl_mpio to retrieve communicator and info object + * INPUTS + * prp_id - property list identifier * comm - buffer to return MPI communicator * info - buffer to return MPI info object - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, October 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_fapl_mpio_c(hid_t_f *prp_id, int_f* comm, int_f* info) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -94,19 +116,27 @@ nh5pget_fapl_mpio_c(hid_t_f *prp_id, int_f* comm, int_f* info) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_dxpl_mpio_c - * Purpose: Call H5Pset_dxpl_mpio to set transfer mode of the dataset +/****if* H5FDmpiof/h5pset_dxpl_mpio_c + * NAME + * h5pset_dxpl_mpio_c + * PURPOSE + * Call H5Pset_dxpl_mpio to set transfer mode of the dataset * trasfer property list - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * data_xfer_mode - transfer mode - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, October 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -137,19 +167,27 @@ nh5pset_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_dxpl_mpio_c - * Purpose: Call H5Pget_dxpl_mpio to get transfer mode of the dataset +/****if* H5FDmpiof/h5pget_dxpl_mpio_c + * NAME + * h5pget_dxpl_mpio_c + * PURPOSE + * Call H5Pget_dxpl_mpio to get transfer mode of the dataset * trasfer property list - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * data_xfer_mode - buffer to retrieve transfer mode - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, June 15, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -182,20 +220,28 @@ nh5pget_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_fapl_mpiposix_c - * Purpose: Call H5Pset_fapl_mpiposix to set mode for parallel I/O and the user +/****if* H5FDmpiof/h5pset_fapl_mpiposix_c + * NAME + * h5pset_fapl_mpiposix_c + * PURPOSE + * Call H5Pset_fapl_mpiposix to set mode for parallel I/O and the user * supplied communicator - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * comm - MPI communicator * flag - flag to use GPFS hints - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, May 6, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_fapl_mpiposix_c(hid_t_f *prp_id, int_f* comm, int_f* flag) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -214,19 +260,28 @@ nh5pset_fapl_mpiposix_c(hid_t_f *prp_id, int_f* comm, int_f* flag) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_fapl_mpiposix_c - * Purpose: Call H5Pget_fapl_mpiposix to retrieve communicator and info object - * Inputs: prp_id - property list identifier - * Outputs: comm - buffer to return MPI communicator +/****if* H5FDmpiof/h5pget_fapl_mpiposix_c + * NAME + * h5pget_fapl_mpiposix_c + * PURPOSE + * Call H5Pget_fapl_mpiposix to retrieve communicator and info object + * INPUTS + * prp_id - property list identifier + * OUTPUTS + * comm - buffer to return MPI communicator * flag - flag to use GPFS hints - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, May 6, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_fapl_mpiposix_c(hid_t_f *prp_id, int_f* comm, int_f* flag) +/******/ { int ret_value = -1; hid_t c_prp_id; diff --git a/fortran/src/H5FDmpioff.f90 b/fortran/src/H5FDmpioff.f90 index 787f0d5..ea9283c 100644 --- a/fortran/src/H5FDmpioff.f90 +++ b/fortran/src/H5FDmpioff.f90 @@ -1,3 +1,13 @@ +!****h* ROBODoc/H5FDMPIO +! +! NAME +! MODULE H5FDMPIO +! +! PURPOSE +! This file contains Fortran interfaces for H5P functions needed by +! parallel MPI programs. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,238 +23,215 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! -! -! This file contains Fortran90 interfaces for H5P functions needed by || MPI programs. -! - MODULE H5FDMPIO - USE H5GLOBAL - CONTAINS - -!---------------------------------------------------------------------- -! Name: h5pset_fapl_mpio_f -! -! Purpose: Stores MPI IO communicator information to the file -! access property list. -! -! Inputs: -! prp_id - file access property list identifier -! comm - MPI-2 communicator -! info - MPI-2 info object -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! November, 2000 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5pset_fapl_mpio_f(prp_id, comm, info, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: comm ! MPI communicator to be used for file open - ! as defined in MPI_FILE_OPEN of MPI-2 - INTEGER, INTENT(IN) :: info ! MPI info object to be used for file open - ! as defined in MPI_FILE_OPEN of MPI-2 - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER, EXTERNAL :: h5pset_fapl_mpio_c - hdferr = h5pset_fapl_mpio_c(prp_id, comm, info) - END SUBROUTINE h5pset_fapl_mpio_f - -!---------------------------------------------------------------------- -! Name: h5pget_fapl_mpio_f -! -! Purpose: Returns MPI communicator information. -! -! Inputs: -! prp_id - file access property list identifier -! Outputs: -! comm - MPI-2 communicator -! info - MPI-2 info object -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! November, 2000 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_fapl_mpio_f(prp_id, comm, info, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: comm ! buffer to return communicator - INTEGER, INTENT(OUT) :: info ! buffer to return info object - ! as defined in MPI_FILE_OPEN of MPI-2 - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER, EXTERNAL :: h5pget_fapl_mpio_c - hdferr = h5pget_fapl_mpio_c(prp_id, comm, info) - END SUBROUTINE h5pget_fapl_mpio_f - -!---------------------------------------------------------------------- -! Name: h5pset_dxpl_mpio_f -! -! Purpose: Sets data transfer mode. -! -! Inputs: -! prp_id - data transfer property list identifier -! data_xfer_mode - transfer mode -! Possible values are: -! H5FD_MPIO_INDEPENDENT_F -! H5FD_MPIO_COLLECTIVE_F -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! November, 2000 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_dxpl_mpio_f(prp_id, data_xfer_mode, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: data_xfer_mode ! Data transfer mode. Possible values are: - ! H5FD_MPIO_INDEPENDENT_F - ! H5FD_MPIO_COLLECTIVE_F - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER, EXTERNAL :: h5pset_dxpl_mpio_c - hdferr = h5pset_dxpl_mpio_c(prp_id, data_xfer_mode) - END SUBROUTINE h5pset_dxpl_mpio_f - -!---------------------------------------------------------------------- -! Name: h5pget_dxpl_mpio_f -! -! Purpose: Returns the data transfer mode. -! -! Inputs: -! prp_id - data transfer property list identifier -! Outputs: -! data_xfer_mode - transfer mode -! Possible values are: -! H5FD_MPIO_INDEPENDENT_F -! H5FD_MPIO_COLLECTIVE_F -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! November, 2000 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_dxpl_mpio_f(prp_id, data_xfer_mode, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: data_xfer_mode ! Data transfer mode. Possible values are: - ! H5FD_MPIO_INDEPENDENT_F - ! H5FD_MPIO_COLLECTIVE_F - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER, EXTERNAL :: h5pget_dxpl_mpio_c - hdferr = h5pget_dxpl_mpio_c(prp_id, data_xfer_mode) - END SUBROUTINE h5pget_dxpl_mpio_f - - -!---------------------------------------------------------------------- -! Name: h5pset_fapl_mpiposix_f -! -! Purpose: Stores MPI IO communicator information to the file -! access property list. -! -! Inputs: -! prp_id - file access property list identifier -! comm - MPI-2 communicator -! use_gpfs - logical flag to use the GPFS hints -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! May 6, 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5pset_fapl_mpiposix_f(prp_id, comm, use_gpfs, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: comm ! MPI communicator to be used for file open - ! as defined in MPI_FILE_OPEN of MPI-2 - LOGICAL, INTENT(IN) :: use_gpfs - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: flag - - INTEGER, EXTERNAL :: h5pset_fapl_mpiposix_c - flag = 0 - if(use_gpfs) flag = 1 - hdferr = h5pset_fapl_mpiposix_c(prp_id, comm, flag) - END SUBROUTINE h5pset_fapl_mpiposix_f - -!---------------------------------------------------------------------- -! Name: h5pget_fapl_mpiposix_f -! -! Purpose: Returns MPI communicator information. -! -! Inputs: -! prp_id - file access property list identifier -! Outputs: -! comm - MPI-2 communicator -! use_gpfs - flag to use GPFS hints -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! May 6, 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_fapl_mpiposix_f(prp_id, comm, use_gpfs, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: comm ! buffer to return communicator - LOGICAL, INTENT(OUT) :: use_gpfs - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: flag - - INTEGER, EXTERNAL :: h5pget_fapl_mpiposix_c - hdferr = h5pget_fapl_mpiposix_c(prp_id, comm, flag) - use_gpfs = .FALSE. - if (flag .eq. 1) use_gpfs = .TRUE. - END SUBROUTINE h5pget_fapl_mpiposix_f - - END MODULE H5FDMPIO +! NOTES +! *** IMPORTANT *** +! If you add a new H5P function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** + +MODULE H5FDMPIO + USE H5GLOBAL +CONTAINS + +!****s* H5FDMPIO/h5pset_fapl_mpio_f +! +! NAME +! h5pset_fapl_mpio_f +! +! PURPOSE +! Stores MPI IO communicator information to the file +! access property list. +! +! INPUTS +! prp_id - file access property list identifier +! comm - MPI-2 communicator +! info - MPI-2 info object +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! November, 2000 +! +! SOURCE + SUBROUTINE h5pset_fapl_mpio_f(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: comm ! MPI communicator to be used for file open + ! as defined in MPI_FILE_OPEN of MPI-2 + INTEGER, INTENT(IN) :: info ! MPI info object to be used for file open + ! as defined in MPI_FILE_OPEN of MPI-2 + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER, EXTERNAL :: h5pset_fapl_mpio_c + hdferr = h5pset_fapl_mpio_c(prp_id, comm, info) + END SUBROUTINE h5pset_fapl_mpio_f + +!****s* H5FDMPIO/h5pget_fapl_mpio_f +! +! NAME +! h5pget_fapl_mpio_f +! +! PURPOSE +! Returns MPI communicator information. +! +! INPUTS +! prp_id - file access property list identifier +! OUTPUTS +! comm - MPI-2 communicator +! info - MPI-2 info object +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! November, 2000 +! +! SOURCE + SUBROUTINE h5pget_fapl_mpio_f(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: comm ! buffer to return communicator + INTEGER, INTENT(OUT) :: info ! buffer to return info object + ! as defined in MPI_FILE_OPEN of MPI-2 + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER, EXTERNAL :: h5pget_fapl_mpio_c + hdferr = h5pget_fapl_mpio_c(prp_id, comm, info) + END SUBROUTINE h5pget_fapl_mpio_f + +!****s* H5FDMPIO/h5pset_dxpl_mpio_f +! +! NAME +! h5pset_dxpl_mpio_f +! +! PURPOSE +! Sets data transfer mode. +! +! INPUTS +! prp_id - data transfer property list identifier +! data_xfer_mode - transfer mode; possible values are: +! H5FD_MPIO_INDEPENDENT_F +! H5FD_MPIO_COLLECTIVE_F +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! November, 2000 +! +! SOURCE + SUBROUTINE h5pset_dxpl_mpio_f(prp_id, data_xfer_mode, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: data_xfer_mode ! Data transfer mode. Possible values are: + ! H5FD_MPIO_INDEPENDENT_F + ! H5FD_MPIO_COLLECTIVE_F + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER, EXTERNAL :: h5pset_dxpl_mpio_c + hdferr = h5pset_dxpl_mpio_c(prp_id, data_xfer_mode) + END SUBROUTINE h5pset_dxpl_mpio_f +!****s* H5FDMPIO/h5pget_dxpl_mpio_f +! +! NAME +! h5pget_dxpl_mpio_f +! +! PURPOSE +! Returns the data transfer mode. +! +! INPUTS +! prp_id - data transfer property list identifier +! OUTPUTS +! data_xfer_mode- transfer mode; possible values are: +! H5FD_MPIO_INDEPENDENT_F +! H5FD_MPIO_COLLECTIVE_F +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! November, 2000 +! +! SOURCE + SUBROUTINE h5pget_dxpl_mpio_f(prp_id, data_xfer_mode, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: data_xfer_mode ! Data transfer mode. Possible values are: + ! H5FD_MPIO_INDEPENDENT_F + ! H5FD_MPIO_COLLECTIVE_F + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER, EXTERNAL :: h5pget_dxpl_mpio_c + hdferr = h5pget_dxpl_mpio_c(prp_id, data_xfer_mode) + END SUBROUTINE h5pget_dxpl_mpio_f + +!****s* H5FDMPIO/h5pset_fapl_mpiposix_f +! +! NAME +! h5pset_fapl_mpiposix_f +! +! PURPOSE +! Stores MPI IO communicator information to the file +! access property list. +! +! INPUTS +! prp_id - file access property list identifier +! comm - MPI-2 communicator +! use_gpfs - logical flag to use the GPFS hints +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! May 6, 2003 +! +! SOURCE + SUBROUTINE h5pset_fapl_mpiposix_f(prp_id, comm, use_gpfs, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: comm ! MPI communicator to be used for file open + ! as defined in MPI_FILE_OPEN of MPI-2 + LOGICAL, INTENT(IN) :: use_gpfs + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: flag + INTEGER, EXTERNAL :: h5pset_fapl_mpiposix_c + flag = 0 + IF(use_gpfs) flag = 1 + hdferr = h5pset_fapl_mpiposix_c(prp_id, comm, flag) + END SUBROUTINE h5pset_fapl_mpiposix_f + +!****s* H5FDMPIO/h5pget_fapl_mpiposix_f +! +! NAME +! h5pget_fapl_mpiposix_f +! +! PURPOSE +! Returns MPI communicator information. +! +! INPUTS +! prp_id - file access property list identifier +! OUTPUTS +! comm - MPI-2 communicator +! use_gpfs - flag to use GPFS hints +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! May 6, 2003 +! +! SOURCE + SUBROUTINE h5pget_fapl_mpiposix_f(prp_id, comm, use_gpfs, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: comm ! Buffer to return communicator + LOGICAL, INTENT(OUT) :: use_gpfs + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: flag + + INTEGER, EXTERNAL :: h5pget_fapl_mpiposix_c + hdferr = h5pget_fapl_mpiposix_c(prp_id, comm, flag) + use_gpfs = .FALSE. + IF (flag .EQ. 1) use_gpfs = .TRUE. + END SUBROUTINE h5pget_fapl_mpiposix_f + +END MODULE H5FDMPIO diff --git a/fortran/src/H5Ff.c b/fortran/src/H5Ff.c index 3cfc9e3..1259d4d 100644 --- a/fortran/src/H5Ff.c +++ b/fortran/src/H5Ff.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5Ff/H5Ff + * PURPOSE + * This file contains C stubs for H5F Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,29 +16,37 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for H5F Fortran APIs */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" #include "H5Eprivate.h" -/*---------------------------------------------------------------------------- - * Name: h5fcreate_c - * Purpose: Call H5Fcreate to create the file - * Inputs: name - name of the file +/****if* H5Ff/h5fcreate_c + * NAME + * h5fcreate_c + * PURPOSE + * Call H5Fcreate to create the file + * INPUTS + * name - name of the file * namelen - name length * access_flags - file access flags * crt_pr - identifier of creation property list * acc_prp - identifier of access property list - * Outputs: file_id - file identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * file_id - file identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, July 26, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5fcreate_c(_fcd name, int_f *namelen, int_f *access_flags, hid_t_f* crt_prp, hid_t_f *acc_prp, hid_t_f *file_id) +/******/ { int ret_value = -1; char *c_name; @@ -80,20 +93,26 @@ nh5fcreate_c(_fcd name, int_f *namelen, int_f *access_flags, hid_t_f* crt_prp, h return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5fflush_c - * Purpose: Call H5Fflush to flush the object - * Inputs: object_id - identifier of either a file, a dataset, +/****if* H5Ff/h5fflush_c + * NAME + * h5fflush_c + * PURPOSE + * Call H5Fflush to flush the object + * INPUTS + * object_id - identifier of either a file, a dataset, * a group, an attribute or a named data type * scope - integer to specify the flushing action, either * H5F_SCOPE_GLOBAL or H5F_SCOPE_LOCAL - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, November 5, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5fflush_c (hid_t_f *object_id, int_f *scope) +/******/ { int ret_value = -1; hid_t c_file_id; @@ -115,21 +134,27 @@ nh5fflush_c (hid_t_f *object_id, int_f *scope) } -/*---------------------------------------------------------------------------- - * Name: h5fmount_c - * Purpose: Call H5Fmount to mount the file - * Inputs: loc_id - Identifier for file or group +/****if* H5Ff/h5fmount_c + * NAME + * h5fmount_c + * PURPOSE + * Call H5Fmount to mount the file + * INPUTS + * loc_id - Identifier for file or group * dsetname - name of dataset * namelen - dsetname length * file_id - file identifier for the file to be mounted * acc_prp - identifier of access property list - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Monday, October 25, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY +*/ int_f nh5fmount_c (hid_t_f *loc_id, _fcd dsetname, int_f *namelen, hid_t_f *file_id, hid_t_f *acc_prp) +/******/ { int ret_value = -1; char *c_name; @@ -167,19 +192,25 @@ nh5fmount_c (hid_t_f *loc_id, _fcd dsetname, int_f *namelen, hid_t_f *file_id, h return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5funmount_c - * Purpose: Call H5Funmount to unmount the file - * Inputs: loc_id - Identifier for file or group +/****if* H5Ff/h5funmount_c + * NAME + * h5funmount_c + * PURPOSE + * Call H5Funmount to unmount the file + * INPUTS + * loc_id - Identifier for file or group * dsetname - name of dataset * namelen - dsetname length - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Monday, October 25, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5funmount_c (hid_t_f *loc_id, _fcd dsetname, int_f *namelen) +/******/ { int ret_value = -1; char *c_name; @@ -209,21 +240,28 @@ nh5funmount_c (hid_t_f *loc_id, _fcd dsetname, int_f *namelen) -/*---------------------------------------------------------------------------- - * Name: h5fopen_c - * Purpose: Call H5Fopen to open the file - * Inputs: name - name of the file +/****if* H5Ff/h5fopen_c + * NAME + * h5fopen_c + * PURPOSE + * Call H5Fopen to open the file + * INPUTS + * name - name of the file * namelen - name length * access_flags - file access flags * acc_prp - identifier of access property list - * Outputs: file_id - file identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * file_id - file identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, August 3, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5fopen_c (_fcd name, int_f *namelen, int_f *access_flags, hid_t_f *acc_prp, hid_t_f *file_id) +/******/ { int ret_value = -1; char *c_name; @@ -265,18 +303,25 @@ nh5fopen_c (_fcd name, int_f *namelen, int_f *access_flags, hid_t_f *acc_prp, hi return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5freopen_c - * Purpose: Call H5Freopen to open the file - * Inputs: file_id1 - file identifier - * Outputs: file_id2 - file identifier - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su +/****if* H5Ff/h5freopen_c + * NAME + * h5freopen_c + * PURPOSE + * Call H5Freopen to open the file + * INPUTS + * file_id1 - file identifier + * OUTPUTS + * file_id2 - file identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Wednesday, November 3, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5freopen_c (hid_t_f *file_id1, hid_t_f *file_id2) +/******/ { int ret_value = -1; hid_t c_file_id1, c_file_id2; @@ -291,18 +336,25 @@ nh5freopen_c (hid_t_f *file_id1, hid_t_f *file_id2) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5fget_create_plist_c - * Purpose: Call H5Fget_create_plist to get the file creation property list - * Inputs: file_id - file identifier - * Outputs: prop_id - creation property list identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal, Xiangyang Su +/****if* H5Ff/h5fget_create_plist_c + * NAME + * h5fget_create_plist_c + * PURPOSE + * Call H5Fget_create_plist to get the file creation property list + * INPUTS + * file_id - file identifier + * OUTPUTS + * prop_id - creation property list identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal, Xiangyang Su * Wednesday, November 3, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5fget_create_plist_c (hid_t_f *file_id, hid_t_f *prop_id) +/******/ { int ret_value = -1; hid_t c_file_id, c_prop_id; @@ -317,18 +369,27 @@ nh5fget_create_plist_c (hid_t_f *file_id, hid_t_f *prop_id) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5fget_access_plist_c - * Purpose: Call H5Fget_access_plist to get the file access property list - * Inputs: file_id - file identifier - * Outputs: access_id - access property list identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Ff/h5fget_access_plist_c + * NAME + * h5fget_access_plist_c + * PURPOSE + * Call H5Fget_access_plist to get the file access property list + * INPUTS + * file_id - file identifier + * OUTPUTS + * access_id - access property list identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, September 30, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5fget_access_plist_c (hid_t_f *file_id, hid_t_f *access_id) +/******/ { int ret_value = -1; hid_t c_file_id, c_access_id; @@ -343,20 +404,29 @@ nh5fget_access_plist_c (hid_t_f *file_id, hid_t_f *access_id) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5fis_hdf5_c - * Purpose: Call H5Fis_hdf5 to determone if the file is an HDF5 file - * Inputs: name - name of the file +/****if* H5Ff/h5fis_hdf5_c + * NAME + * h5fis_hdf5_c + * PURPOSE + * Call H5Fis_hdf5 to determone if the file is an HDF5 file + * INPUTS + * name - name of the file * namelen - name length - * Outputs: flag - 0 if file is not HDF5 file , positive if a file + * OUTPUTS + * flag - 0 if file is not HDF5 file , positive if a file * is an HDF5 file, and negative on failure. - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, August 3, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5fis_hdf5_c (_fcd name, int_f *namelen, int_f *flag) +/******/ { int ret_value = -1; char *c_name; @@ -380,18 +450,26 @@ nh5fis_hdf5_c (_fcd name, int_f *namelen, int_f *flag) HDfree(c_name); return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5fclose_c - * Purpose: Call H5Fclose to close the file - * Inputs: file_id - identifier of the file to be closed - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Ff/h5fclose_c + * NAME + * h5fclose_c + * PURPOSE + * Call H5Fclose to close the file + * INPUTS + * file_id - identifier of the file to be closed + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, July 26, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5fclose_c ( hid_t_f *file_id ) +/******/ { int ret_value = 0; hid_t c_file_id; @@ -400,22 +478,30 @@ nh5fclose_c ( hid_t_f *file_id ) if ( H5Fclose(c_file_id) < 0 ) ret_value = -1; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5fget_obj_count_c - * Purpose: Call H5Fget_obj_count to get number of open objects within a file - * Inputs: file_id - identifier of the file to be closed +/****if* H5Ff/h5fget_obj_count_c + * NAME + * h5fget_obj_count_c + * PURPOSE + * Call H5Fget_obj_count to get number of open objects within a file + * INPUTS + * file_id - identifier of the file to be closed * obj_type - type of the object - * Returns: obj_count - number of objects + * RETURNS + * obj_count - number of objects * 0 on success, -1 on failure - * Programmer: Elena Pourmal + * AUTHOR + * Elena Pourmal * Monday, September 30, 2002 - * Modifications: + * HISTORY + * * Changed type of obj_count to size_t_f * Thursday, September 25, 2008 - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5fget_obj_count_c ( hid_t_f *file_id , int_f *obj_type, size_t_f * obj_count) +/******/ { int ret_value = 0; hid_t c_file_id; @@ -429,23 +515,32 @@ nh5fget_obj_count_c ( hid_t_f *file_id , int_f *obj_type, size_t_f * obj_count) *obj_count = (size_t_f)c_obj_count; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5fget_obj_ids_c - * Purpose: Call H5Fget_obj_count to get number of open objects within a file - * Inputs: file_id - identifier of the file to be closed - * obj_type - type of the object - * Returns: obj_ids - iarray of open objects identifiers +/****if* H5Ff/h5fget_obj_ids_c + * NAME + * h5fget_obj_ids_c + * PURPOSE + * Call H5Fget_obj_count to get number of open objects within a file + * INPUTS + * file_id - identifier of the file to be closed + * obj_type - type of the object + * RETURNS + * obj_ids - iarray of open objects identifiers * 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Monday, September 30, 2002 - * Modifications: - * Changed type of max_obj to size_t_f; added parameter for the - * number of open objects - * Thursday, September 25, 2008 EIP - *---------------------------------------------------------------------------*/ + * AUTHOR + * Elena Pourmal + * Monday, September 30, 2002 + * HISTORY + * + * Changed type of max_obj to size_t_f; added parameter for the + * number of open objects + * Thursday, September 25, 2008 EIP + * + * SOURCE +*/ int_f -nh5fget_obj_ids_c(hid_t_f *file_id, int_f *obj_type, size_t_f *max_objs, +nh5fget_obj_ids_c ( hid_t_f *file_id , int_f *obj_type, size_t_f *max_objs, hid_t_f *obj_ids, size_t_f *num_objs) +/******/ { int ret_value = 0; hid_t c_file_id; @@ -472,20 +567,25 @@ nh5fget_obj_ids_c(hid_t_f *file_id, int_f *obj_type, size_t_f *max_objs, return ret_value; } - -/*---------------------------------------------------------------------------- - * Name: h5fget_freespace_c - * Purpose: Call H5Fget_freespace to get amount of free space within a file - * Inputs: file_id - identifier of the file to query - * Returns: free_space - amount of free space in file +/****if* H5Ff/h5fget_freespace_c + * NAME + * h5fget_freespace_c + * PURPOSE + * Call H5Fget_freespace to get amount of free space within a file + * INPUTS + * file_id - identifier of the file to query + * RETURNS + * free_space - amount of free space in file * 0 on success, -1 on failure - * Programmer: Quincey Koziol + * AUTHOR + * Quincey Koziol * Tuesday, October 7, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5fget_freespace_c ( hid_t_f *file_id , hssize_t_f *free_space) +/******/ { int ret_value = 0; hid_t c_file_id; @@ -497,20 +597,27 @@ nh5fget_freespace_c ( hid_t_f *file_id , hssize_t_f *free_space) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5fget_name_c - * Purpose: Call H5Fget_name to get file's name - * Inputs: obj_id - object identifier +/****if* H5Ff/h5fget_name_c + * NAME + * h5fget_name_c + * PURPOSE + * Call H5Fget_name to get file's name + * INPUTS + * obj_id - object identifier * buflen -size of the buffer - * Outputs: buf - buffer to hold the name + * OUTPUTS + * buf - buffer to hold the name * size - size of the file's name - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, July 6, 2004 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5fget_name_c(hid_t_f *obj_id, size_t_f *size, _fcd buf, size_t_f *buflen) +/******/ { char *c_buf = NULL; /* Buffer to hold C string */ ssize_t size_c = -1; @@ -539,18 +646,25 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5fget_filesize_c - * Purpose: Call H5Fget_filesize to get file size - * Inputs: file_id - file identifier - * Outputs: size - size of the file - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Ff/h5fget_filesize_c + * NAME + * h5fget_filesize_c + * PURPOSE + * Call H5Fget_filesize to get file size + * INPUTS + * file_id - file identifier + * OUTPUTS + * size - size of the file + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, July 7, 2004 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5fget_filesize_c(hid_t_f *file_id, hsize_t_f *size) +/******/ { hsize_t size_c; herr_t ret_value=0; /* Return value */ diff --git a/fortran/src/H5Fff.f90 b/fortran/src/H5Fff.f90 index dcd6ff6..0c70ad4 100644 --- a/fortran/src/H5Fff.f90 +++ b/fortran/src/H5Fff.f90 @@ -1,3 +1,15 @@ +!****h* ROBODoc/H5F +! +! NAME +! MODULE H5F +! +! FILE +! H5Fff.f90 +! +! PURPOSE +! This file contains Fortran interfaces for H5F functions. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,863 +25,810 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! -! -! This file contains Fortran90 interfaces for H5F functions. -! - MODULE H5F - USE H5GLOBAL - - CONTAINS - -!---------------------------------------------------------------------- -! Name: h5fcreate_f -! -! Purpose: Creates HDF5 files. -! -! Inputs: -! name - name of the file to create -! access_flags - File access flags. Allowable values are: -! H5F_ACC_TRUNC_F -! H5F_ACC_EXCL_F -! Outputs: -! file_id - file identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! creation_prp - file creation property list identifier -! access_prp - file access property list identifier -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5fcreate_f(name, access_flags, file_id, hdferr, & - creation_prp, access_prp) - IMPLICIT NONE - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file - INTEGER, INTENT(IN) :: access_flags ! File access flags - INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: creation_prp - ! File creation propertly - ! list identifier - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp - ! File access property list - ! identifier - INTEGER(HID_T) :: creation_prp_default - INTEGER(HID_T) :: access_prp_default - INTEGER :: namelen ! Length of the name character string - -! INTEGER, EXTERNAL :: h5fcreate_c -! Interface is needed for MS FORTRAN -! - INTERFACE - INTEGER FUNCTION h5fcreate_c(name, namelen, access_flags, & - creation_prp_default, access_prp_default, file_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FCREATE_C':: h5fcreate_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: access_flags - INTEGER(HID_T), INTENT(OUT) :: file_id - INTEGER(HID_T), INTENT(IN) :: creation_prp_default - INTEGER(HID_T), INTENT(IN) :: access_prp_default - INTEGER :: namelen - END FUNCTION h5fcreate_c - END INTERFACE - - creation_prp_default = H5P_DEFAULT_F - access_prp_default = H5P_DEFAULT_F - - if (present(creation_prp)) creation_prp_default = creation_prp - if (present(access_prp)) access_prp_default = access_prp - namelen = LEN_TRIM(name) - - hdferr = h5fcreate_c(name, namelen, access_flags, & - creation_prp_default, access_prp_default, file_id) - - END SUBROUTINE h5fcreate_f - -!---------------------------------------------------------------------- -! Name: h5fflush_f -! -! Purpose: Flushes all buffers associated with a file to disk -! -! Inputs: -! object_id - identifier of object used to identify -! the file. -! scope - specifies the scope of the flushing action. -! Possible values are: -! H5F_SCOPE_GLOBAL_F -! H5F_SCOPE_LOCAL_F -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! creation_prp - file creation property list identifier -! access_prp - file access property list identifier -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5fflush_f(object_id, scope, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: object_id !identifier for any object - !associate with a file, - !including the file itself, - !a dataset, a group, an - !attribute, or a named - !data type - - INTEGER, INTENT(IN) :: scope !scope of the flushing - !action, possible values - !are: H5F_SCOPE_GLOBAL_F - ! which flushes the entire - !virtual file, - !and H5F_SCOPE_LOCAL_F - !which flushes only the - !specified file. - - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5fflush_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5fflush_c(object_id, scope) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FFLUSH_C':: h5fflush_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: object_id - INTEGER, INTENT(IN) :: scope - END FUNCTION h5fflush_c - END INTERFACE - - hdferr = h5fflush_c(object_id, scope) - - END SUBROUTINE h5fflush_f - -!---------------------------------------------------------------------- -! Name: h5fmount_f -! -! Purpose: Mounts a file. -! -! Inputs: -! loc_id - the identifier for of file or group in -! which name is defined -! name - the name of the group onto which the file -! specified by child_id is to be mounted. -! child_id - the identifier of the file to be mounted. -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! access_prp - the identifier of the property list to be used -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5fmount_f(loc_id, name, child_id, hdferr, access_prp) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for file or group - ! in which dsetname is defined - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group - INTEGER(HID_T), INTENT(IN) :: child_id ! File identifier for the - ! file to be mounted - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp - ! File access property list - ! identifier - INTEGER(HID_T) :: access_prp_default - INTEGER :: namelen ! Length of the name character string - -! INTEGER, EXTERNAL :: h5fmount_c -! Interface is needed for MS FORTRAN -! - INTERFACE - INTEGER FUNCTION h5fmount_c(loc_id, name, namelen, & - child_id, access_prp_default) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FMOUNT_C':: h5fmount_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER(HID_T), INTENT(IN) :: child_id - INTEGER(HID_T), INTENT(IN) :: access_prp_default - INTEGER :: namelen - END FUNCTION h5fmount_c - END INTERFACE - - access_prp_default = H5P_DEFAULT_F - if (present(access_prp)) access_prp_default = access_prp - namelen = LEN(name) - hdferr = h5fmount_c(loc_id, name, namelen, child_id, access_prp_default) - - END SUBROUTINE h5fmount_f - - -!---------------------------------------------------------------------- -! Name: h5funmount_f -! -! Purpose: Unmounts a file. -! -! Inputs: -! loc_id - the identifier for of file or group in -! which name is defined -! name - the name of the mount point -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5funmount_f(loc_id, name, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for file or group - ! at which the specified file - ! is to be unmounted - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the mount point - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: namelen ! Length of the name character string - -! INTEGER, EXTERNAL :: h5fumount_c -! Interface is needed for MS FORTRAN -! - INTERFACE - INTEGER FUNCTION h5funmount_c(loc_id, name, namelen) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FUNMOUNT_C':: h5funmount_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER :: namelen - END FUNCTION h5funmount_c - END INTERFACE - - namelen = LEN(name) - hdferr = h5funmount_c(loc_id, name, namelen) - - END SUBROUTINE h5funmount_f - -!---------------------------------------------------------------------- -! Name: h5fopen_f -! -! Purpose: Opens HDF5 file. -! -! Inputs: -! name - name of the file to acecss -! access_flags - File access flags. Allowable values are: -! H5F_ACC_RDWR_F -! H5F_ACC_RDONLY_F -! Outputs: -! file_id - file identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! access_prp - file access property list identifier -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5fopen_f(name, access_flags, file_id, hdferr, & - access_prp) - IMPLICIT NONE - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file - INTEGER, INTENT(IN) :: access_flags ! File access flags - INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp - ! File access property list - ! identifier - INTEGER(HID_T) :: access_prp_default - INTEGER :: namelen ! Length of the name character string - -! INTEGER, EXTERNAL :: h5fopen_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5fopen_c(name, namelen, access_flags, & - access_prp_default, file_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FOPEN_C':: h5fopen_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER :: namelen - INTEGER, INTENT(IN) :: access_flags - INTEGER(HID_T), INTENT(IN) :: access_prp_default - INTEGER(HID_T), INTENT(OUT) :: file_id - END FUNCTION h5fopen_c - END INTERFACE - - access_prp_default = H5P_DEFAULT_F - if (present(access_prp)) access_prp_default = access_prp - namelen = LEN(name) - hdferr = h5fopen_c(name, namelen, access_flags, & +! NOTES +! *** IMPORTANT *** +! If you add a new H5F function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** + +MODULE H5F + USE H5GLOBAL + +CONTAINS +!****s* H5F/h5fcreate_f +! +! NAME +! h5fcreate_f +! +! PURPOSE +! Creates HDF5 files. +! +! INPUTS +! name - name of the file to create +! access_flags - File access flags. Allowable values are: +! H5F_ACC_TRUNC_F +! H5F_ACC_EXCL_F +! OUTPUTS +! file_id - file identifier +! hdferr - Returns 0 if successful and -1 if fails +! +! OPTIONAL PARAMETERS +! creation_prp - file creation property list identifier +! access_prp - file access property list identifier +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! SOURCE + SUBROUTINE h5fcreate_f(name, access_flags, file_id, hdferr, & + creation_prp, access_prp) + IMPLICIT NONE + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file + INTEGER, INTENT(IN) :: access_flags ! File access flags + INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: creation_prp + ! File creation propertly + ! list identifier + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp + ! File access property list + ! identifier +!***** + INTEGER(HID_T) :: creation_prp_default + INTEGER(HID_T) :: access_prp_default + INTEGER :: namelen ! Length of the name character string + + INTERFACE + INTEGER FUNCTION h5fcreate_c(name, namelen, access_flags, & + creation_prp_default, access_prp_default, file_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FCREATE_C':: h5fcreate_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: access_flags + INTEGER(HID_T), INTENT(OUT) :: file_id + INTEGER(HID_T), INTENT(IN) :: creation_prp_default + INTEGER(HID_T), INTENT(IN) :: access_prp_default + INTEGER :: namelen + END FUNCTION h5fcreate_c + END INTERFACE + + creation_prp_default = H5P_DEFAULT_F + access_prp_default = H5P_DEFAULT_F + + IF (PRESENT(creation_prp)) creation_prp_default = creation_prp + IF (PRESENT(access_prp)) access_prp_default = access_prp + namelen = LEN_TRIM(name) + hdferr = h5fcreate_c(name, namelen, access_flags, & + creation_prp_default, access_prp_default, file_id) + + END SUBROUTINE h5fcreate_f +!****s* H5F/h5fflush_f +! +! NAME +! h5fflush_f +! +! PURPOSE +! Flushes all buffers associated WITH a file to disk +! +! INPUTS +! object_id - identifier of object used to identify the file. +! scope - specifies the scope of the flushing action. +! Possible values are: +! H5F_SCOPE_GLOBAL_F +! H5F_SCOPE_LOCAL_F +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! +! OPTIONAL PARAMETERS +! creation_prp - file creation property list identifier +! access_prp - file access property list identifier +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! SOURCE + SUBROUTINE h5fflush_f(object_id, scope, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: object_id !identifier for any object + !associate with a file, + !including the file itself, + !a dataset, a group, an + !attribute, or a named + !data type + + INTEGER, INTENT(IN) :: scope !scope of the flushing + !action, possible values + !are: H5F_SCOPE_GLOBAL_F + ! which flushes the entire + !virtual file, + !and H5F_SCOPE_LOCAL_F + !which flushes only the + !specified file. + + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5fflush_c(object_id, scope) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FFLUSH_C':: h5fflush_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: object_id + INTEGER, INTENT(IN) :: scope + END FUNCTION h5fflush_c + END INTERFACE + + hdferr = h5fflush_c(object_id, scope) + + END SUBROUTINE h5fflush_f +!****s* H5F/h5fmount_f +! +! NAME +! h5fmount_f +! +! PURPOSE +! Mounts a file. +! +! INPUTS +! loc_id - the identifier for of file or group in +! which name is defined +! name - the name of the group onto which the file +! specified by child_id is to be mounted. +! child_id - the identifier of the file to be mounted. +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! access_prp - the identifier of the property list to be used +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! SOURCE + SUBROUTINE h5fmount_f(loc_id, name, child_id, hdferr, access_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for file or group + ! in which dsetname is defined + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group + INTEGER(HID_T), INTENT(IN) :: child_id ! File identifier for the + ! file to be mounted + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp + ! File access property list + ! identifier +!***** + INTEGER(HID_T) :: access_prp_default + INTEGER :: namelen ! Length of the name character string + + INTERFACE + INTEGER FUNCTION h5fmount_c(loc_id, name, namelen, & + child_id, access_prp_default) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FMOUNT_C':: h5fmount_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(HID_T), INTENT(IN) :: child_id + INTEGER(HID_T), INTENT(IN) :: access_prp_default + INTEGER :: namelen + END FUNCTION h5fmount_c + END INTERFACE + + access_prp_default = H5P_DEFAULT_F + IF (PRESENT(access_prp)) access_prp_default = access_prp + namelen = LEN_TRIM(name) + hdferr = h5fmount_c(loc_id, name, namelen, child_id, access_prp_default) + + END SUBROUTINE h5fmount_f + +!****s* H5F/h5funmount_f +! +! NAME +! h5funmount_f +! +! PURPOSE +! Unmounts a file. +! +! INPUTS +! loc_id - the identifier for of file or group in +! which name is defined +! name - the name of the mount point +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! SOURCE + SUBROUTINE h5funmount_f(loc_id, name, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for file or group + ! at which the specified file + ! is to be unmounted + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the mount point + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: namelen ! Length of the name character string + + INTERFACE + INTEGER FUNCTION h5funmount_c(loc_id, name, namelen) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FUNMOUNT_C':: h5funmount_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + END FUNCTION h5funmount_c + END INTERFACE + + namelen = LEN_TRIM(name) + hdferr = h5funmount_c(loc_id, name, namelen) + + END SUBROUTINE h5funmount_f +!****s* H5F/h5fopen_f +! +! NAME +! h5fopen_f +! +! PURPOSE +! Opens HDF5 file. +! +! INPUTS +! name - name of the file to acecss +! access_flags - File access flags. Allowable values are: +! H5F_ACC_RDWR_F +! H5F_ACC_RDONLY_F +! OUTPUTS +! file_id - file identifier +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! access_prp - file access property list identifier +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! SOURCE + SUBROUTINE h5fopen_f(name, access_flags, file_id, hdferr, access_prp) + IMPLICIT NONE + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file + INTEGER, INTENT(IN) :: access_flags ! File access flags + INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp + ! File access property list + ! identifier +!***** + INTEGER(HID_T) :: access_prp_default + INTEGER :: namelen ! Length of the name character string + + INTERFACE + INTEGER FUNCTION h5fopen_c(name, namelen, access_flags, & + access_prp_default, file_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FOPEN_C':: h5fopen_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER, INTENT(IN) :: access_flags + INTEGER(HID_T), INTENT(IN) :: access_prp_default + INTEGER(HID_T), INTENT(OUT) :: file_id + END FUNCTION h5fopen_c + END INTERFACE + + access_prp_default = H5P_DEFAULT_F + IF (PRESENT(access_prp)) access_prp_default = access_prp + namelen = LEN_TRIM(name) + hdferr = h5fopen_c(name, namelen, access_flags, & access_prp_default, file_id) - - END SUBROUTINE h5fopen_f - -!---------------------------------------------------------------------- -! Name: h5freopen_f -! -! Purpose: Reopens HDF5 file. -! -! Inputs: -! file_id - identifier of a file for which an -! additional identifier is required -! Outputs: -! ret_file_id - new file identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5freopen_f(file_id, ret_file_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier - INTEGER(HID_T), INTENT(OUT) :: ret_file_id ! New File identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5freopen_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5freopen_c(file_id, ret_file_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FREOPEN_C':: h5freopen_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: file_id - INTEGER(HID_T), INTENT(OUT) :: ret_file_id - END FUNCTION h5freopen_c - END INTERFACE - - hdferr = h5freopen_c(file_id, ret_file_id) - - END SUBROUTINE h5freopen_f - -!---------------------------------------------------------------------- -! Name: h5fget_create_plist_f -! -! Purpose: Returns a file creation property list identifier. -! -! Inputs: -! file_id - identifier of a file to get -! get creation property list of -! Outputs: -! prop_id - creation property list identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5fget_create_plist_f(file_id, prop_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier - INTEGER(HID_T), INTENT(OUT) :: prop_id ! File creation property - ! list identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5fget_create_plist_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5fget_create_plist_c(file_id, prop_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) -!DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_CREATE_PLIST_C':: h5fget_create_plist_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: file_id - INTEGER(HID_T), INTENT(OUT) :: prop_id - END FUNCTION h5fget_create_plist_c - END INTERFACE - - hdferr = h5fget_create_plist_c(file_id, prop_id) - - END SUBROUTINE h5fget_create_plist_f - -!---------------------------------------------------------------------- -! Name: h5fget_access_plist_f -! -! Purpose: Returns a file access property list identifier. -! -! Inputs: -! file_id - identifier of a file to get -! get creation property list of -! Outputs: -! access_id - access property list identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5fget_access_plist_f(file_id, access_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier - INTEGER(HID_T), INTENT(OUT) :: access_id ! File access property - ! list identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5fget_access_plist_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5fget_access_plist_c(file_id, access_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) -!DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_CREATE_PLIST_C':: h5fget_access_plist_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: file_id - INTEGER(HID_T), INTENT(OUT) :: access_id - END FUNCTION h5fget_access_plist_c - END INTERFACE - - - hdferr = h5fget_access_plist_c(file_id, access_id) - - END SUBROUTINE h5fget_access_plist_f - -!---------------------------------------------------------------------- -! Name: h5fis_hdf5_f -! -! Purpose: Determines whether a file is in the HDF5 format. -! -! Inputs: -! name - name of the file to check -! Outputs: -! status - indicates if file is and HDF5 file -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5fis_hdf5_f(name, status, hdferr) - IMPLICIT NONE - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file - LOGICAL, INTENT(OUT) :: status ! Indicates if file - ! is an HDF5 file - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: namelen ! Length of the name character string - INTEGER :: flag ! "TRUE/FALSE" flag from C routine - ! to define status value. - -! INTEGER, EXTERNAL :: h5fis_hdf5_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5fis_hdf5_c(name, namelen, flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FIS_HDF5_C':: h5fis_hdf5_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER :: namelen - INTEGER :: flag - END FUNCTION h5fis_hdf5_c - END INTERFACE - - namelen = LEN(name) - hdferr = h5fis_hdf5_c(name, namelen, flag) - status = .TRUE. - if (flag .EQ. 0) status = .FALSE. - - END SUBROUTINE h5fis_hdf5_f - -!---------------------------------------------------------------------- -! Name: h5fclose_f -! -! Purpose: Closes HDF5 file. -! -! Inputs: -! file_id - file identifier -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5fclose_f(file_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5fclose_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5fclose_c(file_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FCLOSE_C':: h5fclose_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: file_id - END FUNCTION h5fclose_c - END INTERFACE - - hdferr = h5fclose_c(file_id) - - END SUBROUTINE h5fclose_f - -!---------------------------------------------------------------------- -! Name: h5fget_obj_count_f -! -! Purpose: Gets number of the objects open within a file -! -! Inputs: -! file_id - file identifier -! obj_type - type of the object; possible values are: -! H5F_OBJ_FILE_F -! H5F_OBJ_DATASET_F -! H5F_OBJ_GROUP_F -! H5F_OBJ_DATATYPE_F -! H5F_OBJ_ALL_F -! Outputs: -! obj_count - number of open objects -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! September 30, 2002 -! -! Modifications: -! Changed the type of obj_count to INTEGER(SIZE_T) -! September 25, 2008 EIP -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5fget_obj_count_f(file_id, obj_type, obj_count, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier - INTEGER, INTENT(IN) :: obj_type ! Object type - INTEGER(SIZE_T), INTENT(OUT) :: obj_count - ! Number of open objects - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5fget_obj_count_c(file_id, obj_type, obj_count) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_OBJ_COUNT_C':: h5fget_obj_count_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: file_id - INTEGER, INTENT(IN) :: obj_type ! Object type - INTEGER(SIZE_T), INTENT(OUT) :: obj_count - ! Number of open objects - END FUNCTION h5fget_obj_count_c - END INTERFACE - - hdferr = h5fget_obj_count_c(file_id, obj_type, obj_count) - - END SUBROUTINE h5fget_obj_count_f - -!---------------------------------------------------------------------- -! Name: h5fget_obj_ids_f -! -! Purpose: Get list of open objects identifiers within a file -! -! Inputs: -! file_id - file identifier -! obj_type - type of the object; possible values are: -! H5F_OBJ_FILE_F -! H5F_OBJ_DATASET_F -! H5F_OBJ_GROUP_F -! H5F_OBJ_DATATYPE_F -! H5F_OBJ_ALL_F -! Outputs: -! obj_ids - array of open object identifiers -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! September 30, 2002 -! -! Modifications: -! Added optional parameter num_objs for number of open objects -! of the specified type and changed type of max_obj to -! INTEGER(SIZE_T) -! September 25, 2008 EIP -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5fget_obj_ids_f(file_id, obj_type, max_objs, obj_ids, hdferr, num_objs) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier - INTEGER, INTENT(IN) :: obj_type ! Object type - INTEGER(SIZE_T), INTENT(IN) :: max_objs ! Maximum # of objects to retrieve - INTEGER(HID_T), DIMENSION(*), INTENT(INOUT) :: obj_ids + END SUBROUTINE h5fopen_f +!****s* H5F/h5freopen_f +! +! NAME +! h5freopen_f +! +! PURPOSE +! Reopens HDF5 file. +! +! INPUTS +! file_id - identifier of a file for which an +! additional identifier is required +! OUTPUTS +! ret_file_id - new file identifier +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! SOURCE + SUBROUTINE h5freopen_f(file_id, ret_file_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier + INTEGER(HID_T), INTENT(OUT) :: ret_file_id ! New File identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5freopen_c(file_id, ret_file_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FREOPEN_C':: h5freopen_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: file_id + INTEGER(HID_T), INTENT(OUT) :: ret_file_id + END FUNCTION h5freopen_c + END INTERFACE + + hdferr = h5freopen_c(file_id, ret_file_id) + + END SUBROUTINE h5freopen_f +!****s* H5F/h5fget_create_plist_f +! +! NAME +! h5fget_create_plist_f +! +! PURPOSE +! Returns a file creation property list identifier. +! +! INPUTS +! file_id - identifier of a file to creation property list of +! OUTPUTS +! prop_id - creation property list identifier +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! SOURCE + SUBROUTINE h5fget_create_plist_f(file_id, prop_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier + INTEGER(HID_T), INTENT(OUT) :: prop_id ! File creation property + ! list identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5fget_create_plist_c(file_id, prop_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_CREATE_PLIST_C':: h5fget_create_plist_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: file_id + INTEGER(HID_T), INTENT(OUT) :: prop_id + END FUNCTION h5fget_create_plist_c + END INTERFACE + + hdferr = h5fget_create_plist_c(file_id, prop_id) + + END SUBROUTINE h5fget_create_plist_f +!****s* H5F/h5fget_access_plist_f +! +! NAME +! h5fget_access_plist_f +! +! PURPOSE +! Returns a file access property list identifier. +! +! INPUTS +! file_id - identifier of a file to creation property list of +! OUTPUTS +! access_id - access property list identifier +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! SOURCE + SUBROUTINE h5fget_access_plist_f(file_id, access_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier + INTEGER(HID_T), INTENT(OUT) :: access_id ! File access property + ! list identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5fget_access_plist_c(file_id, access_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_CREATE_PLIST_C':: h5fget_access_plist_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: file_id + INTEGER(HID_T), INTENT(OUT) :: access_id + END FUNCTION h5fget_access_plist_c + END INTERFACE + + hdferr = h5fget_access_plist_c(file_id, access_id) + + END SUBROUTINE h5fget_access_plist_f + +!****s* H5F/h5fis_hdf5_f +! +! NAME +! h5fis_hdf5_f +! +! PURPOSE +! Determines whether a file is in the HDF5 format. +! +! INPUTS +! name - name of the file to check +! OUTPUTS +! status - indicates if file is and HDF5 file +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! SOURCE + SUBROUTINE h5fis_hdf5_f(name, status, hdferr) + IMPLICIT NONE + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file + LOGICAL, INTENT(OUT) :: status ! Indicates if file + ! is an HDF5 file + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: namelen ! Length of the name character string + INTEGER :: flag ! "TRUE/FALSE" flag from C routine + ! to define status value. + + INTERFACE + INTEGER FUNCTION h5fis_hdf5_c(name, namelen, flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FIS_HDF5_C':: h5fis_hdf5_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER :: flag + END FUNCTION h5fis_hdf5_c + END INTERFACE + + namelen = LEN_TRIM(name) + hdferr = h5fis_hdf5_c(name, namelen, flag) + status = .TRUE. + IF (flag .EQ. 0) status = .FALSE. + + END SUBROUTINE h5fis_hdf5_f +!****s* H5F/h5fclose_f +! +! NAME +! h5fclose_f +! +! PURPOSE +! Closes HDF5 file. +! +! INPUTS +! file_id - file identifier +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! SOURCE + SUBROUTINE h5fclose_f(file_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5fclose_c(file_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FCLOSE_C':: h5fclose_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: file_id + END FUNCTION h5fclose_c + END INTERFACE + + hdferr = h5fclose_c(file_id) + + END SUBROUTINE h5fclose_f + +!****s* H5F/h5fget_obj_count_f +! +! NAME +! h5fget_obj_count_f +! +! PURPOSE +! Gets number of the objects open within a file +! +! INPUTS +! file_id - file identifier +! obj_type - type of the object; possible values are: +! H5F_OBJ_FILE_F +! H5F_OBJ_DATASET_F +! H5F_OBJ_GROUP_F +! H5F_OBJ_DATATYPE_F +! H5F_OBJ_ALL_F +! OUTPUTS +! obj_count - number of open objects +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! September 30, 2002 +! +! HISTORY +! Changed the type of obj_count to INTEGER(SIZE_T) +! September 25, 2008 EIP +! +! SOURCE + SUBROUTINE h5fget_obj_count_f(file_id, obj_type, obj_count, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier + INTEGER, INTENT(IN) :: obj_type ! Object type + INTEGER(SIZE_T), INTENT(OUT) :: obj_count + ! Number of open objects + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5fget_obj_count_c(file_id, obj_type, obj_count) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_OBJ_COUNT_C':: h5fget_obj_count_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: file_id + INTEGER, INTENT(IN) :: obj_type ! Object type + INTEGER(SIZE_T), INTENT(OUT) :: obj_count + ! Number of open objects + END FUNCTION h5fget_obj_count_c + END INTERFACE + + hdferr = h5fget_obj_count_c(file_id, obj_type, obj_count) + + END SUBROUTINE h5fget_obj_count_f + +!****s* H5F/h5fget_obj_ids_f +! +! NAME +! h5fget_obj_ids_f +! +! PURPOSE +! Get list of open objects identifiers within a file +! +! INPUTS +! file_id - file identifier +! obj_type - type of the object; possible values are: +! H5F_OBJ_FILE_F +! H5F_OBJ_DATASET_F +! H5F_OBJ_GROUP_F +! H5F_OBJ_DATATYPE_F +! H5F_OBJ_ALL_F +! OUTPUTS +! obj_ids - array of open object identifiers +! hdferr - Returns 0 if successful and -1 if fails +! +! OPTIONAL PARAMETERS +! num_objs - number of open objects +! +! AUTHOR +! Elena Pourmal +! September 30, 2002 +! +! HISTORY +! Added optional parameter num_objs for number of open objects +! of the specified type and changed type of max_obj to +! INTEGER(SIZE_T) +! September 25, 2008 EIP +! +! SOURCE + SUBROUTINE h5fget_obj_ids_f(file_id, obj_type, max_objs, obj_ids, hdferr, num_objs) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier + INTEGER, INTENT(IN) :: obj_type ! Object type + INTEGER(SIZE_T), INTENT(IN) :: max_objs ! Maximum # of objects to retrieve + INTEGER(HID_T), DIMENSION(*), INTENT(INOUT) :: obj_ids ! Array of open objects iidentifiers - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(SIZE_T), INTENT(OUT), OPTIONAL :: num_objs - INTEGER(SIZE_T) :: c_num_objs - ! Number of open objects of the specified type - - INTERFACE - INTEGER FUNCTION h5fget_obj_ids_c(file_id, obj_type, max_objs, obj_ids, c_num_objs) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_OBJ_IDS_C':: h5fget_obj_ids_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: file_id - INTEGER, INTENT(IN) :: obj_type - INTEGER(SIZE_T), INTENT(IN) :: max_objs - INTEGER(HID_T), DIMENSION(*), INTENT(INOUT) :: obj_ids - INTEGER(SIZE_T), INTENT(OUT) :: c_num_objs - END FUNCTION h5fget_obj_ids_c - END INTERFACE - - hdferr = h5fget_obj_ids_c(file_id, obj_type, max_objs, obj_ids, c_num_objs) - if (present(num_objs)) num_objs= c_num_objs - - END SUBROUTINE h5fget_obj_ids_f - -!---------------------------------------------------------------------- -! Name: h5fget_freespace_f -! -! Purpose: Get amount of free space within a file -! -! Inputs: -! file_id - file identifier -! Outputs: -! free_space - amount of free space in file -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Quincey Koziol -! October 7, 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5fget_freespace_f(file_id, free_space, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier - INTEGER(HSSIZE_T), INTENT(OUT) :: free_space - !amount of free space in file - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5fget_freespace_c(file_id, free_space) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_FREESPACE_C':: h5fget_freespace_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: file_id - INTEGER(HSSIZE_T), INTENT(OUT) :: free_space - END FUNCTION h5fget_freespace_c - END INTERFACE - - hdferr = h5fget_freespace_c(file_id, free_space) - - END SUBROUTINE h5fget_freespace_f - -!---------------------------------------------------------------------- -! Name: h5fget_name_f -! -! Purpose: Gets the name of the file from the object identifier -! -! Inputs: -! obj_id - object identifier -! Inputs/Outputs: -! buf - buffer to read name in -! Outputs: -! size - actual size of the name -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! -! Programmer: Elena Pourmal -! July 6, 2004 -! -!---------------------------------------------------------------------- - - - SUBROUTINE h5fget_name_f(obj_id, buf, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier - CHARACTER(LEN=*), INTENT(INOUT) :: buf - ! Buffer to hold file name - INTEGER(SIZE_T), INTENT(OUT) :: size ! Size of the file name - INTEGER, INTENT(OUT) :: hdferr ! Error code: 0 on success, - ! -1 if fail - INTEGER(SIZE_T) :: buflen -! INTEGER, EXTERNAL :: h5fget_name_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5fget_name_c(obj_id, size, buf, buflen) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_NAME_C'::h5fget_name_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: obj_id - INTEGER(SIZE_T), INTENT(OUT) :: size - INTEGER(SIZE_T) :: buflen - CHARACTER(LEN=*), INTENT(OUT) :: buf - END FUNCTION h5fget_name_c - END INTERFACE - buflen = LEN(buf) - hdferr = h5fget_name_c(obj_id, size, buf, buflen) - END SUBROUTINE h5fget_name_f - -!---------------------------------------------------------------------- -! Name: h5fget_filesize_f -! -! Purpose: Retrieves the file size of the HDF5 file. -! -! Inputs: -! file_id - file identifier -! Outputs: -! size - file size -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! -! Programmer: Elena Pourmal -! July 7, 2004 -! -!---------------------------------------------------------------------- - - - SUBROUTINE h5fget_filesize_f(file_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id ! file identifier - INTEGER(HSIZE_T), INTENT(OUT) :: size ! Size of the file - INTEGER, INTENT(OUT) :: hdferr ! Error code: 0 on success, - ! -1 if fail -! INTEGER, EXTERNAL :: h5fget_filesize_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5fget_filesize_c(file_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_FILESIZE_C'::h5fget_filesize_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: file_id - INTEGER(HSIZE_T), INTENT(OUT) :: size - END FUNCTION h5fget_filesize_c - END INTERFACE - hdferr = h5fget_filesize_c(file_id, size) - END SUBROUTINE h5fget_filesize_f - - - END MODULE H5F + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(SIZE_T), INTENT(OUT), OPTIONAL :: num_objs ! number of open objects +!***** + INTEGER(SIZE_T) :: c_num_objs ! Number of open objects of the specified type + + INTERFACE + INTEGER FUNCTION h5fget_obj_ids_c(file_id, obj_type, max_objs, obj_ids, c_num_objs) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_OBJ_IDS_C':: h5fget_obj_ids_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: file_id + INTEGER, INTENT(IN) :: obj_type + INTEGER(SIZE_T), INTENT(IN) :: max_objs + INTEGER(HID_T), DIMENSION(*), INTENT(INOUT) :: obj_ids + INTEGER(SIZE_T), INTENT(OUT) :: c_num_objs + END FUNCTION h5fget_obj_ids_c + END INTERFACE + + hdferr = h5fget_obj_ids_c(file_id, obj_type, max_objs, obj_ids, c_num_objs) + IF (PRESENT(num_objs)) num_objs= c_num_objs + + END SUBROUTINE h5fget_obj_ids_f +!****s* H5F/h5fget_freespace_f +! +! NAME +! h5fget_freespace_f +! +! PURPOSE +! Get amount of free space within a file +! +! INPUTS +! file_id - file identifier +! OUTPUTS +! free_space - amount of free space in file +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Quincey Koziol +! October 7, 2003 +! +! SOURCE + SUBROUTINE h5fget_freespace_f(file_id, free_space, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier + INTEGER(HSSIZE_T), INTENT(OUT) :: free_space + ! amount of free space in file + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5fget_freespace_c(file_id, free_space) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_FREESPACE_C':: h5fget_freespace_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: file_id + INTEGER(HSSIZE_T), INTENT(OUT) :: free_space + END FUNCTION h5fget_freespace_c + END INTERFACE + + hdferr = h5fget_freespace_c(file_id, free_space) + + END SUBROUTINE h5fget_freespace_f +!****s* H5F/h5fget_name_f +! +! NAME +! h5fget_name_f +! +! PURPOSE +! Gets the name of the file from the object identifier +! +! INPUTS +! obj_id - object identifier +! OUTPUTS +! buf - buffer to store the read name +! size - actual size of the name +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! July 6, 2004 +! +! SOURCE + SUBROUTINE h5fget_name_f(obj_id, buf, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier + CHARACTER(LEN=*), INTENT(INOUT) :: buf + ! Buffer to hold file name + INTEGER(SIZE_T), INTENT(OUT) :: size ! Size of the file name + INTEGER, INTENT(OUT) :: hdferr ! Error code: 0 on success, + ! -1 if fail +!***** + INTEGER(SIZE_T) :: buflen + + INTERFACE + INTEGER FUNCTION h5fget_name_c(obj_id, size, buf, buflen) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_NAME_C'::h5fget_name_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: obj_id + INTEGER(SIZE_T), INTENT(OUT) :: size + INTEGER(SIZE_T) :: buflen + CHARACTER(LEN=*), INTENT(OUT) :: buf + END FUNCTION h5fget_name_c + END INTERFACE + buflen = LEN_TRIM(buf) + hdferr = h5fget_name_c(obj_id, size, buf, buflen) + END SUBROUTINE h5fget_name_f +!****s* H5F/h5fget_filesize_f +! +! NAME +! h5fget_filesize_f +! +! PURPOSE +! Retrieves the file size of the HDF5 file. +! +! INPUTS +! file_id - file identifier +! OUTPUTS +! size - file size +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! July 7, 2004 +! +! SOURCE + SUBROUTINE h5fget_filesize_f(file_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: file_id ! file identifier + INTEGER(HSIZE_T), INTENT(OUT) :: size ! Size of the file + INTEGER, INTENT(OUT) :: hdferr ! Error code: 0 on success, + ! -1 if fail +!***** + INTERFACE + INTEGER FUNCTION h5fget_filesize_c(file_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_FILESIZE_C'::h5fget_filesize_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: file_id + INTEGER(HSIZE_T), INTENT(OUT) :: size + END FUNCTION h5fget_filesize_c + END INTERFACE + hdferr = h5fget_filesize_c(file_id, size) + END SUBROUTINE h5fget_filesize_f + + +END MODULE H5F diff --git a/fortran/src/H5Gf.c b/fortran/src/H5Gf.c index f40b595..5ebb3e7 100644 --- a/fortran/src/H5Gf.c +++ b/fortran/src/H5Gf.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5Gf/H5Gf + * PURPOSE + * This file contains C stubs for H5G Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,32 +16,42 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for H5G Fortran APIs */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" #include "H5Eprivate.h" -/*---------------------------------------------------------------------------- - * Name: h5gcreate_c - * Purpose: Call H5Gcreate to create a group - * Inputs: loc_id - file or group identifier +/****if* H5Gf/h5gcreate_c + * NAME + * h5gcreate_c + * PURPOSE + * Call H5Gcreate to create a group + * INPUTS + * loc_id - file or group identifier * name - name of the group * namelen - name length * size_hint - length of names in the group - * Outputs: grp_id - group identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * grp_id - group identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 5, 1999 - * Modifications: + * HISTORY + * * Changed to call H5Gcreate2 because H5Gcreate flip-flops and * H5Gcreate1 can be compiled out of the library * QAK - 2007/08/23 - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5gcreate_c(hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *size_hint, hid_t_f *grp_id, hid_t_f *lcpl_id, hid_t_f *gcpl_id, hid_t_f *gapl_id ) +/******/ { hid_t c_gcpl_id = -1; /* Group creation property list */ char *c_name = NULL; @@ -81,21 +96,29 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5gopen_c - * Purpose: Call H5Gopen to open a dataset - * Inputs: loc_id - file or group identifier +/****if* H5Gf/h5gopen_c + * NAME + * h5gopen_c + * PURPOSE + * Call H5Gopen to open a dataset + * INPUTS + * loc_id - file or group identifier * name - name of the group * namelen - name length * gapl_id - Group access property list identifier - * Outputs: grp_id - group identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * grp_id - group identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 5, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * + * SOURCE +*/ int_f nh5gopen_c(hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *gapl_id, hid_t_f *grp_id) +/******/ { char *c_name = NULL; hid_t c_grp_id; @@ -123,25 +146,32 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5gget_obj_info_idx_c - * Purpose: Call H5Gget_obj_info to return name and the type of group +/****if* H5Gf/h5gget_obj_info_idx_c + * NAME + * h5gget_obj_info_idx_c + * PURPOSE + * Call H5Gget_obj_info to return name and the type of group * member - * Inputs: loc_id - file or group identifier + * INPUTS + * loc_id - file or group identifier * name - name of the group * namelen - name length * idx - index of the group member - * Outputs: obj_name - buffer to store member's name + * OUTPUTS + * obj_name - buffer to store member's name * obj_namelen - length of the buffer * obj_type - type of the object - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 5, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5gget_obj_info_idx_c(hid_t_f *loc_id, _fcd name, int_f *namelen, int_f *idx, _fcd obj_name, int_f *obj_namelen, int_f *obj_type) +/******/ { H5O_info_t oinfo; hid_t c_loc_id = (hid_t)*loc_id; @@ -199,20 +229,27 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5gn_members_c - * Purpose: Call H5Gget_info_by_name to find number of objects in the group - * Inputs: loc_id - file or group identifier +/****if* H5Gf/h5gn_members_c + * NAME + * h5gn_members_c + * PURPOSE + * Call H5Gget_info_by_name to find number of objects in the group + * INPUTS + * loc_id - file or group identifier * name - name of the group * namelen - name length - * Outputs: nmemebers - number of members - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * nmemebers - number of members + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 5, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5gn_members_c(hid_t_f *loc_id, _fcd name, int_f *namelen, int_f *nmembers) +/******/ { char *c_name = NULL; H5G_info_t ginfo; @@ -237,18 +274,24 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5gclose_c - * Purpose: Call H5Gclose to close the group - * Inputs: grp_id - identifier of the group to be closed - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Gf/h5gclose_c + * NAME + * h5gclose_c + * PURPOSE + * Call H5Gclose to close the group + * INPUTS + * grp_id - identifier of the group to be closed + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 5, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5gclose_c(hid_t_f *grp_id) +/******/ { int ret_value = 0; @@ -258,25 +301,31 @@ nh5gclose_c(hid_t_f *grp_id) } -/*---------------------------------------------------------------------------- - * Name: h5glink_c - * Purpose: Call H5Glink to link the specified type - * Inputs: loc_id - identifier of file or group +/****if* H5Gf/h5glink_c + * NAME + * h5glink_c + * PURPOSE + * Call H5Glink to link the specified type + * INPUTS + * loc_id - identifier of file or group * link_type - link type * current_name - name of the existing object for hard link, * anything for the soft link * current_namelen - current name lenghth * new_name - new name for the object * new_namelen - new_name lenghth - * Returns: 0 on success, -1 on failure - * Programmer: Mingshi Chen - * Friday, August 6, 1999 - * Modifications: Elena Pourmal - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Mingshi Chen + * Friday, August 6, 1999 + * SOURCE +*/ int_f nh5glink_c(hid_t_f *loc_id, int_f *link_type, _fcd current_name, int_f *current_namelen, _fcd new_name, int_f *new_namelen) +/******/ { char *c_current_name = NULL, *c_new_name = NULL; int ret_value = -1; @@ -317,10 +366,13 @@ DONE: return ret_value ; } -/*---------------------------------------------------------------------------- - * Name: h5glink2_c - * Purpose: Call H5Glink2 to link the specified type - * Inputs: cur_loc_id - identifier of file or group +/****if* H5Gf/h5glink2_c + * NAME + * h5glink2_c + * PURPOSE + * Call H5Glink2 to link the specified type + * INPUTS + * cur_loc_id - identifier of file or group * cur_name - name of the existing object for hard link releative * to cur_loc_id location, * anything for the soft link @@ -330,15 +382,20 @@ DONE: * new_name - new name for the object releative to the new_loc_id * location * new_namelen - new_name lenghth - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, September 25, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5glink2_c(hid_t_f *cur_loc_id, _fcd cur_name, int_f *cur_namelen, int_f *link_type, hid_t_f *new_loc_id, _fcd new_name, int_f *new_namelen) +/******/ { char *c_cur_name = NULL, *c_new_name = NULL; int ret_value = -1; @@ -378,19 +435,25 @@ DONE: return ret_value ; } -/*---------------------------------------------------------------------------- - * Name: h5gunlink_c - * Purpose: Call H5Gunlink to remove the specified name - * Inputs: loc_id - identifier of file or group +/****if* H5Gf/h5gunlink_c + * NAME + * h5gunlink_c + * PURPOSE + * Call H5Gunlink to remove the specified name + * INPUTS + * loc_id - identifier of file or group * name - name of the object to unlink - * Returns: 0 on success, -1 on failure - * Programmer: Mingshi Chen - * Friday, August 6, 1999 - * Modifications: Elena Pourmal - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Mingshi Chen + * Friday, August 6, 1999 + * SOURCE +*/ int_f nh5gunlink_c(hid_t_f *loc_id, _fcd name, int_f *namelen) +/******/ { char *c_name = NULL; int ret_value = -1; @@ -414,22 +477,28 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5gmove_c - * Purpose: Call H5Gmove to rename an object within an HDF5 file - * Inputs: loc_id - identifier of file or group +/****if* H5Gf/h5gmove_c + * NAME + * h5gmove_c + * PURPOSE + * Call H5Gmove to rename an object within an HDF5 file + * INPUTS + * loc_id - identifier of file or group * src_name - name of the original object * src_namelen - original name lenghth * dst_name - new name for the object * dst_namelen - new name lenghth - * Returns: 0 on success, -1 on failure - * Programmer: Mingshi Chen - * Friday, August 6, 1999 - * Modifications: Elena Pourmal - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Mingshi Chen + * Friday, August 6, 1999 + * SOURCE +*/ int_f nh5gmove_c(hid_t_f *loc_id, _fcd src_name, int_f *src_namelen, _fcd dst_name, int_f*dst_namelen) +/******/ { char *c_src_name = NULL, *c_dst_name = NULL; int ret_value = -1; @@ -458,23 +527,30 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5gmove2_c - * Purpose: Call H5Gmove2 to rename an object within an HDF5 file - * Inputs: src_loc_id - identifier of file or group +/****if* H5Gf/h5gmove2_c + * NAME + * h5gmove2_c + * PURPOSE + * Call H5Gmove2 to rename an object within an HDF5 file + * INPUTS + * src_loc_id - identifier of file or group * src_name - name of the original object relative to src_loc_id * src_namelen - original name lenghth * dst_loc_id - new location identifier * dst_name - new name for the object relative to dst_loc_id * dst_namelen - new name lenghth - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Wednesday, September 25, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Wednesday, September 25, 2002 + * + * SOURCE +*/ int_f nh5gmove2_c(hid_t_f *src_loc_id, _fcd src_name, int_f *src_namelen, hid_t_f *dst_loc_id, _fcd dst_name, int_f*dst_namelen) +/******/ { char *c_src_name = NULL, *c_dst_name = NULL; int ret_value = -1; @@ -503,23 +579,30 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5gget_linkval_c - * Purpose: Call H5Gget_linkval to return the name of object - * Inputs: loc_id - identifier of file or group +/****if* H5Gf/h5gget_linkval_c + * NAME + * h5gget_linkval_c + * PURPOSE + * Call H5Gget_linkval to return the name of object + * INPUTS + * loc_id - identifier of file or group * name - name of the object that symbolic link points to * namelen - the name lenghth * size - lenghth of retrurned value - * Outputs: value - name to be returned - * Returns: 0 on success, -1 on failure - * Programmer: Mingshi Chen - * Friday, August 6, 1999 - * Modifications: Elena Pourmal - *---------------------------------------------------------------------------*/ + * OUTPUTS + * value - name to be returned + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Mingshi Chen + * Friday, August 6, 1999 + * SOURCE +*/ int_f nh5gget_linkval_c(hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *size, _fcd value) +/******/ { char *c_name = NULL; char *c_value = NULL; @@ -560,23 +643,30 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5gset_comment_c - * Purpose: Call H5Oset_comment_by_name to set comments for the specified object - * Inputs: loc_id - identifier of file or group +/****if* H5Gf/h5gset_comment_c + * NAME + * h5gset_comment_c + * PURPOSE + * Call H5Oset_comment_by_name to set comments for the specified object + * INPUTS + * loc_id - identifier of file or group * name - name of object whose comment is to be set or reset * namelen - the name lenghth * comment - the new comment * commentlen - new comment lenghth - * Returns: 0 on success, -1 on failure - * Programmer: Mingshi Chen + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Mingshi Chen * Friday, August 6, 1999 - * Modifications: Elena Pourmal - *---------------------------------------------------------------------------*/ - + * HISTORY + * Elena Pourmal + * SOURCE +*/ int_f nh5gset_comment_c(hid_t_f *loc_id, _fcd name, int_f *namelen, _fcd comment, int_f *commentlen) +/******/ { char *c_name = NULL, *c_comment = NULL; int ret_value = -1; @@ -604,23 +694,28 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5gget_comment_c - * Purpose: Call H5Oget_comment_by_name to retrieve comments for the specified object - * Inputs: loc_id - identifier of file or group +/****if* H5Gf/h5gget_comment_c + * NAME + * h5gget_comment_c + * PURPOSE + * Call H5Oget_comment_by_name to retrieve comments for the specified object + * INPUTS + * loc_id - identifier of file or group * name - name of object whose comment is to be set or reset * namelen - the name lenghth * bufsize - at most bufsize characters * comment - the new comment - * Returns: 0 on success, -1 on failure - * Programmer: Mingshi Chen + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Mingshi Chen * Friday, August 6, 1999 - * Modifications: Elena Pourmal - *---------------------------------------------------------------------------*/ - + * SOURCE +*/ int_f nh5gget_comment_c(hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *bufsize, _fcd comment) +/******/ { char *c_name = NULL, *c_comment = NULL; size_t c_bufsize; @@ -661,22 +756,29 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5gcreate_anon_c - * Purpose: Call H5Gcreate_anon - * Inputs: +/****if* H5Gf/h5gcreate_anon_c + * NAME + * h5gcreate_anon_c + * PURPOSE + * Call H5Gcreate_anon + * INPUTS + * * loc_id - Location identifier * gcpl_id - Group creation property list identifier * gapl_id - Group access property list identifier * - * Outputs: grp_id - group identifier - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * February 15, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * OUTPUTS + * grp_id - group identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * February 15, 2008 + * SOURCE +*/ int_f nh5gcreate_anon_c(hid_t_f *loc_id, hid_t_f *gcpl_id, hid_t_f *gapl_id, hid_t_f *grp_id) +/******/ { int_f ret_value=0; /* Return value */ @@ -688,20 +790,27 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5gget_create_plist_c - * Purpose: Call H5Gget_create_plist - * Inputs: +/****if* H5Gf/h5gget_create_plist_c + * NAME + * h5gget_create_plist_c + * PURPOSE + * Call H5Gget_create_plist + * INPUTS + * * grp_id - group identifier * - * Outputs: gcpl_id - Group creation property list identifier - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * February 15, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * OUTPUTS + * gcpl_id - Group creation property list identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * February 15, 2008 + * SOURCE +*/ int_f nh5gget_create_plist_c(hid_t_f *grp_id, hid_t_f *gcpl_id ) +/******/ { int_f ret_value=0; /* Return value */ @@ -713,11 +822,15 @@ done: } -/*---------------------------------------------------------------------------- - * Name: h5gget_info_c - * Purpose: Call H5Gget_info - * Inputs: group_id - Group identifier - * Outputs: +/****if* H5Gf/h5gget_info_c + * NAME + * h5gget_info_c + * PURPOSE + * Call H5Gget_info + * INPUTS + * group_id - Group identifier + * OUTPUTS + * * storage_type - Type of storage for links in group: * H5G_STORAGE_TYPE_COMPACT: Compact storage * H5G_STORAGE_TYPE_DENSE: Indexed storage @@ -727,16 +840,21 @@ done: * max_corder - Current maximum creation order value for group * mounted - Whether group has a file mounted on it (0 = false, 1 = true) * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February 15, 2008 - * Modifications: + * HISTORY + * * - Added 'mounted' paramater - * M.S. Breitenfeld + * M. Scot Breitenfeld * July 16, 2008 - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5gget_info_c (hid_t_f *group_id, int_f *storage_type, int_f *nlinks, int_f *max_corder, int_f *mounted ) +/******/ { int_f ret_value = 0; /* Return value */ @@ -761,10 +879,13 @@ done: } -/*---------------------------------------------------------------------------- - * Name: h5gget_info_by_idx_c - * Purpose: Call H5Gget_info_by_idx - * Inputs: +/****if* H5Gf/h5gget_info_by_idx_c + * NAME + * h5gget_info_by_idx_c + * PURPOSE + * Call H5Gget_info_by_idx + * INPUTS + * * loc_id - File or group identifier * group_name - Name of group containing group for which information is to be retrieved * group_namelen - name length @@ -772,7 +893,8 @@ done: * order - Order of the count in the index * n - Position in the index of the group for which information is retrieved * lapl_id - Link access property list - * Outputs: + * OUTPUTS + * * storage_type - Type of storage for links in group: * H5G_STORAGE_TYPE_COMPACT: Compact storage * H5G_STORAGE_TYPE_DENSE: Indexed storage @@ -782,19 +904,23 @@ done: * max_corder - Current maximum creation order value for group * mounted - Whether group has a file mounted on it (0 = false, 1 = true) * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February 18, 2008 - * Modifications: + * HISTORY + * * - Added 'mounted' paramater - * M.S. Breitenfeld + * M. Scot Breitenfeld * July 16, 2008 - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5gget_info_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, int_f *index_type, int_f *order, hsize_t_f *n, hid_t_f *lapl_id, int_f *storage_type, int_f *nlinks, int_f *max_corder, int_f *mounted ) - +/******/ { char *c_group_name = NULL; /* Buffer to hold group name C string */ int_f ret_value = 0; /* Return value */ @@ -826,15 +952,19 @@ nh5gget_info_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5gget_info_by_name_c - * Purpose: Call H5Gget_info_by_name - * Inputs: +/****if* H5Gf/h5gget_info_by_name_c + * NAME + * h5gget_info_by_name_c + * PURPOSE + * Call H5Gget_info_by_name + * INPUTS + * * loc_id - File or group identifier * group_name - Name of group containing group for which information is to be retrieved * group_namelen - name length * lapl_id - Link access property list - * Outputs: + * OUTPUTS + * * storage_type - Type of storage for links in group: * H5G_STORAGE_TYPE_COMPACT: Compact storage * H5G_STORAGE_TYPE_DENSE: Indexed storage @@ -844,18 +974,22 @@ nh5gget_info_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, * max_corder - Current maximum creation order value for group * mounted - Whether group has a file mounted on it (0 = false, 1 = true) * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February 18, 2008 - * Modifications: + * HISTORY + * * - Added 'mounted' paramater - * M.S. Breitenfeld + * M. Scot Breitenfeld * July 16, 2008 - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5gget_info_by_name_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, hid_t_f *lapl_id, int_f *storage_type, int_f *nlinks, int_f *max_corder, int_f *mounted) - +/******/ { char *c_group_name = NULL; /* Buffer to hold group name C string */ int_f ret_value = 0; /* Return value */ @@ -885,4 +1019,3 @@ nh5gget_info_by_name_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen HDfree(c_group_name); return ret_value; } - diff --git a/fortran/src/H5Gff.f90 b/fortran/src/H5Gff.f90 index 2e769ad..6bcee7c 100644 --- a/fortran/src/H5Gff.f90 +++ b/fortran/src/H5Gff.f90 @@ -1,3 +1,15 @@ +!****h* ROBODoc/H5G +! +! NAME +! MODULE H5G +! +! FILE +! fortran/src/H5Gff.f90 +! +! PURPOSE +! This file contains Fortran interfaces for H5G functions. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,55 +25,61 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! NOTES +! *** IMPORTANT *** +! If you add a new H5G function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. ! -! This file contains Fortran90 interfaces for H5F functions. -! +!***** + MODULE H5G USE H5GLOBAL -! PRIVATE :: h5gcreate1_f +! PRIVATE :: h5gcreate1_f ! PRIVATE :: h5gcreate2_f ! INTERFACE h5gcreate_f -! MODULE PROCEDURE h5gcreate1_f -! MODULE PROCEDURE h5gcreate2_f +! MODULE PROCEDURE h5gcreate1_f +! MODULE PROCEDURE h5gcreate2_f ! END INTERFACE CONTAINS -!---------------------------------------------------------------------- -! Name: h5gcreate_f -! -! Purpose: Creates a new group. -! -! Inputs: -! loc_id - location identifier -! name - group name at the specified location -! Outputs: -! grp_id - group identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! size_hint - a parameter indicating the number of bytes -! to reserve for the names that will appear -! in the group -! lcpl_id - Property list for link creation -! gcpl_id - Property list for group creation -! gapl_id - Property list for group access -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 5, 2001 -! -! Added additional optional paramaters in 1.8 -! MSB - February 27, 2008 -! -! Comment: -!---------------------------------------------------------------------- +!****s* H5G/h5gcreate_f +! +! NAME +! h5gcreate_f +! +! PURPOSE +! Creates a new group. +! +! INPUTS +! loc_id - location identifier +! name - group name at the specified location +! OUTPUTS +! grp_id - group identifier +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! size_hint - a parameter indicating the number of bytes to +! reserve for the names that will appear in the group +! lcpl_id - Property list for link creation +! gcpl_id - Property list for group creation +! gapl_id - Property list for group access +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! Added additional optional paramaters in 1.8 +! MSB - February 27, 2008 +! +! SOURCE SUBROUTINE h5gcreate_f(loc_id, name, grp_id, hdferr, size_hint, lcpl_id, gcpl_id, gapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -80,7 +98,7 @@ CONTAINS INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Property list for link creation INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gcpl_id ! Property list for group creation INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id ! Property list for group access - +!***** INTEGER(HID_T) :: lcpl_id_default INTEGER(HID_T) :: gcpl_id_default INTEGER(HID_T) :: gapl_id_default @@ -88,8 +106,6 @@ CONTAINS INTEGER :: namelen ! Length of the name character string INTEGER(SIZE_T) :: size_hint_default -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5gcreate_c(loc_id, name, namelen, & size_hint_default, grp_id, lcpl_id_default, gcpl_id_default, gapl_id_default) @@ -125,33 +141,37 @@ CONTAINS END SUBROUTINE h5gcreate_f -!!$!---------------------------------------------------------------------- -!!$! Name: h5gcreate2_f !!$! -!!$! Purpose: Creates a new group. +!!$!****s* H5G/ !!$! -!!$! Inputs: +!!$! NAME +!!$! h5gcreate2_f +!!$! +!!$! PURPOSE +!!$! Creates a new group. +!!$! +!!$! INPUTS !!$! loc_id - location identifier !!$! name - group name at the specified location -!!$! Outputs: +!!$! OUTPUTS !!$! grp_id - group identifier !!$! hdferr: - error code !!$! Success: 0 !!$! Failure: -1 -!!$! Optional parameters: +!!$! OPTIONAL PARAMETERS !!$! !!$! lcpl_id - Property list for link creation !!$! gcpl_id - Property list for group creation !!$! gapl_id - Property list for group access !!$! -!!$! Programmer: M.S. BREITENFELD +!!$! AUTHOR M. Scot Breitenfeld !!$! February 27, 2008 !!$! -!!$! Modifications: +!!$! HISTORY !!$! -!!$! Comment: Needed to switch the first 2 arguments to avoid conflect +!!$! NOTES Needed to switch the first 2 arguments to avoid conflect !!$! with h5gcreate1_f -!!$!---------------------------------------------------------------------- +!!$! !!$ !!$ SUBROUTINE h5gcreate2_f(name, loc_id, grp_id, hdferr, & !!$ lcpl_id, gcpl_id, gapl_id) @@ -169,14 +189,16 @@ CONTAINS !!$ INTEGER(HID_T) :: gcpl_id_default !!$ INTEGER(HID_T) :: gapl_id_default !!$ -!!$ INTEGER(SIZE_T) :: OBJECT_NAMELEN_DEFAULT ! Dummy argument to pass to c call +!!$ INTEGER(SIZE_T) :: OBJECT_NAME +! LEN_DEFAULT ! Dummy argument to pass to c call !!$ INTEGER :: namelen ! Length of the name character string !!$ !!$! MS FORTRAN needs explicit interface for C functions called here. !!$! !!$ INTERFACE !!$ INTEGER FUNCTION h5gcreate_c(loc_id, name, namelen, & -!!$ OBJECT_NAMELEN_DEFAULT, grp_id, lcpl_id_default, gcpl_id_default, gapl_id_default) +!!$ OBJECT_NAME +! LEN_DEFAULT, grp_id, lcpl_id_default, gcpl_id_default, gapl_id_default) !!$ USE H5GLOBAL !!$ !DEC$IF DEFINED(HDF5F90_WINDOWS) !!$ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GCREATE_C'::h5gcreate_c @@ -185,7 +207,8 @@ CONTAINS !!$ INTEGER(HID_T), INTENT(IN) :: loc_id !!$ CHARACTER(LEN=*), INTENT(IN) :: name !!$ INTEGER :: namelen -!!$ INTEGER(SIZE_T) :: OBJECT_NAMELEN_DEFAULT +!!$ INTEGER(SIZE_T) :: OBJECT_NAME +! LEN_DEFAULT !!$ INTEGER(HID_T) :: lcpl_id_default !!$ INTEGER(HID_T) :: gcpl_id_default !!$ INTEGER(HID_T) :: gapl_id_default @@ -194,7 +217,9 @@ CONTAINS !!$ END INTERFACE !!$ !!$ namelen = LEN(name) -!!$ OBJECT_NAMELEN_DEFAULT = OBJECT_NAMELEN_DEFAULT_F +!!$ OBJECT_NAME +! LEN_DEFAULT = OBJECT_NAME +! LEN_DEFAULT_F !!$ !!$ lcpl_id_default = H5P_DEFAULT_F !!$ IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id @@ -204,40 +229,43 @@ CONTAINS !!$ IF(PRESENT(gapl_id)) gapl_id_default = gapl_id !!$ !!$ -!!$ hdferr = h5gcreate_c(loc_id, name, namelen, OBJECT_NAMELEN_DEFAULT, grp_id, & +!!$ hdferr = h5gcreate_c(loc_id, name, namelen, OBJECT_NAME +! LEN_DEFAULT, grp_id, & !!$ lcpl_id_default, gcpl_id_default, gapl_id_default) !!$ !!$ END SUBROUTINE h5gcreate2_f - -!---------------------------------------------------------------------- -! Name: h5gopen_f ! -! Purpose: Opens an existing group. +!****s* H5G/h5gopen_f +! +! NAME +! h5gopen_f ! -! Inputs: -! loc_id - location identifier -! name - name of the group to open -! Outputs: -! grp_id - group identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! gapl_id - Group access property list identifier +! PURPOSE +! Opens an existing group. ! -! Programmer: Elena Pourmal -! August 12, 1999 +! INPUTS +! loc_id - location identifier +! name - name of the group to open +! OUTPUTS +! grp_id - group identifier +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! gapl_id - Group access property list identifier ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 5, 2001 +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Added 1.8 (optional) parameter gapl_id -! February, 2008 M.S. Breitenfeld +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 ! -! Comment: -!---------------------------------------------------------------------- +! Added 1.8 (optional) parameter gapl_id +! February, 2008 M. Scot Breitenfeld +! +! SOURCE SUBROUTINE h5gopen_f(loc_id, name, grp_id, hdferr, gapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -245,13 +273,10 @@ CONTAINS INTEGER(HID_T), INTENT(OUT) :: grp_id ! File identifier INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id ! Group access property list identifier - +!***** INTEGER(HID_T) :: gapl_id_default INTEGER :: namelen ! Length of the name character string -! INTEGER, EXTERNAL :: h5gopen_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5gopen_c(loc_id, name, namelen, gapl_id_default, grp_id) USE H5GLOBAL @@ -274,163 +299,150 @@ CONTAINS hdferr = h5gopen_c(loc_id, name, namelen, gapl_id_default, grp_id) END SUBROUTINE h5gopen_f - -!---------------------------------------------------------------------- -! Name: h5gclose_f ! -! Purpose: Closes the specified group. +!****s* H5G/h5gclose_f ! -! Inputs: -! grp_id - group identifier -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5gclose_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Closes the specified group. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 5, 2001 +! INPUTS +! grp_id - group identifier +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5gclose_f(grp_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: grp_id ! Group identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5gclose_c -! MS FORTRAN needs explicit interface for C functions called here. +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 ! - INTERFACE - INTEGER FUNCTION h5gclose_c(grp_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GCLOSE_C'::h5gclose_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: grp_id - END FUNCTION h5gclose_c - END INTERFACE - - hdferr = h5gclose_c(grp_id) - - END SUBROUTINE h5gclose_f +! SOURCE + SUBROUTINE h5gclose_f(grp_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: grp_id ! Group identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5gclose_c(grp_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GCLOSE_C'::h5gclose_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: grp_id + END FUNCTION h5gclose_c + END INTERFACE + hdferr = h5gclose_c(grp_id) -!---------------------------------------------------------------------- -! Name: h5gget_obj_info_idx_f + END SUBROUTINE h5gclose_f ! -! Purpose: Returns name and type of the group member identified by -! its index. +!****s* H5G/h5gget_obj_info_idx_f ! -! Inputs: -! loc_id - location identifier -! name - name of the group at the specified location -! idx - object index (zero-based) -! Outputs: -! obj_name - object name -! obj_type - object type -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5gget_obj_info_idx_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Returns name and type of the group member identified by +! its index. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 5, 2001 +! INPUTS +! loc_id - location identifier +! name - name of the group at the specified location +! idx - object index (zero-based) +! OUTPUTS +! obj_name - object name +! obj_type - object type +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5gget_obj_info_idx_f(loc_id, name, idx, & - obj_name, obj_type, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group - INTEGER, INTENT(IN) :: idx ! Index of member object - CHARACTER(LEN=*), INTENT(OUT) :: obj_name ! Name of the object - INTEGER, INTENT(OUT) :: obj_type ! Object type - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER :: namelen ! Length of the name character string - INTEGER :: obj_namelen ! Length of the obj_name character string - -! INTEGER, EXTERNAL :: h5gget_obj_info_idx_c -! MS FORTRAN needs explicit interface for C functions called here. +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 ! - INTERFACE - INTEGER FUNCTION h5gget_obj_info_idx_c(loc_id, name, & - namelen, idx, & - obj_name, obj_namelen, obj_type) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GGET_OBJ_INFO_IDX_C'::h5gget_obj_info_idx_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - !DEC$ATTRIBUTES reference :: obj_name - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER :: namelen - INTEGER, INTENT(IN) :: idx - CHARACTER(LEN=*), INTENT(OUT) :: obj_name - INTEGER :: obj_namelen - INTEGER, INTENT(OUT) :: obj_type - END FUNCTION h5gget_obj_info_idx_c - END INTERFACE +! SOURCE + SUBROUTINE h5gget_obj_info_idx_f(loc_id, name, idx, & + obj_name, obj_type, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group + INTEGER, INTENT(IN) :: idx ! Index of member object + CHARACTER(LEN=*), INTENT(OUT) :: obj_name ! Name of the object + INTEGER, INTENT(OUT) :: obj_type ! Object type + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: namelen ! Length of the name character string + INTEGER :: obj_namelen ! Length of the obj_name character string - namelen = LEN(name) - obj_namelen = LEN(obj_name) - hdferr = h5gget_obj_info_idx_c(loc_id, name, namelen, idx, & - obj_name, obj_namelen, obj_type) + INTERFACE + INTEGER FUNCTION h5gget_obj_info_idx_c(loc_id, name, & + namelen, idx, & + obj_name, obj_namelen, obj_type) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GGET_OBJ_INFO_IDX_C'::h5gget_obj_info_idx_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + !DEC$ATTRIBUTES reference :: obj_name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER, INTENT(IN) :: idx + CHARACTER(LEN=*), INTENT(OUT) :: obj_name + INTEGER :: obj_namelen + INTEGER, INTENT(OUT) :: obj_type + END FUNCTION h5gget_obj_info_idx_c + END INTERFACE - END SUBROUTINE h5gget_obj_info_idx_f + namelen = LEN(name) + obj_namelen = LEN(obj_name) + hdferr = h5gget_obj_info_idx_c(loc_id, name, namelen, idx, & + obj_name, obj_namelen, obj_type) + END SUBROUTINE h5gget_obj_info_idx_f -!---------------------------------------------------------------------- -! Name: h5gn_members_f ! -! Purpose: Returns the number of group members. +!****s* H5G/h5gn_members_f ! -! Inputs: -! loc_id - location identifier -! name - name of the group at the specified location -! Outputs: -! nmembers - number of group members -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5gn_members_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Returns the number of group members. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 5, 2001 +! INPUTS +! loc_id - location identifier +! name - name of the group at the specified location +! OUTPUTS +! nmembers - number of group members +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5gn_members_f(loc_id, name, nmembers, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! SOURCE + SUBROUTINE h5gn_members_f(loc_id, name, nmembers, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group INTEGER, INTENT(OUT) :: nmembers ! Number of members in the ! group INTEGER, INTENT(OUT) :: hdferr ! Error code - +!***** INTEGER :: namelen ! Length of the name character string -! INTEGER, EXTERNAL :: h5gn_members_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5gn_members_c(loc_id, name, namelen, nmembers) USE H5GLOBAL @@ -449,548 +461,516 @@ CONTAINS hdferr = h5gn_members_c(loc_id, name, namelen, nmembers) END SUBROUTINE h5gn_members_f - -!---------------------------------------------------------------------- -! Name: h5glink_f -! -! Purpose: Creates a link of the specified type from new_name -! to current_name. -! -! Inputs: -! loc_id - location identifier -! link_type - link type -! Possible values are: -! H5G_LINK_HARD_F (0) or -! H5G_LINK_SOFT_F (1) -! current_name - name of the existing object if link is a -! hard link. Can be anything for the soft link. -! new_name - new name for the object -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 5, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5glink_f(loc_id, link_type, current_name, & - new_name, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier - INTEGER, INTENT(IN) :: link_type ! link type +! +!****s* H5G/h5glink_f +! +! NAME +! h5glink_f +! +! PURPOSE +! Creates a link of the specified type from new_name +! to current_name. +! +! INPUTS +! loc_id - location identifier +! link_type - link type; possible values are: +! H5G_LINK_HARD_F (0) +! H5G_LINK_SOFT_F (1) +! current_name - name of the existing object if link is a +! hard link. Can be anything for the soft link +! new_name - new name for the object +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! SOURCE + SUBROUTINE h5glink_f(loc_id, link_type, current_name, & + new_name, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier + INTEGER, INTENT(IN) :: link_type ! link type ! Possible values are: ! H5G_LINK_HARD_F (0) or ! H5G_LINK_SOFT_F (1) - CHARACTER(LEN=*), INTENT(IN) :: current_name + CHARACTER(LEN=*), INTENT(IN) :: current_name ! Current name of an object - CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER :: current_namelen ! Lenghth of the current_name string - INTEGER :: new_namelen ! Lenghth of the new_name string - -! INTEGER, EXTERNAL :: h5glink_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5glink_c(loc_id, link_type, current_name, & - current_namelen, new_name, new_namelen) + CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GLINK_C'::h5glink_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: current_name - !DEC$ATTRIBUTES reference :: new_name - INTEGER(HID_T), INTENT(IN) :: loc_id - INTEGER, INTENT(IN) :: link_type - CHARACTER(LEN=*), INTENT(IN) :: current_name - INTEGER :: current_namelen - CHARACTER(LEN=*), INTENT(IN) :: new_name - INTEGER :: new_namelen - END FUNCTION h5glink_c - END INTERFACE + INTEGER :: current_namelen ! Lenghth of the current_name string + INTEGER :: new_namelen ! Lenghth of the new_name string - current_namelen = LEN(current_name) - new_namelen = LEN(new_name) - hdferr = h5glink_c(loc_id, link_type, current_name, & - current_namelen, new_name, new_namelen) - END SUBROUTINE h5glink_f - -!---------------------------------------------------------------------- -! Name: h5glink2_f -! -! Purpose: Creates a link of the specified type from new_name -! to current_name. current_name and new_name are interpreted -! releative to current and new location identifiers. -! -! Inputs: -! cur_loc_id - location identifier -! cur_name - name of the existing object if link is a -! hard link. Can be anything for the soft link. -! link_type - link type -! Possible values are: -! H5G_LINK_HARD_F (0) or -! H5G_LINK_SOFT_F (1) -! new_loc_id - new location identifier -! new_name - new name for the object -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! September 25, 2002 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5glink2_f(cur_loc_id, cur_name, link_type, new_loc_id, & - new_name, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: cur_loc_id ! File or group identifier - CHARACTER(LEN=*), INTENT(IN) :: cur_name - ! Current name of an object - INTEGER, INTENT(IN) :: link_type ! link type - ! Possible values are: - ! H5G_LINK_HARD_F (0) or - ! H5G_LINK_SOFT_F (1) + INTERFACE + INTEGER FUNCTION h5glink_c(loc_id, link_type, current_name, & + current_namelen, new_name, new_namelen) - INTEGER(HID_T), INTENT(IN) :: new_loc_id ! File or group identifier - CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object - INTEGER, INTENT(OUT) :: hdferr ! Error code + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GLINK_C'::h5glink_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: current_name + !DEC$ATTRIBUTES reference :: new_name + INTEGER(HID_T), INTENT(IN) :: loc_id + INTEGER, INTENT(IN) :: link_type + CHARACTER(LEN=*), INTENT(IN) :: current_name + INTEGER :: current_namelen + CHARACTER(LEN=*), INTENT(IN) :: new_name + INTEGER :: new_namelen + END FUNCTION h5glink_c + END INTERFACE - INTEGER :: cur_namelen ! Lenghth of the current_name string - INTEGER :: new_namelen ! Lenghth of the new_name string + current_namelen = LEN(current_name) + new_namelen = LEN(new_name) + hdferr = h5glink_c(loc_id, link_type, current_name, & + current_namelen, new_name, new_namelen) + END SUBROUTINE h5glink_f + +! +!****s* H5G/h5glink2_f +! +! NAME +! h5glink2_f +! +! PURPOSE +! Creates a link of the specified type from new_name +! to current_name. current_name and new_name are interpreted +! releative to current and new location identifiers. +! +! INPUTS +! cur_loc_id - location identifier +! cur_name - name of the existing object if link is a +! hard link. Can be anything for the soft link. +! link_type - link type; possible values are: +! H5G_LINK_HARD_F (0) +! H5G_LINK_SOFT_F (1) +! new_loc_id - new location identifier +! new_name - new name for the object +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! September 25, 2002 +! +! SOURCE + SUBROUTINE h5glink2_f(cur_loc_id, cur_name, link_type, new_loc_id, & + new_name, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: cur_loc_id ! File or group identifier + CHARACTER(LEN=*), INTENT(IN) :: cur_name + ! Current name of an object + INTEGER, INTENT(IN) :: link_type ! link type + ! Possible values are: + ! H5G_LINK_HARD_F (0) or + ! H5G_LINK_SOFT_F (1) + + INTEGER(HID_T), INTENT(IN) :: new_loc_id ! File or group identifier + CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + + INTEGER :: cur_namelen ! Lenghth of the current_name string + INTEGER :: new_namelen ! Lenghth of the new_name string - INTERFACE - INTEGER FUNCTION h5glink2_c(cur_loc_id, cur_name, cur_namelen, & - link_type, new_loc_id, & - new_name, new_namelen) + INTERFACE + INTEGER FUNCTION h5glink2_c(cur_loc_id, cur_name, cur_namelen, & + link_type, new_loc_id, & + new_name, new_namelen) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GLINK2_C'::h5glink2_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: cur_name - !DEC$ATTRIBUTES reference :: new_name - INTEGER(HID_T), INTENT(IN) :: cur_loc_id - INTEGER(HID_T), INTENT(IN) :: new_loc_id - INTEGER, INTENT(IN) :: link_type - CHARACTER(LEN=*), INTENT(IN) :: cur_name - CHARACTER(LEN=*), INTENT(IN) :: new_name - INTEGER :: cur_namelen - INTEGER :: new_namelen - END FUNCTION h5glink2_c - END INTERFACE + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GLINK2_C'::h5glink2_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: cur_name + !DEC$ATTRIBUTES reference :: new_name + INTEGER(HID_T), INTENT(IN) :: cur_loc_id + INTEGER(HID_T), INTENT(IN) :: new_loc_id + INTEGER, INTENT(IN) :: link_type + CHARACTER(LEN=*), INTENT(IN) :: cur_name + CHARACTER(LEN=*), INTENT(IN) :: new_name + INTEGER :: cur_namelen + INTEGER :: new_namelen + END FUNCTION h5glink2_c + END INTERFACE - cur_namelen = LEN(cur_name) - new_namelen = LEN(new_name) - hdferr = h5glink2_c(cur_loc_id, cur_name, cur_namelen, link_type, & - new_loc_id, new_name, new_namelen) - END SUBROUTINE h5glink2_f + cur_namelen = LEN(cur_name) + new_namelen = LEN(new_name) + hdferr = h5glink2_c(cur_loc_id, cur_name, cur_namelen, link_type, & + new_loc_id, new_name, new_namelen) + END SUBROUTINE h5glink2_f -!---------------------------------------------------------------------- -! Name: h5gunlink_f ! -! Purpose: Removes the specified name from the group graph and -! decrements the link count for the object to which name -! points +!****s* H5G/h5gunlink_f +! +! NAME +! h5gunlink_f +! +! PURPOSE +! Removes the specified name from the group graph and +! decrements the link count for the object to which name +! points ! -! Inputs: -! loc_id - location identifier -! name - name of the object to unlink -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! loc_id - location identifier +! name - name of the object to unlink +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Programmer: Elena Pourmal -! August 12, 1999 +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 5, 2001 +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 ! -! Comment: -!---------------------------------------------------------------------- +! SOURCE + SUBROUTINE h5gunlink_f(loc_id, name, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of an object + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: namelen ! Lenghth of the name character string - SUBROUTINE h5gunlink_f(loc_id, name, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of an object - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5gunlink_c(loc_id, name, namelen) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GUNLINK_C'::h5gunlink_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + END FUNCTION h5gunlink_c + END INTERFACE - INTEGER :: namelen ! Lenghth of the name character string + namelen = LEN(name) + hdferr = h5gunlink_c(loc_id, name, namelen) + END SUBROUTINE h5gunlink_f -! INTEGER, EXTERNAL :: h5gunlink_c -! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5gunlink_c(loc_id, name, namelen) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GUNLINK_C'::h5gunlink_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER :: namelen - END FUNCTION h5gunlink_c - END INTERFACE - - namelen = LEN(name) - hdferr = h5gunlink_c(loc_id, name, namelen) - END SUBROUTINE h5gunlink_f - -!---------------------------------------------------------------------- -! Name: h5gmove_f +!****s* H5G/h5gmove_f ! -! Purpose: Renames an object within an HDF5 file. +! NAME +! h5gmove_f ! -! Inputs: -! loc_id - location identifier -! name - object's name at specified location -! new_name - object's new name -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Renames an object within an HDF5 file. ! -! Programmer: Elena Pourmal -! August 12, 1999 +! INPUTS +! loc_id - location identifier +! name - object's name at specified location +! new_name - object's new name +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 5, 2001 +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5gmove_f(loc_id, name, new_name, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object - CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER :: namelen ! Lenghth of the current_name string - INTEGER :: new_namelen ! Lenghth of the new_name string - -! INTEGER, EXTERNAL :: h5gmove_c -! MS FORTRAN needs explicit interface for C functions called here. +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 ! - INTERFACE - INTEGER FUNCTION h5gmove_c(loc_id, name, namelen, new_name, new_namelen) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GMOVE_C'::h5gmove_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - !DEC$ATTRIBUTES reference :: new_name - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER :: namelen - CHARACTER(LEN=*), INTENT(IN) :: new_name - INTEGER :: new_namelen - END FUNCTION h5gmove_c - END INTERFACE - - namelen = LEN(name) - new_namelen = LEN(new_name) - hdferr = h5gmove_c(loc_id, name, namelen, new_name, new_namelen) - END SUBROUTINE h5gmove_f +! SOURCE + SUBROUTINE h5gmove_f(loc_id, name, new_name, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object + CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: namelen ! Lenghth of the current_name string + INTEGER :: new_namelen ! Lenghth of the new_name string + + INTERFACE + INTEGER FUNCTION h5gmove_c(loc_id, name, namelen, new_name, new_namelen) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GMOVE_C'::h5gmove_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + !DEC$ATTRIBUTES reference :: new_name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + CHARACTER(LEN=*), INTENT(IN) :: new_name + INTEGER :: new_namelen + END FUNCTION h5gmove_c + END INTERFACE + + namelen = LEN(name) + new_namelen = LEN(new_name) + hdferr = h5gmove_c(loc_id, name, namelen, new_name, new_namelen) + END SUBROUTINE h5gmove_f +! +!****s* H5G/h5gmove2_f +! +! NAME +! h5gmove2_f +! +! PURPOSE +! Renames an object within an HDF5 file. +! +! INPUTS +! src_loc_id - original location identifier +! src_name - object's name at specified original location +! dst_loc_id - original location identifier +! dst_name - object's new name +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! September 25, 2002 +! +! SOURCE + SUBROUTINE h5gmove2_f(src_loc_id, src_name, dst_loc_id, dst_name, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: src_loc_id ! File or group identifier + CHARACTER(LEN=*), INTENT(IN) :: src_name ! Original name of an object + INTEGER(HID_T), INTENT(IN) :: dst_loc_id ! File or group identifier + CHARACTER(LEN=*), INTENT(IN) :: dst_name ! New name of an object + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: src_namelen ! Length of the current_name string + INTEGER :: dst_namelen ! Lenghth of the new_name string + + INTERFACE + INTEGER FUNCTION h5gmove2_c(src_loc_id, src_name, src_namelen, & + dst_loc_id, dst_name, dst_namelen) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GMOVE2_C'::h5gmove2_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: src_name + !DEC$ATTRIBUTES reference :: dst_name + INTEGER(HID_T), INTENT(IN) :: src_loc_id + INTEGER(HID_T), INTENT(IN) :: dst_loc_id + CHARACTER(LEN=*), INTENT(IN) :: src_name + CHARACTER(LEN=*), INTENT(IN) :: dst_name + INTEGER :: src_namelen + INTEGER :: dst_namelen + END FUNCTION h5gmove2_c + END INTERFACE + + src_namelen = LEN(src_name) + dst_namelen = LEN(dst_name) + hdferr = h5gmove2_c(src_loc_id, src_name, src_namelen, dst_loc_id, dst_name, dst_namelen) + END SUBROUTINE h5gmove2_f +! +!****s* H5G/h5gget_linkval_f +! +! NAME +! h5gget_linkval_f +! +! PURPOSE +! Returns the name of the object that the symbolic link +! points to. +! +! INPUTS +! loc_id - location identifier +! name - symbolic link to the object whose name +! is to be returned. +! size - maximum number of characters to be returned +! OUTPUTS +! buffer - a buffer to hold the name of the object +! being sought +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! SOURCE + SUBROUTINE h5gget_linkval_f(loc_id, name, size, buffer, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object + INTEGER(SIZE_T), INTENT(IN) :: size ! Maximum number of buffer + CHARACTER(LEN=size), INTENT(OUT) :: buffer + ! Buffer to hold a name of + ! the object symbolic link + ! points to + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: namelen ! Lenghth of the current_name string + + INTERFACE + INTEGER FUNCTION h5gget_linkval_c(loc_id, name, namelen, size, buffer) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GGET_LINKVAL_C'::h5gget_linkval_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + !DEC$ATTRIBUTES reference :: buffer + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(SIZE_T), INTENT(IN) :: size + CHARACTER(LEN=*), INTENT(OUT) :: buffer + END FUNCTION h5gget_linkval_c + END INTERFACE + + namelen = LEN(name) + hdferr = h5gget_linkval_c(loc_id, name, namelen, size, buffer) + END SUBROUTINE h5gget_linkval_f -!---------------------------------------------------------------------- -! Name: h5gmove2_f ! -! Purpose: Renames an object within an HDF5 file. +!****s* H5G/h5gset_comment_f ! -! Inputs: -! src_loc_id - original location identifier -! src_name - object's name at specified original location -! dst_loc_id - original location identifier -! dst_name - object's new name -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5gset_comment_f ! -! Programmer: Elena Pourmal -! September 25, 2002 +! PURPOSE +! Sets comment for specified object. ! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5gmove2_f(src_loc_id, src_name, dst_loc_id, dst_name, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: src_loc_id ! File or group identifier - CHARACTER(LEN=*), INTENT(IN) :: src_name ! Original name of an object - INTEGER(HID_T), INTENT(IN) :: dst_loc_id ! File or group identifier - CHARACTER(LEN=*), INTENT(IN) :: dst_name ! New name of an object - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER :: src_namelen ! Length of the current_name string - INTEGER :: dst_namelen ! Lenghth of the new_name string - -! INTEGER, EXTERNAL :: h5gmove2_c -! MS FORTRAN needs explicit interface for C functions called here. +! INPUTS +! loc_id - location identifier +! name - name of the object +! comment - comment to set for the object +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! - INTERFACE - INTEGER FUNCTION h5gmove2_c(src_loc_id, src_name, src_namelen, & - dst_loc_id, dst_name, dst_namelen) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GMOVE2_C'::h5gmove2_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: src_name - !DEC$ATTRIBUTES reference :: dst_name - INTEGER(HID_T), INTENT(IN) :: src_loc_id - INTEGER(HID_T), INTENT(IN) :: dst_loc_id - CHARACTER(LEN=*), INTENT(IN) :: src_name - CHARACTER(LEN=*), INTENT(IN) :: dst_name - INTEGER :: src_namelen - INTEGER :: dst_namelen - END FUNCTION h5gmove2_c - END INTERFACE - - src_namelen = LEN(src_name) - dst_namelen = LEN(dst_name) - hdferr = h5gmove2_c(src_loc_id, src_name, src_namelen,& - dst_loc_id, dst_name, dst_namelen) - END SUBROUTINE h5gmove2_f - -!---------------------------------------------------------------------- -! Name: h5gget_linkval_f -! -! Purpose: Returns the name of the object that the symbolic link -! points to. -! -! Inputs: -! loc_id - location identifier -! name - symbolic link to the object whose name -! is to be returned. -! size - maximum number of characters to be returned -! Outputs: -! buffer - a buffer to hold the name of the object -! being sought -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 5, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5gget_linkval_f(loc_id, name, size, buffer, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object - INTEGER(SIZE_T), INTENT(IN) :: size ! Maximum number of buffer - CHARACTER(LEN=size), INTENT(OUT) :: buffer - ! Buffer to hold a name of - ! the object symbolic link - ! points to - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER :: namelen ! Lenghth of the current_name string - -! INTEGER, EXTERNAL :: h5gget_linkval_c -! MS FORTRAN needs explicit interface for C functions called here. +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! - INTERFACE - INTEGER FUNCTION h5gget_linkval_c(loc_id, name, namelen, size, buffer) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GGET_LINKVAL_C'::h5gget_linkval_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - !DEC$ATTRIBUTES reference :: buffer - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER :: namelen - INTEGER(SIZE_T), INTENT(IN) :: size - CHARACTER(LEN=*), INTENT(OUT) :: buffer - END FUNCTION h5gget_linkval_c - END INTERFACE - - namelen = LEN(name) - hdferr = h5gget_linkval_c(loc_id, name, namelen, size, buffer) - END SUBROUTINE h5gget_linkval_f - -!---------------------------------------------------------------------- -! Name: h5gset_comment_f +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 ! -! Purpose: Sets comment for specified object. +! SOURCE + SUBROUTINE h5gset_comment_f(loc_id, name, comment, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object + CHARACTER(LEN=*), INTENT(IN) :: comment ! New name of an object + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: namelen ! Lenghth of the current_name string + INTEGER :: commentlen ! Lenghth of the comment string + + INTERFACE + INTEGER FUNCTION h5gset_comment_c(loc_id, name, namelen, & + comment, commentlen) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GSET_COMMENT_C'::h5gset_comment_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + !DEC$ATTRIBUTES reference :: comment + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + CHARACTER(LEN=*), INTENT(IN) :: comment + INTEGER :: commentlen + END FUNCTION h5gset_comment_c + END INTERFACE + + namelen = LEN(name) + commentlen = LEN(comment) + hdferr = h5gset_comment_c(loc_id, name, namelen, comment, commentlen) + END SUBROUTINE h5gset_comment_f ! -! Inputs: -! loc_id - location identifier -! name - name of the object -! comment - comment to set for the object -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +!****s* H5G/h5gget_comment_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! NAME +! h5gget_comment_f ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 5, 2001 +! PURPOSE +! Retrieves comment for specified object. ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5gset_comment_f(loc_id, name, comment, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object - CHARACTER(LEN=*), INTENT(IN) :: comment ! New name of an object - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER :: namelen ! Lenghth of the current_name string - INTEGER :: commentlen ! Lenghth of the comment string - -! INTEGER, EXTERNAL :: h5gset_comment_c -! MS FORTRAN needs explicit interface for C functions called here. +! INPUTS +! loc_id - location identifier +! name - name of the object at specified location +! size - size of the buffer required to hold comment +! OUTPUTS +! buffer - buffer to hold object's comment +! hdferr - Returns 0 if successful and -1 if fails ! - INTERFACE - INTEGER FUNCTION h5gset_comment_c(loc_id, name, namelen, & - comment, commentlen) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GSET_COMMENT_C'::h5gset_comment_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - !DEC$ATTRIBUTES reference :: comment - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER :: namelen - CHARACTER(LEN=*), INTENT(IN) :: comment - INTEGER :: commentlen - END FUNCTION h5gset_comment_c - END INTERFACE - - namelen = LEN(name) - commentlen = LEN(comment) - hdferr = h5gset_comment_c(loc_id, name, namelen, comment, commentlen) - END SUBROUTINE h5gset_comment_f - -!---------------------------------------------------------------------- -! Name: h5gget_comment_f -! -! Purpose: Retrieves comment for specified object. -! -! Inputs: -! loc_id - location identifier -! name - name of the object at specified location -! size - size of the buffer required to hold comment -! Outputs: -! buffer - buffer to hold object's comment -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 5, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5gget_comment_f(loc_id, name, size, buffer, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object - INTEGER(SIZE_T), INTENT(IN) :: size ! Maximum number of buffer - CHARACTER(LEN=size), INTENT(OUT) :: buffer - ! Buffer to hold a comment - INTEGER, INTENT(OUT) :: hdferr ! Error code +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! SOURCE + SUBROUTINE h5gget_comment_f(loc_id, name, size, buffer, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object + INTEGER(SIZE_T), INTENT(IN) :: size ! Maximum number of buffer + CHARACTER(LEN=size), INTENT(OUT) :: buffer + ! Buffer to hold a comment + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: namelen ! Lenghth of the current_name string - INTEGER :: namelen ! Lenghth of the current_name string + INTERFACE + INTEGER FUNCTION h5gget_comment_c(loc_id, name, namelen, size, buffer) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GGET_COMMENT_C'::h5gget_comment_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name, buffer + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(SIZE_T), INTENT(IN) :: size + CHARACTER(LEN=*), INTENT(OUT) :: buffer + END FUNCTION h5gget_comment_c + END INTERFACE -! INTEGER, EXTERNAL :: h5gget_comment_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5gget_comment_c(loc_id, name, namelen, & - size, buffer) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GGET_COMMENT_C'::h5gget_comment_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name, buffer - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER :: namelen - INTEGER(SIZE_T), INTENT(IN) :: size - CHARACTER(LEN=*), INTENT(OUT) :: buffer - END FUNCTION h5gget_comment_c - END INTERFACE + namelen = LEN(name) + hdferr = h5gget_comment_c(loc_id, name, namelen, size, buffer) - namelen = LEN(name) - hdferr = h5gget_comment_c(loc_id, name, namelen, size, buffer) END SUBROUTINE h5gget_comment_f - -!---------------------------------------------------------------------- -! Name: H5Gcreate_anon_f ! -! Purpose: Creates a new empty group without linking it into the file structure. +!****s* H5G/H5Gcreate_anon_f ! -! Inputs: -! loc_id - Location identifier -! Outputs: -! grp_id - group identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! gcpl_id - Group creation property list identifier -! gapl_id - Group access property list identifier +! NAME +! H5Gcreate_anon_f ! -! Programmer: M.S. Breitenfeld -! February 15, 2008 +! PURPOSE +! Creates a new empty group without linking it into the file structure. ! -! Modifications: +! INPUTS +! loc_id - Location identifier +! OUTPUTS +! grp_id - group identifier +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! gcpl_id - Group creation property list identifier +! gapl_id - Group access property list identifier ! -! Comment: -!---------------------------------------------------------------------- +! AUTHOR +! M. Scot Breitenfeld +! February 15, 2008 +! +! SOURCE SUBROUTINE h5Gcreate_anon_f(loc_id, grp_id, hdferr, gcpl_id, gapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -998,7 +978,7 @@ CONTAINS INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gcpl_id ! Property list for group creation INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id ! Property list for group access - +!***** INTEGER(HID_T) :: gcpl_id_default INTEGER(HID_T) :: gapl_id_default @@ -1024,36 +1004,31 @@ CONTAINS hdferr = h5gcreate_anon_c(loc_id, gcpl_id_default, gapl_id_default, grp_id) END SUBROUTINE h5Gcreate_anon_f - -!---------------------------------------------------------------------- -! Name: H5Gget_create_plist_f ! -! Purpose: Gets a group creation property list identifier. +!****s* H5G/H5Gget_create_plist_f ! -! Inputs: -! grp_id - group identifier -! Outputs: -! gcpl_id - Group creation property list identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: +! NAME +! H5Gget_create_plist_f ! -! Programmer: M.S. Breitenfeld -! February 15, 2008 +! PURPOSE +! Gets a group creation property list identifier. ! -! Modifications: +! INPUTS +! grp_id - group identifier +! OUTPUTS +! gcpl_id - Group creation property list identifier +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! M. Scot Breitenfeld +! February 15, 2008 ! -! Comment: -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5gget_create_plist_f(grp_id, gcpl_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: grp_id ! Group identifier INTEGER(HID_T), INTENT(OUT) :: gcpl_id ! Property list for group creation INTEGER, INTENT(OUT) :: hdferr ! Error code - -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5gget_create_plist_c(grp_id, gcpl_id ) USE H5GLOBAL @@ -1069,56 +1044,59 @@ CONTAINS END SUBROUTINE h5gget_create_plist_f -!---------------------------------------------------------------------- -! Name: h5gget_info_f ! -! Purpose: Retrieves information about a group +!****s* H5G/h5gget_info_f ! -! Inputs: -! group_id - Group identifier +! NAME +! h5gget_info_f ! -! Outputs: NOTE: In C it is defined as a structure: H5G_info_t +! PURPOSE +! Retrieves information about a group ! -! storage_type - Type of storage for links in group -! H5G_STORAGE_TYPE_COMPACT: Compact storage -! H5G_STORAGE_TYPE_DENSE: Indexed storage -! H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure -! nlinks - Number of links in group -! max_corder - Current maximum creation order value for group -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! mounted - Whether group has a file mounted on it +! INPUTS +! group_id - Group identifier ! -! Programmer: M. S. Breitenfeld -! February 15, 2008 +! OUTPUTS +! storage_type - Type of storage for links in group +! H5G_STORAGE_TYPE_COMPACT: Compact storage +! H5G_STORAGE_TYPE_DENSE: Indexed storage +! H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure +! nlinks - Number of links in group +! max_corder - Current maximum creation order value for group +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! mounted - Whether group has a file mounted on it ! -! Modifications: -! - Added 'mounted' paramater -! M.S. Breitenfeld -! July 16, 2008 +! AUTHOR +! M. Scot Breitenfeld +! February 15, 2008 ! -!---------------------------------------------------------------------- - +! NOTES +! In C the output is defined as a structure: H5G_info_t +! +! HISTORY +! +! - Added 'mounted' paramater +! M. Scot Breitenfeld +! July 16, 2008 +! +! SOURCE SUBROUTINE h5gget_info_f(group_id, storage_type, nlinks, max_corder, hdferr, mounted) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: group_id ! Group identifier - INTEGER, INTENT(OUT) :: storage_type ! Type of storage for links in group: + INTEGER, INTENT(OUT) :: storage_type ! Type of storage for links in group: ! H5G_STORAGE_TYPE_COMPACT_F: Compact storage ! H5G_STORAGE_TYPE_DENSE_F: Indexed storage ! H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure - INTEGER, INTENT(OUT) :: nlinks ! Number of links in group - INTEGER, INTENT(OUT) :: max_corder ! Current maximum creation order value for group - INTEGER, INTENT(OUT) :: hdferr ! Error code: - ! 0 on success and -1 on failure - LOGICAL, INTENT(OUT), OPTIONAL :: mounted ! Whether group has a file mounted on it - + INTEGER, INTENT(OUT) :: nlinks ! Number of links in group + INTEGER, INTENT(OUT) :: max_corder ! Current maximum creation order value for group + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 on success and -1 on failure + LOGICAL, INTENT(OUT), OPTIONAL :: mounted ! Whether group has a file mounted on it +!***** INTEGER :: mounted_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5gget_info_c(group_id, storage_type, nlinks, max_corder, mounted_c) USE H5GLOBAL @@ -1144,70 +1122,71 @@ CONTAINS ENDIF END SUBROUTINE h5gget_info_f - -!---------------------------------------------------------------------- -! Name: h5gget_info_by_idx_f -! -! Purpose: Retrieves information about a group, according to the group’s position within an index. -! -! Inputs: -! loc_id - File or group identifier -! group_name - Name of group containing group for which information is to be retrieved -! index_type - Index type -! order - Order of the count in the index -! n - Position in the index of the group for which information is retrieved -! -! Outputs: NOTE: In C the following are defined as a structure: H5G_info_t -! -! storage_type - Type of storage for links in group -! H5G_STORAGE_TYPE_COMPACT: Compact storage -! H5G_STORAGE_TYPE_DENSE: Indexed storage -! H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure -! nlinks - Number of links in group -! max_corder - Current maximum creation order value for group -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - Link access property list -! mounted - Whether group has a file mounted on it ! -! Programmer: M. S. Breitenfeld -! February 18, 2008 -! -! Modifications: -! - Added 'mounted' paramater -! M.S. Breitenfeld -! July 16, 2008 -! -!---------------------------------------------------------------------- - +!****s* H5G/h5gget_info_by_idx_f +! +! NAME +! h5gget_info_by_idx_f +! +! PURPOSE +! Retrieves information about a group, according to the group’s position within an index. +! +! INPUTS +! loc_id - File or group identifier +! group_name - Name of group containing group for which information is to be retrieved +! index_type - Index type +! order - Order of the count in the index +! n - Position in the index of the group for which information is retrieved +! +! OUTPUTS +! storage_type - Type of storage for links in group +! H5G_STORAGE_TYPE_COMPACT: Compact storage +! H5G_STORAGE_TYPE_DENSE: Indexed storage +! H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure +! nlinks - Number of links in group +! max_corder - Current maximum creation order value for group +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lapl_id - Link access property list +! mounted - Whether group has a file mounted on it +! +! NOTES +! In C the output is defined as a structure: H5G_info_t +! +! AUTHOR +! M. Scot Breitenfeld +! February 18, 2008 +! +! HISTORY +! Added 'mounted' paramater +! M. Scot Breitenfeld +! July 16, 2008 +! +! SOURCE SUBROUTINE h5gget_info_by_idx_f(loc_id, group_name, index_type, order, n, & storage_type, nlinks, max_corder, hdferr, lapl_id, mounted) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier + INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of group containing group for which information is to be retrieved INTEGER, INTENT(IN) :: index_type ! Index type INTEGER, INTENT(IN) :: order ! Order of the count in the index - INTEGER(HSIZE_T), INTENT(IN) :: n ! Position in the index of the group for which information is retrieved + INTEGER(HSIZE_T), INTENT(IN) :: n ! Position in the index of the group for which information is retrieved INTEGER, INTENT(OUT) :: storage_type ! Type of storage for links in group: - ! H5G_STORAGE_TYPE_COMPACT_F: Compact storage - ! H5G_STORAGE_TYPE_DENSE_F: Indexed storage - ! H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure - INTEGER, INTENT(OUT) :: nlinks ! Number of links in group - INTEGER, INTENT(OUT) :: max_corder ! Current maximum creation order value for group - INTEGER, INTENT(OUT) :: hdferr ! Error code: - ! 0 on success and -1 on failure + ! H5G_STORAGE_TYPE_COMPACT_F: Compact storage + ! H5G_STORAGE_TYPE_DENSE_F: Indexed storage + ! H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure + INTEGER, INTENT(OUT) :: nlinks ! Number of links in group + INTEGER, INTENT(OUT) :: max_corder ! Current maximum creation order value for group + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 on success and -1 on failure INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list - LOGICAL, INTENT(OUT), OPTIONAL :: mounted ! Whether group has a file mounted on it - + LOGICAL, INTENT(OUT), OPTIONAL :: mounted ! Whether group has a file mounted on it +!***** INTEGER :: mounted_c INTEGER(HID_T) :: lapl_id_default INTEGER(SIZE_T) :: group_name_len ! length of group name -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5gget_info_by_idx_c(loc_id, group_name, group_name_len, index_type, order, n, lapl_id_default, & storage_type, nlinks, max_corder, mounted_c) @@ -1215,7 +1194,7 @@ CONTAINS !DEC$IF DEFINED(HDF5F90_WINDOWS) !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GGET_INFO_BY_IDX_C'::h5gget_info_by_idx_c !DEC$ENDIF - + !DEC$ATTRIBUTES reference :: group_name INTEGER(HID_T), INTENT(IN) :: loc_id CHARACTER(LEN=*), INTENT(IN) :: group_name @@ -1251,63 +1230,65 @@ CONTAINS ENDIF END SUBROUTINE h5gget_info_by_idx_f - -!---------------------------------------------------------------------- -! Name: h5gget_info_by_name_f ! -! Purpose: Retrieves information about a group. +!****s* H5G/h5gget_info_by_name_f ! -! Inputs: -! loc_id - File or group identifier -! group_name - Name of group containing group for which information is to be retrieved +! NAME +! h5gget_info_by_name_f ! -! Outputs: NOTE: In C the following are defined as a structure: H5G_info_t +! PURPOSE +! Retrieves information about a group. ! -! storage_type - Type of storage for links in group -! H5G_STORAGE_TYPE_COMPACT: Compact storage -! H5G_STORAGE_TYPE_DENSE: Indexed storage -! H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure -! nlinks - Number of links in group -! max_corder - Current maximum creation order value for group -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - Link access property list -! mounted - Whether group has a file mounted on it +! INPUTS +! loc_id - File or group identifier +! group_name - Name of group containing group for which information is to be retrieved ! -! Programmer: M. S. Breitenfeld -! February 18, 2008 +! OUTPUTS ! -! Modifications: -! - Added 'mounted' paramater -! M.S. Breitenfeld -! July 16, 2008 -!---------------------------------------------------------------------- - +! storage_type - Type of storage for links in group +! H5G_STORAGE_TYPE_COMPACT: Compact storage +! H5G_STORAGE_TYPE_DENSE: Indexed storage +! H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure +! nlinks - Number of links in group +! max_corder - Current maximum creation order value for group +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lapl_id - Link access property list +! mounted - Whether group has a file mounted on it +! +! NOTES +! In C the output is defined as a structure: H5G_info_t +! +! AUTHOR +! M. Scot Breitenfeld +! February 18, 2008 +! +! HISTORY +! Added 'mounted' paramater +! M. Scot Breitenfeld +! July 16, 2008 +! SOURCE SUBROUTINE h5gget_info_by_name_f(loc_id, group_name, & storage_type, nlinks, max_corder, hdferr, lapl_id, mounted) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier + INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of group containing group for which information is to be retrieved - INTEGER, INTENT(OUT) :: storage_type ! Type of storage for links in group: + INTEGER, INTENT(OUT) :: storage_type ! Type of storage for links in group: ! H5G_STORAGE_TYPE_COMPACT_F: Compact storage ! H5G_STORAGE_TYPE_DENSE_F: Indexed storage ! H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure - INTEGER, INTENT(OUT) :: nlinks ! Number of links in group - INTEGER, INTENT(OUT) :: max_corder ! Current maximum creation order value for group - INTEGER, INTENT(OUT) :: hdferr ! Error code: - ! 0 on success and -1 on failure + INTEGER, INTENT(OUT) :: nlinks ! Number of links in group + INTEGER, INTENT(OUT) :: max_corder ! Current maximum creation order value for group + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 on success and -1 on failure INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list - LOGICAL, INTENT(OUT), OPTIONAL :: mounted ! Whether group has a file mounted on it - + LOGICAL, INTENT(OUT), OPTIONAL :: mounted ! Whether group has a file mounted on it +!***** INTEGER :: mounted_c INTEGER(HID_T) :: lapl_id_default INTEGER(SIZE_T) :: group_name_len ! length of group name -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5gget_info_by_name_c(loc_id, group_name, group_name_len, lapl_id_default, & storage_type, nlinks, max_corder, mounted_c) diff --git a/fortran/src/H5If.c b/fortran/src/H5If.c index 5f11fde..55868dd 100644 --- a/fortran/src/H5If.c +++ b/fortran/src/H5If.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5If/H5If + * PURPOSE + * This file contains C stubs for H5I Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,25 +16,34 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for H5I Fortran APIs */ - + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" #include "H5Eprivate.h" -/*---------------------------------------------------------------------------- - * Name: h5iget_type_c - * Purpose: Call H5Iget_type to get the type of an object - * Inputs: obj_id - object identifier - * Outputs: type - object type - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Thursday, March 24, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5If/h5iget_type_c + * NAME + * h5iget_type_c + * PURPOSE + * Call H5Iget_type to get the type of an object + * INPUTS + * obj_id - object identifier + * OUTPUTS + * type - object type + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su + * Thursday, March 24, 2000 + * HISTORY + * + * SOURCE +*/ int_f nh5iget_type_c (hid_t_f *obj_id, int_f *type) +/******/ { int ret_value = -1; hid_t c_obj_id; @@ -45,23 +59,32 @@ nh5iget_type_c (hid_t_f *obj_id, int_f *type) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5iget_name_c - * Purpose: Call H5Iget_name to get object's name - * Inputs: obj_id - object identifier +/****if* H5If/h5iget_name_c + * NAME + * h5iget_name_c + * PURPOSE + * Call H5Iget_name to get object's name + * INPUTS + * obj_id - object identifier * buf_size - size of the buffer - * Outputs: buf - buffer to hold the name - * Returns: length of the name on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * buf - buffer to hold the name + * RETURNS + * length of the name on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, March 12, 2003 - * Modifications: + * HISTORY + * * Changed the size of c_buf_size to c_buf_size + 1, which * fixes the problem of truncating the string by 1 if the * exact size of the string (buf_size) is passed in. - * M.S. Breitenfeld, April 21, 2008 - *---------------------------------------------------------------------------*/ + * M. Scot Breitenfeld, April 21, 2008 + * SOURCE +*/ int_f nh5iget_name_c(hid_t_f *obj_id, _fcd buf, size_t_f *buf_size, size_t_f *name_size) +/******/ { int ret_value = -1; hid_t c_obj_id; @@ -95,18 +118,25 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5iinc_ref_c - * Purpose: Call H5Iinc_ref to increment object's reference count - * Inputs: obj_id - object identifier - * Outputs: ref_count - Reference count of ID - * Returns: current reference count on success, -1 on failure - * Programmer: Quincey Koziol - * Tuesday, December 9, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5If/h5iinc_ref_c + * NAME + * h5iinc_ref_c + * PURPOSE + * Call H5Iinc_ref to increment object's reference count + * INPUTS + * obj_id - object identifier + * OUTPUTS + * ref_count - Reference count of ID + * RETURNS + * current reference count on success, -1 on failure + * AUTHOR + * Quincey Koziol + * Tuesday, December 9, 2003 + * SOURCE +*/ int_f nh5iinc_ref_c(hid_t_f *obj_id, int_f *ref_count) +/******/ { int ret_value; @@ -124,18 +154,25 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5idec_ref_c - * Purpose: Call H5Idec_ref to decrement object's reference count - * Inputs: obj_id - object identifier - * Outputs: ref_count - Reference count of ID - * Returns: current reference count on success, -1 on failure - * Programmer: Quincey Koziol +/****if* H5If/h5idec_ref_c + * NAME + * h5idec_ref_c + * PURPOSE + * Call H5Idec_ref to decrement object's reference count + * INPUTS + * obj_id - object identifier + * OUTPUTS + * ref_count - Reference count of ID + * RETURNS + * current reference count on success, -1 on failure + * AUTHOR + * Quincey Koziol * Tuesday, December 9, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5idec_ref_c(hid_t_f *obj_id, int_f *ref_count) +/******/ { int ret_value; @@ -153,18 +190,26 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5iget_ref_c - * Purpose: Call H5Iget_ref to retrieve object's reference count - * Inputs: obj_id - object identifier - * Outputs: ref_count - Reference count of ID - * Returns: current reference count on success, -1 on failure - * Programmer: Quincey Koziol - * Tuesday, December 9, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5If/h5iget_ref_c + * NAME + * h5iget_ref_c + * PURPOSE + * Call H5Iget_ref to retrieve object's reference count + * INPUTS + * obj_id - object identifier + * OUTPUTS + * ref_count - Reference count of ID + * RETURNS + * current reference count on success, -1 on failure + * AUTHOR + * Quincey Koziol + * Tuesday, December 9, 2003 + * + * SOURCE +*/ int_f nh5iget_ref_c(hid_t_f *obj_id, int_f *ref_count) +/******/ { int ret_value; @@ -182,18 +227,26 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5iget_file_id_c - * Purpose: Call H5Iget_file_id to obtain file identifier from object identifier - * Inputs: obj_id - object identifier - * Outputs: file_id - file identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Tuesday, August 24, 2004 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5If/h5iget_file_id_c + * NAME + * h5iget_file_id_c + * PURPOSE + * Call H5Iget_file_id to obtain file identifier from object identifier + * INPUTS + * obj_id - object identifier + * OUTPUTS + * file_id - file identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Tuesday, August 24, 2004 + * + * SOURCE +*/ int_f nh5iget_file_id_c(hid_t_f *obj_id, hid_t_f *file_id) +/******/ { int ret_value; hid_t c_file_id; diff --git a/fortran/src/H5Iff.f90 b/fortran/src/H5Iff.f90 index a082d5a..86e88b9 100644 --- a/fortran/src/H5Iff.f90 +++ b/fortran/src/H5Iff.f90 @@ -1,352 +1,352 @@ -! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -! Copyright by The HDF Group. * -! Copyright by the Board of Trustees of the University of Illinois. * -! All rights reserved. * -! * -! This file is part of HDF5. The full HDF5 copyright notice, including * -! terms governing use, modification, and redistribution, is contained in * -! the files COPYING and Copyright.html. COPYING can be found at the root * -! of the source code distribution tree; Copyright.html can be found at the * -! root level of an installed copy of the electronic HDF5 document set and * -! is linked from the top-level documents page. It can also be found at * -! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * -! access to either file, you may request a copy from help@hdfgroup.org. * -! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -! -! -! This file contains FORTRAN90 interfaces for H5I functions -! - MODULE H5I +!****h* ROBODoc/H5I +! +! NAME +! MODULE H5I +! +! FILE +! fortran/src/H5Iff.f90 +! +! PURPOSE +! This file contains Fortran interfaces for H5I functions. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! *** IMPORTANT *** +! If you add a new H5I function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** - USE H5GLOBAL +MODULE H5I - CONTAINS + USE H5GLOBAL -!---------------------------------------------------------------------- -! Name: h5iget_type_f -! -! Purpose: Retrieves the type of an object. -! -! Inputs: obj_id - object identifier -! Outputs: -! type - type of the object, possible values: -! H5I_FILE_F -! H5I_GROUP_F -! H5I_DATATYPE_F -! H5I_DATASPACE_F -! H5I_DATASET_F -! H5I_ATTR_F -! H5I_BADID_F -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 5, 2001 -! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5iget_type_f(obj_id, type, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: obj_id !Object identifier - INTEGER, INTENT(OUT) :: type !type of an object. - !possible values are: - !H5I_FILE_F - !H5I_GROUP_F - !H5I_DATATYPE_F - !H5I_DATASPACE_F - !H5I_DATASET_F - !H5I_ATTR_F - !H5I_BADID_F - INTEGER, INTENT(OUT) :: hdferr ! Error code +CONTAINS -! INTEGER, EXTERNAL :: h5iget_type_c -! Interface is needed for MS FORTRAN -! - INTERFACE - INTEGER FUNCTION h5iget_type_c(obj_id, type) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IGET_TYPE_C':: h5iget_type_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: obj_id - INTEGER, INTENT(OUT) :: type - END FUNCTION h5iget_type_c - END INTERFACE - hdferr = h5iget_type_c(obj_id, type) - END SUBROUTINE h5iget_type_f +!****s* H5I/h5iget_type_f +! +! NAME +! h5iget_type_f +! +! PURPOSE +! Retrieves the type of an object. +! +! INPUTS +! obj_id - object identifier +! OUTPUTS +! type - type of the object, possible values: +! H5I_FILE_F +! H5I_GROUP_F +! H5I_DATATYPE_F +! H5I_DATASPACE_F +! H5I_DATASET_F +! H5I_ATTR_F +! H5I_BADID_F +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! SOURCE + SUBROUTINE h5iget_type_f(obj_id, TYPE, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier + INTEGER, INTENT(OUT) :: TYPE ! type of an object. + ! possible values are: + ! H5I_FILE_F + ! H5I_GROUP_F + ! H5I_DATATYPE_F + ! H5I_DATASPACE_F + ! H5I_DATASET_F + ! H5I_ATTR_F + ! H5I_BADID_F + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5iget_type_c(obj_id, TYPE) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IGET_TYPE_C':: h5iget_type_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: obj_id + INTEGER, INTENT(OUT) :: TYPE + END FUNCTION h5iget_type_c + END INTERFACE + hdferr = h5iget_type_c(obj_id, TYPE) + END SUBROUTINE h5iget_type_f -!---------------------------------------------------------------------- -! Name: h5iget_name_f -! -! Purpose: Gets a name of an object specified by its idetifier. -! -! Inputs: -! obj_id - attribute identifier -! buf_size - size of a buffer to read name in -! Outputs: -! buf - buffer to read name in, name will be truncated if -! buffer is not big enough -! name_size - name size -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! March 12, 2003 -! -! Modifications: -! -!---------------------------------------------------------------------- +!****s* H5I/h5iget_name_f +! +! NAME +! h5iget_name_f +! +! PURPOSE +! Gets a name of an object specified by its idetifier. +! +! INPUTS +! obj_id - attribute identifier +! buf_size - size of a buffer to read name in +! OUTPUTS +! buf - buffer to read name in, name will be truncated if +! buffer is not big enough +! name_size - name size +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! March 12, 2003 +! SOURCE + SUBROUTINE h5iget_name_f(obj_id, buf, buf_size, name_size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier + INTEGER(SIZE_T), INTENT(IN) :: buf_size ! Buffer size + CHARACTER(LEN=*), INTENT(OUT) :: buf ! Buffer to hold object name + INTEGER(SIZE_T), INTENT(OUT) :: name_size ! Actual name size + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 if successful, + ! -1 if fail +!***** + INTERFACE + INTEGER FUNCTION h5iget_name_c(obj_id, buf, buf_size, name_size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IGET_NAME_C'::h5iget_name_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: obj_id + CHARACTER(LEN=*), INTENT(OUT) :: buf + INTEGER(SIZE_T), INTENT(IN) :: buf_size + INTEGER(SIZE_T), INTENT(OUT) :: name_size + END FUNCTION h5iget_name_c + END INTERFACE + hdferr = h5iget_name_c(obj_id, buf, buf_size, name_size) + END SUBROUTINE h5iget_name_f - SUBROUTINE h5iget_name_f(obj_id, buf, buf_size, name_size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier - INTEGER(SIZE_T), INTENT(IN) :: buf_size ! Buffer size - CHARACTER(LEN=*), INTENT(OUT) :: buf ! Buffer to hold object name - INTEGER(SIZE_T), INTENT(OUT) :: name_size ! Actual name size - INTEGER, INTENT(OUT) :: hdferr ! Error code: - ! 0 if successful, - ! -1 if fail -! INTEGER, EXTERNAL :: h5iget_name_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5iget_name_c(obj_id, buf, buf_size, name_size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IGET_NAME_C'::h5iget_name_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: buf - INTEGER(HID_T), INTENT(IN) :: obj_id - CHARACTER(LEN=*), INTENT(OUT) :: buf - INTEGER(SIZE_T), INTENT(IN) :: buf_size - INTEGER(SIZE_T), INTENT(OUT) :: name_size - END FUNCTION h5iget_name_c - END INTERFACE +!****s* H5I/h5iinc_ref_f +! +! NAME +! h5iinc_ref_f +! +! PURPOSE +! Increments the reference count of an ID +! +! INPUTS +! obj_id - object identifier +! OUTPUTS +! ref_count - Current reference count of the ID +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Quincey Koziol +! December 9, 2003 +! +! SOURCE + SUBROUTINE h5iinc_ref_f(obj_id, ref_count, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier + INTEGER, INTENT(OUT) :: ref_count ! Current reference count of ID + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5iinc_ref_c(obj_id, ref_count) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IINC_REF_C':: h5iinc_ref_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: obj_id + INTEGER, INTENT(OUT) :: ref_count + END FUNCTION h5iinc_ref_c + END INTERFACE + hdferr = h5iinc_ref_c(obj_id, ref_count) + END SUBROUTINE h5iinc_ref_f - hdferr = h5iget_name_c(obj_id, buf, buf_size, name_size) - END SUBROUTINE h5iget_name_f +!****s* H5I/h5idec_ref_f +! +! NAME +! h5idec_ref_f +! +! PURPOSE +! Decrements the reference count of an ID +! +! INPUTS +! obj_id - Object identifier +! OUTPUTS +! ref_count - Current reference count of the ID +! hdferr: - Error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Quincey Koziol +! December 9, 2003 +! +! SOURCE + SUBROUTINE h5idec_ref_f(obj_id, ref_count, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier + INTEGER, INTENT(OUT) :: ref_count ! Current reference count of ID + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5idec_ref_c(obj_id, ref_count) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IDEC_REF_C':: h5idec_ref_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: obj_id + INTEGER, INTENT(OUT) :: ref_count + END FUNCTION h5idec_ref_c + END INTERFACE + hdferr = h5idec_ref_c(obj_id, ref_count) + END SUBROUTINE h5idec_ref_f -!---------------------------------------------------------------------- -! Name: h5iinc_ref_f -! -! Purpose: Increments the reference count of an ID -! -! Inputs: obj_id - object identifier -! Outputs: -! ref_count - Current reference count of the ID -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Quincey Koziol -! December 9, 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5iinc_ref_f(obj_id, ref_count, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: obj_id !Object identifier - INTEGER, INTENT(OUT) :: ref_count !Current reference count of ID - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5iinc_ref_c -! Interface is needed for MS FORTRAN -! - INTERFACE - INTEGER FUNCTION h5iinc_ref_c(obj_id, ref_count) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IINC_REF_C':: h5iinc_ref_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: obj_id - INTEGER, INTENT(OUT) :: ref_count - END FUNCTION h5iinc_ref_c - END INTERFACE - hdferr = h5iinc_ref_c(obj_id, ref_count) - END SUBROUTINE h5iinc_ref_f - -!---------------------------------------------------------------------- -! Name: h5idec_ref_f -! -! Purpose: Decrements the reference count of an ID -! -! Inputs: obj_id - object identifier -! Outputs: -! ref_count - Current reference count of the ID -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Quincey Koziol -! December 9, 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5idec_ref_f(obj_id, ref_count, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: obj_id !Object identifier - INTEGER, INTENT(OUT) :: ref_count !Current reference count of ID - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5idec_ref_c -! Interface is needed for MS FORTRAN -! - INTERFACE - INTEGER FUNCTION h5idec_ref_c(obj_id, ref_count) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IDEC_REF_C':: h5idec_ref_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: obj_id - INTEGER, INTENT(OUT) :: ref_count - END FUNCTION h5idec_ref_c - END INTERFACE - hdferr = h5idec_ref_c(obj_id, ref_count) - END SUBROUTINE h5idec_ref_f - -!---------------------------------------------------------------------- -! Name: h5iget_ref_f -! -! Purpose: Retrieves the reference count of an ID -! -! Inputs: obj_id - object identifier -! Outputs: -! ref_count - Current reference count of the ID -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Quincey Koziol -! December 9, 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5iget_ref_f(obj_id, ref_count, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: obj_id !Object identifier - INTEGER, INTENT(OUT) :: ref_count !Current reference count of ID - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5iget_ref_c -! Interface is needed for MS FORTRAN -! - INTERFACE - INTEGER FUNCTION h5iget_ref_c(obj_id, ref_count) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IGET_REF_C':: h5iget_ref_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: obj_id - INTEGER, INTENT(OUT) :: ref_count - END FUNCTION h5iget_ref_c - END INTERFACE - hdferr = h5iget_ref_c(obj_id, ref_count) - END SUBROUTINE h5iget_ref_f - -!---------------------------------------------------------------------- -! Name: h5iget_file_id_f -! -! Purpose: Obtains file identifier from the object identifier -! -! Inputs: obj_id - object identifier -! Outputs: -! file_id - file identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 23, 2004 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5iget_file_id_f(obj_id, file_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier - INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5iget_file_id_c(obj_id, file_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IGET_FILE_ID_C':: h5iget_file_id_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: obj_id - INTEGER(HID_T), INTENT(OUT) :: file_id - END FUNCTION h5iget_file_id_c - END INTERFACE - hdferr = h5iget_file_id_c(obj_id, file_id) - END SUBROUTINE h5iget_file_id_f - -!---------------------------------------------------------------------- -! Name: H5Iis_valid_f -! -! Purpose: Check if an ID is valid without producing an error message -! -! Inputs: id - identifier -! Outputs: -! valid - status of id as a valid identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Programmer: M. Scot Breitenfeld -! April 13, 2009 -! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5iis_valid_f(id, valid, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: id ! Identifier - LOGICAL, INTENT(OUT) :: valid ! Status of id as a valid identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: c_valid ! 0 = .false, 1 = .true. - - INTERFACE - INTEGER FUNCTION h5iis_valid_c(id, c_valid) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IIS_VALID_C':: h5iis_valid_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: id ! Identifier - INTEGER :: c_valid - END FUNCTION h5iis_valid_c - END INTERFACE - - hdferr = h5iis_valid_c(id, c_valid) - - valid = .FALSE. ! Default - IF(c_valid.EQ.1) valid = .TRUE. - - END SUBROUTINE h5iis_valid_f - - - END MODULE H5I +!****s* H5I/h5iget_ref_f +! NAME +! h5iget_ref_f +! +! PURPOSE +! Retrieves the reference count of an ID +! +! INPUTS +! obj_id - object identifier +! +! OUTPUTS +! ref_count - Current reference count of the ID +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Quincey Koziol +! December 9, 2003 +! +! SOURCE + SUBROUTINE h5iget_ref_f(obj_id, ref_count, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier + INTEGER, INTENT(OUT) :: ref_count ! Current reference count of ID + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5iget_ref_c(obj_id, ref_count) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IGET_REF_C':: h5iget_ref_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: obj_id + INTEGER, INTENT(OUT) :: ref_count + END FUNCTION h5iget_ref_c + END INTERFACE + hdferr = h5iget_ref_c(obj_id, ref_count) + END SUBROUTINE h5iget_ref_f +! +!****s* H5I/h5iget_file_id_f +! NAME +! h5iget_file_id_f +! +! PURPOSE +! Obtains file identifier from the object identifier +! +! INPUTS +! obj_id - object identifier +! OUTPUTS +! file_id - file identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 23, 2004 +! SOURCE + SUBROUTINE h5iget_file_id_f(obj_id, file_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier + INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5iget_file_id_c(obj_id, file_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IGET_FILE_ID_C':: h5iget_file_id_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: obj_id + INTEGER(HID_T), INTENT(OUT) :: file_id + END FUNCTION h5iget_file_id_c + END INTERFACE + hdferr = h5iget_file_id_c(obj_id, file_id) + END SUBROUTINE h5iget_file_id_f +! +!****s* H5I/h5iis_valid_f +! NAME +! h5iget_file_id_f +! +! PURPOSE +! Check if an ID is valid without producing an error message +! +! INPUTS +! id - identifier +! OUTPUTS +! valid - status of id as a valid identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! M. Scot Breitenfeld +! April 13, 2009 +! SOURCE + SUBROUTINE h5iis_valid_f(id, valid, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: id ! Identifier + LOGICAL, INTENT(OUT) :: valid ! Status of id as a valid identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: c_valid ! 0 = .false, 1 = .true. + + INTERFACE + INTEGER FUNCTION h5iis_valid_c(id, c_valid) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IIS_VALID_C':: h5iis_valid_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: id ! Identifier + INTEGER :: c_valid + END FUNCTION h5iis_valid_c + END INTERFACE + + hdferr = h5iis_valid_c(id, c_valid) + + valid = .FALSE. ! Default + IF(c_valid.EQ.1) valid = .TRUE. + + END SUBROUTINE h5iis_valid_f +END MODULE H5I diff --git a/fortran/src/H5Lf.c b/fortran/src/H5Lf.c index c971d5e..e5b01ed 100644 --- a/fortran/src/H5Lf.c +++ b/fortran/src/H5Lf.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5Lf/H5Lf + * PURPOSE + * This file contains C stubs for H5L Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,17 +16,21 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for H5L Fortran APIs */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" #include "H5Eprivate.h" -/*---------------------------------------------------------------------------- - * Name: h5lcopy_c - * Purpose: Call H5Lcopy - * Inputs: +/****if* H5Lf/h5lcopy_c + * NAME + * h5lcopy_c + * PURPOSE + * Call H5Lcopy + * INPUTS + * * src_loc_id - Location identifier of the source link * src_name - Name of the link to be copied * src_namelen - length of the name @@ -33,16 +42,21 @@ * lcpl_id - Link creation property list identifier * lapl_id - Link access property list identifier * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5lcopy_c(hid_t_f *src_loc_id, _fcd src_name, size_t_f *src_namelen, hid_t_f *dest_loc_id, _fcd dest_name, size_t_f *dest_namelen, hid_t_f *lcpl_id, hid_t_f *lapl_id) +/******/ { char *c_src_name = NULL; char *c_dest_name = NULL; @@ -72,10 +86,13 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5lcreate_external_c - * Purpose: Call H5Lcreate_external_c - * Inputs: +/****if* H5Lf/h5lcreate_external_c + * NAME + * h5lcreate_external_c + * PURPOSE + * Call H5Lcreate_external_c + * INPUTS + * * file_name - Name of the file containing the target object. Neither the file nor the target object is * required to exist. May be the file the link is being created in. * obj_name - Path within the target file to the target object. @@ -84,17 +101,19 @@ done: * lcpl_id - Link creation property list identifier. * lapl_id - Link access property list identifier. * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * February 29, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * February 29, 2008 + * SOURCE +*/ int_f nh5lcreate_external_c(_fcd file_name, size_t_f *file_namelen, _fcd obj_name, size_t_f *obj_namelen, hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen, hid_t_f *lcpl_id, hid_t_f *lapl_id) - +/******/ { char *c_file_name = NULL; char *c_obj_name = NULL; @@ -129,24 +148,30 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5ldelete_c - * Purpose: Call H5Ldelete - * Inputs: +/****if* H5Lf/h5ldelete_c + * NAME + * h5ldelete_c + * PURPOSE + * Call H5Ldelete + * INPUTS + * * * loc_id - Identifier of the file or group containing the object * name - Name of the link to delete * lapl_id - Link access property list identifier * namelen - length of name * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5ldelete_c ( hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id ) +/******/ { char *c_name = NULL; int_f ret_value = 0; @@ -170,10 +195,13 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5lcreate_soft_c - * Purpose: Call H5Lcreate_soft - * Inputs: +/****if* H5Lf/h5lcreate_soft_c + * NAME + * h5lcreate_soft_c + * PURPOSE + * Call H5Lcreate_soft + * INPUTS + * * * target_path - Path to the target object, which is not required to exist. * link_loc_id - The file or group identifier for the new link. @@ -181,17 +209,20 @@ done: * lcpl_id - Link creation property list identifier. * lapl_id - Link access property list identifier. * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February 20, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5lcreate_soft_c(_fcd target_path, size_t_f *target_path_len, hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_name_len, hid_t_f *lcpl_id, hid_t_f *lapl_id ) +/******/ { char *c_target_path = NULL; char *c_link_name = NULL; @@ -220,10 +251,13 @@ nh5lcreate_soft_c(_fcd target_path, size_t_f *target_path_len, return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5lcreate_hard_c - * Purpose: Call H5Lcreate_hard - * Inputs: +/****if* H5Lf/h5lcreate_hard_c + * NAME + * h5lcreate_hard_c + * PURPOSE + * Call H5Lcreate_hard + * INPUTS + * * obj_loc_id - The file or group identifier for the target object. * obj_name - Name of the target object, which must already exist. * obj_namelen - Name length @@ -233,17 +267,19 @@ nh5lcreate_soft_c(_fcd target_path, size_t_f *target_path_len, * lcpl_id - Link creation property list identifier. * lapl_id - Link access property list identifier. * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * February 27, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ - + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * February 27, 2008 + * SOURCE +*/ int_f nh5lcreate_hard_c(hid_t_f *obj_loc_id, _fcd obj_name, size_t_f *obj_namelen, hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen, hid_t_f *lcpl_id, hid_t_f *lapl_id ) +/******/ { char *c_obj_name = NULL; char *c_link_name = NULL; @@ -272,10 +308,13 @@ nh5lcreate_hard_c(hid_t_f *obj_loc_id, _fcd obj_name, size_t_f *obj_namelen, return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5ldelete_by_idx_c - * Purpose: Calls h5ldelete_by_idx - * Inputs: +/****if* H5Lf/h5ldelete_by_idx_c + * NAME + * h5ldelete_by_idx_c + * PURPOSE + * Calls h5ldelete_by_idx + * INPUTS + * * loc_id - File or group identifier specifying location of subject group * group_name - Name of subject group * group_namelen - Name length @@ -293,15 +332,21 @@ nh5lcreate_hard_c(hid_t_f *obj_loc_id, _fcd obj_name, size_t_f *obj_namelen, * n - Link for which to retrieve information * lapl_id - Link access property list * - * Outputs: N/A - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * OUTPUTS + * N/A + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February 29, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5ldelete_by_idx_c (hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, int_f *index_field, int_f *order, hsize_t_f *n, hid_t_f *lapl_id) +/******/ { char *c_group_name = NULL; /* Buffer to hold C string */ H5_index_t c_index_field; @@ -329,22 +374,31 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5lexists_c - * Purpose: Calls H5Lexists - * Inputs: +/****if* H5Lf/h5lexists_c + * NAME + * h5lexists_c + * PURPOSE + * Calls H5Lexists + * INPUTS + * * loc_id - Identifier of the file or group to query. * name - Link name to check * lapl_id - Link access property list identifier. - * Outputs: + * OUTPUTS + * * link_exists_c - returns a positive value, for TRUE, or 0 (zero), for FALSE. - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February 29, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5lexists_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id, int_f *link_exists) +/******/ { char *c_name = NULL; /* Buffer to hold C string */ int_f ret_value = 0; /* Return value */ @@ -367,15 +421,19 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5lget_info_c - * Purpose: Call H5Lget_info - * Inputs: +/****if* H5Lf/h5lget_info_c + * NAME + * h5lget_info_c + * PURPOSE + * Call H5Lget_info + * INPUTS + * * link_loc_id - File or group identifier. * link_name - Name of the link for which information is being sought * link_namelen - Name length * lapl_id - Link access property list - * Outputs: + * OUTPUTS + * * * cset - indicates the character set used for link’s name. * corder - specifies the link’s creation order position. @@ -388,20 +446,25 @@ done: * address - If the link is a hard link, address specifies the file address that the link points to * val_size - If the link is a symbolic link, val_size will be the length of the link value * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5lget_info_c(hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen, int_f *cset, int_f *corder, int_f *corder_valid, int_f *link_type, haddr_t_f *address, size_t_f *val_size, hid_t_f *lapl_id) +/******/ { char *c_link_name = NULL; /* Buffer to hold C string */ - H5L_info_t link_buff; int_f ret_value = 0; /* Return value */ + H5L_info_t link_buff; /* * Convert FORTRAN name to C name @@ -431,10 +494,13 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5lget_info_by_idx_c - * Purpose: Call H5Lget_info_by_idx - * Inputs: +/****if* H5Lf/h5lget_info_by_idx_c + * NAME + * h5lget_info_by_idx_c + * PURPOSE + * Call H5Lget_info_by_idx + * INPUTS + * * loc_id - File or group identifier specifying location of subject group * group_name - Name of subject group *group_namelen - Name length @@ -442,43 +508,54 @@ done: * order - Order within field or index * n - Link for which to retrieve information * lapl_id - Link access property list - * Outputs: + * OUTPUTS + * * corder_valid - Indicates whether the the creation order data is valid for this attribute * corder - Is a positive integer containing the creation order of the attribute * cset - Indicates the character set used for the attribute’s name * data_size - indicates the size, in the number of characters, of the attribute * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5lget_info_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, int_f *index_field, int_f *order, hsize_t_f *n, int_f *link_type, int_f *corder_valid, int_f *corder, int_f *cset, haddr_t_f *address, size_t_f *val_size, hid_t_f *lapl_id) +/******/ { char *c_group_name = NULL; /* Buffer to hold C string */ - H5L_info_t link_buff; + H5_index_t c_index_field; + H5_iter_order_t c_order; int_f ret_value = 0; /* Return value */ + H5L_info_t link_buff; /* * Convert FORTRAN name to C name */ - if(NULL == (c_group_name = HD5f2cstring(group_name, (size_t)*group_namelen))) - HGOTO_DONE(FAIL) + if((c_group_name = HD5f2cstring(group_name, (size_t)*group_namelen)) == NULL) + HGOTO_DONE(FAIL); + c_index_field = (H5_index_t)*index_field; + c_order = (H5_iter_order_t)*order; /* * Call H5Linfo_by_idx function. */ - if(H5Lget_info_by_idx((hid_t)*loc_id, c_group_name, (H5_index_t)*index_field, (H5_iter_order_t)*order, (hsize_t)*n, + if(H5Lget_info_by_idx((hid_t)*loc_id, c_group_name, c_index_field, c_order, (hsize_t)*n, &link_buff, (hid_t)*lapl_id) < 0) - HGOTO_DONE(FAIL) + HGOTO_DONE(FAIL); /* Unpack the structure */ + *corder_valid = 0; - if(link_buff.corder_valid > 0) - *corder_valid = 1; + if(link_buff.corder_valid > 0) *corder_valid = 1; + *corder = (int_f)link_buff.corder; *cset = (int_f)link_buff.cset; *link_type = (int_f)link_buff.type; @@ -486,27 +563,33 @@ nh5lget_info_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, *val_size = (size_t_f)link_buff.u.val_size; done: - if(c_group_name) - HDfree(c_group_name); - return ret_value; } -/*---------------------------------------------------------------------------- - * Name: H5Lis_registered_c - * Purpose: Call H5Lis_registered - * Inputs: +/****if* H5Lf/H5Lis_registered_c + * NAME + * H5Lis_registered_c + * PURPOSE + * Call H5Lis_registered + * INPUTS + * * link_cls_id - User-defined link class identifier - * Outputs: NONE + * OUTPUTS + * NONE * - * Returns: Returns a positive value if the link class has been registered + * RETURNS + * Returns a positive value if the link class has been registered * and zero if it is unregistered. Otherwise returns a negative value - * Programmer: M.S. Breitenfeld + * AUTHOR + * M. Scot Breitenfeld * March 3, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * HISTORY + * N/A + * SOURCE +*/ int_f nh5lis_registered_c(int_f *link_cls_id) +/******/ { int_f ret_value; /* Return value */ @@ -518,28 +601,51 @@ nh5lis_registered_c(int_f *link_cls_id) return ret_value; } +/* { not sure what this is fix -scot- */ +/* int_f ret_value = 0; /\* Return value *\/ */ +/* H5L_type_t c_link_cls_id; /\* User-defined link class identifier *\/ */ +/* htri_t registered; /\* registration status *\/ */ + -/*---------------------------------------------------------------------------- - * Name: h5lmove_c - * Purpose: Call H5Lmove - * Inputs: +/* c_link_cls_id = (H5L_type_t)*link_cls_id; */ +/* /\* */ +/* * Call H5Lis_registered */ +/* *\/ */ +/* registered = H5Lis_registered(c_link_cls_id); */ + +/* ret_value = (int_f)registered; */ + +/* return ret_value; */ +/* } */ + + +/****if* H5Lf/h5lmove_c + * NAME + * h5lmove_c + * PURPOSE + * Call H5Lmove + * INPUTS + * * src_loc_id - Original file or group identifier. * src_name - Original link name. * src_namelen - name length * dest_loc_id - Destination file or group identifier. * dest_name - NEW link name. * dest_namelen - name length - * Outputs: + * OUTPUTS + * * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 3, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5lmove_c(hid_t_f *src_loc_id, _fcd src_name, size_t_f *src_namelen, hid_t_f *dest_loc_id, _fcd dest_name, size_t_f *dest_namelen, hid_t_f *lcpl_id, hid_t_f *lapl_id) - +/******/ { char *c_src_name = NULL; /* Buffer to hold C string */ char *c_dest_name = NULL; /* Buffer to hold C string */ @@ -569,10 +675,13 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5lget_name_by_idx_c - * Purpose: Call H5Lget_name_by_idx - * Inputs: +/****if* H5Lf/h5lget_name_by_idx_c + * NAME + * h5lget_name_by_idx_c + * PURPOSE + * Call H5Lget_name_by_idx + * INPUTS + * * loc_id - File or group identifier specifying location of subject group * group_name - Name of subject group * index_field - Index or field which determines the order @@ -580,18 +689,22 @@ done: * n - Link for which to retrieve information * size - Maximum number of characters of link value to be returned. * lapl_id - Link access property list - * Outputs: + * OUTPUTS + * * name - Buffer in which link value is returned * size - The size of the link name on success - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 10, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5lget_name_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, int_f *index_field, int_f *order, hsize_t_f *n, size_t_f *size, _fcd name, hid_t_f *lapl_id) +/******/ { char *c_group_name = NULL; /* Buffer to hold C string */ char *c_name = NULL; /* Buffer to hold C string */ @@ -631,34 +744,98 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: H5Lregistered_c - * Purpose: Call H5Lregistered - * Inputs: - * - * Inputs: - * version - Version number of this struct - * class_id - Link class identifier - * comment - Comment for debugging - * comment_len - Comment for debugging - * create_func - Callback during link creation - * create_func_len - length - * move_func - Callback after moving link - * move_func_len - length - * copy_func - Callback after copying link - * copy_func_len - length - * trav_func - The main traversal function - * trav_func_len - length - * del_func - Callback for link deletion - * del_func_len - length - * query_func - Callback for queries - * query_func_len - length - * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * February 3, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + +/* /\****if* H5Lf/h5lget_val_c */ +/* * NAME */ +/* * h5lget_val_c */ +/* * PURPOSE */ +/* * Call H5Lget_val */ +/* * INPUTS */ +/* * */ +/* * link_loc_id - File or group identifier. */ +/* * link_name - Name of the link for which valrmation is being sought */ +/* * link_namelen - Name length */ +/* * size - Maximum number of characters of link value to be returned. */ +/* * lapl_id - Link access property list */ +/* * OUTPUTS */ +/* * */ +/* * linkval_buff - The buffer to hold the returned link value. */ +/* * */ +/* * RETURNS */ +/* * 0 on success, -1 on failure */ +/* * AUTHOR */ +/* * M. Scot Breitenfeld */ +/* * March 3, 2008 */ +/* * HISTORY */ +/* * N/A */ +/* * SOURCE */ +/* *\/ */ +/* int_f */ +/* nh5lget_val_c (hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen, */ +/* size_t_f *size, _fcd linkval_buff, */ +/* hid_t_f *lapl_id) */ +/* { */ +/* char *c_link_name = NULL; /\* Buffer to hold C string *\/ */ +/* int_f ret_value = 0; /\* Return value *\/ */ +/* void *c_linkval_buff = NULL; */ + +/* /\* */ +/* * Convert FORTRAN name to C name */ +/* *\/ */ +/* if((c_link_name = HD5f2cstring(link_name, (size_t)*link_namelen)) == NULL) */ +/* HGOTO_DONE(FAIL); */ +/* /\* */ +/* * Call H5Lval function. */ +/* *\/ */ +/* if(H5Lget_val((hid_t)*link_loc_id, c_link_name, &linkval_buff, (size_t)*size, (hid_t)*lapl_id) < 0) */ +/* HGOTO_DONE(FAIL); */ +/* /\* */ +/* * Convert C name to FORTRAN */ +/* *\/ */ +/* HD5packFstring(c_buf, _fcdtocp(buf), c_bufsize-1); */ + + +/* done: */ +/* return ret_value; */ +/* } */ + + +/* /\****if* H5Lf/ */ +/* * NAME */ +/* * H5Lregistered_c */ +/* * PURPOSE */ +/* * Call H5Lregistered */ +/* * INPUTS */ +/* * */ +/* * */ +/* * INPUTS */ +/* * */ +/* * version - Version number of this struct */ +/* * class_id - Link class identifier */ +/* * comment - Comment for debugging */ +/* * comment_len - Comment for debugging */ +/* * create_func - Callback during link creation */ +/* * create_func_len - length */ +/* * move_func - Callback after moving link */ +/* * move_func_len - length */ +/* * copy_func - Callback after copying link */ +/* * copy_func_len - length */ +/* * trav_func - The main traversal function */ +/* * trav_func_len - length */ +/* * del_func - Callback for link deletion */ +/* * del_func_len - length */ +/* * query_func - Callback for queries */ +/* * query_func_len - length */ +/* * */ +/* * RETURNS */ +/* * 0 on success, -1 on failure */ +/* * AUTHOR */ +/* * M. Scot Breitenfeld */ +/* * February 3, 2008 */ +/* * HISTORY */ +/* * */ +/* * SOURCE */ +/* *\/ */ /* int_f */ @@ -681,7 +858,7 @@ done: /* H5L_class_t class_t; */ -/* int ret_value = 0; */ +/* int_f ret_value = 0; */ /* /\* */ /* * Convert FORTRAN name to C name */ @@ -734,27 +911,34 @@ done: /* return ret_value; */ /* } */ -/*---------------------------------------------------------------------------- - * Name: h5lget_val_c - * Purpose: Call H5Lget_val_c - * Inputs: +/****if* H5Lf/h5lget_val_c + * NAME + * h5lget_val_c + * PURPOSE + * Call H5Lget_val + * INPUTS + * * link_loc_id - File or group identifier. * link_name - Link whose value is to be returned. * link_name_len - length of link_name * size - Maximum number of characters of link value to be returned. * lapl_id - List access property list identifier - * Outputs: + * OUTPUTS + * * linkval_buff - The buffer to hold the returned link value. * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * April 11, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5lget_val_c(hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen, size_t_f *size, void *linkval_buff, hid_t_f *lapl_id) -{ +/******/ +{ char *c_link_name = NULL; /* Buffer to hold C string */ int_f ret_value = 0; /* Return value */ @@ -777,3 +961,112 @@ done: return ret_value; } +/****if* H5Lf/h5literate_c + * NAME + * h5literate_c + * PURPOSE + * Calls H5Literate + * INPUTS + * + * group_id - Identifier specifying subject group + * index_type - Type of index which determines the order + * order - Order within index + * idx - Iteration position at which to start + * op - Callback function passing data regarding the link to the calling application + * op_data - User-defined pointer to data required by the application for its processing of the link + * + * OUTPUTS + * + * idx - Position at which an interrupted iteration may be restarted + * + * RETURNS + * >0 on success, 0< on failure + * AUTHOR + * M. Scot Breitenfeld + * July 8, 2008 + * SOURCE +*/ +int_f +nh5literate_c(hid_t_f *group_id, int_f *index_type, int_f *order, hsize_t_f *idx, H5L_iterate_t op, void *op_data ) +/******/ +{ + int_f ret_value = -1; /* Return value */ + herr_t func_ret_value; /* H5Linterate return value */ + hsize_t idx_c = 0; + + idx_c = (hsize_t)*idx; + + /* + * Call H5Linterate + */ + + func_ret_value = H5Literate( (hid_t)*group_id, (H5_index_t)*index_type, (H5_iter_order_t)*order, &idx_c, op, op_data); + + ret_value = (int_f)func_ret_value; + *idx = (hsize_t_f)idx_c; + + return ret_value; +} + +/****if* H5Lf/h5literate_by_name_c + * NAME + * h5literate_by_name_c + * PURPOSE + * Call H5Literate_by_name + * INPUTS + * + * loc_id - Identifier specifying subject group + * name - Name of subject group + * namelen - Name length + * index_type - Type of index which determines the order + * order - Order within index + * idx - Iteration position at which to start + * op - Callback function passing data regarding the link to the calling application + * op_data - User-defined pointer to data required by the application for its processing of the link + * lapl_id - List access property list identifier + * + * OUTPUTS + * + * idx - Position at which an interrupted iteration may be restarted + * + * RETURNS + * >0 on success, 0< on failure + * AUTHOR + * M. Scot Breitenfeld + * Augest 18, 2008 + * SOURCE +*/ +int_f +nh5literate_by_name_c(hid_t_f *loc_id, _fcd name, size_t_f *namelen, int_f *index_type, int_f *order, hsize_t_f *idx, H5L_iterate_t op, void *op_data, hid_t_f *lapl_id) +/******/ +{ + int_f ret_value = -1; /* Return value */ + herr_t func_ret_value; /* H5Linterate return value */ + hsize_t idx_c = 0; + char *c_name = NULL; /* Buffer to hold C string */ + + /* + * Convert FORTRAN name to C name + */ + if((c_name = HD5f2cstring(name, (size_t)*namelen)) == NULL) + return ret_value=-1; + + idx_c = (hsize_t)*idx; + + /* + * Call H5Linterate + */ + + func_ret_value = H5Literate_by_name((hid_t)*loc_id, c_name,(H5_index_t)*index_type,(H5_iter_order_t)*order,&idx_c,op,op_data,(hid_t)*lapl_id); + + ret_value = (int_f)func_ret_value; + *idx = (hsize_t_f)idx_c; + + if(c_name) HDfree(c_name); + + return ret_value; +} + + + + diff --git a/fortran/src/H5Lff.f90 b/fortran/src/H5Lff.f90 index 8d30c20..8043d74 100644 --- a/fortran/src/H5Lff.f90 +++ b/fortran/src/H5Lff.f90 @@ -1,3 +1,14 @@ +!****h* ROBODoc/H5L +! +! NAME +! MODULE H5L +! +! PURPOSE +! This file contains Fortran interfaces for H5L functions. It includes +! all the functions that are independent on whether the Fortran 2003 functions +! are enabled or disabled. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,43 +24,48 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! NOTES +! *** IMPORTANT *** +! If you add a new H5L function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. ! -! This file contains Fortran90 interfaces for H5L functions. -! +!***** + MODULE H5L USE H5GLOBAL CONTAINS -!---------------------------------------------------------------------- -! Name: h5lcopy_f ! -! Purpose: Copies a link from one location to another. +!****s* H5L/h5lcopy_f +! +! NAME +! h5lcopy_f ! -! Inputs: -! src_loc_id - Location identifier of the source link -! src_name - Name of the link to be copied -! dest_loc_id - Location identifier specifying the destination of the copy -! dest_name - Name to be assigned to the NEW copy -! loc_id - Identifier of the file or group containing the object -! name - Name of the link to delete +! PURPOSE +! Copies a link from one location to another. ! -! Outputs: -! hdferr - error code: -! Success: 0 -! Failure: -1 -! Optional parameters: -! lcpl_id - Link creation property list identifier -! lapl_id - Link access property list identifier +! INPUTS +! src_loc_id - Location identifier of the source link +! src_name - Name of the link to be copied +! dest_loc_id - Location identifier specifying the destination of the copy +! dest_name - Name to be assigned to the NEW copy +! loc_id - Identifier of the file or group containing the object +! name - Name of the link to delete ! -! Programmer: M.S. Breitenfeld -! February 27, 2008 +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lcpl_id - Link creation property list identifier +! lapl_id - Link access property list identifier ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! February 27, 2008 ! -! Comment: -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5lcopy_f(src_loc_id, src_name, dest_loc_id, dest_name, hdferr, & lcpl_id, lapl_id) IMPLICIT NONE @@ -62,16 +78,13 @@ CONTAINS ! 0 on success and -1 on failure INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier - +!***** INTEGER(HID_T) :: lcpl_id_default INTEGER(HID_T) :: lapl_id_default INTEGER(SIZE_T) :: src_namelen INTEGER(SIZE_T) :: dest_namelen - -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5lcopy_c(src_loc_id, src_name, src_namelen, dest_loc_id, dest_name, dest_namelen, & lcpl_id_default, lapl_id_default) @@ -106,29 +119,29 @@ CONTAINS END SUBROUTINE h5lcopy_f -!---------------------------------------------------------------------- -! Name: h5ldelete_f ! -! Purpose: Removes a link from a group. +!****s* H5L/h5ldelete_f ! -! Inputs: -! loc_id - Identifier of the file or group containing the object -! name - Name of the link to delete +! NAME +! h5ldelete_f ! -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - Link access property list identifier +! PURPOSE +! Removes a link from a group. ! -! Programmer: M.S. Breitenfeld -! January, 2008 +! INPUTS +! loc_id - Identifier of the file or group containing the object +! name - Name of the link to delete ! -! Modifications: +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lapl_id - Link access property list identifier ! -! Comment: -!---------------------------------------------------------------------- +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 +! +! SOURCE SUBROUTINE h5ldelete_f(loc_id, name, hdferr, lapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier of the file or group containing the object @@ -136,12 +149,10 @@ CONTAINS INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier +!***** INTEGER(HID_T) :: lapl_id_default INTEGER(SIZE_T) :: namelen - -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5ldelete_c(loc_id, name, namelen, lapl_id_default) USE H5GLOBAL @@ -165,48 +176,46 @@ CONTAINS END SUBROUTINE h5ldelete_f -!---------------------------------------------------------------------- -! Name: H5Lcreate_soft_f ! -! Purpose: Creates a soft link to an object. +!****s* H5L/H5Lcreate_soft_f ! -! Inputs: -! target_path - Path to the target object, which is not required to exist. -! link_loc_id - The file or group identifier for the new link. -! link_name - The name of the new link. +! NAME +! H5Lcreate_soft_f ! -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lcpl_id - Link creation property list identifier. -! lapl_id - Link access property list identifier. +! PURPOSE +! Creates a soft link to an object. ! -! Programmer: M.S. Breitenfeld -! February 20, 2008 +! INPUTS +! target_path - Path to the target object, which is not required to exist. +! link_loc_id - The file or group identifier for the new link. +! link_name - The name of the new link. ! -! Modifications: +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lcpl_id - Link creation property list identifier. +! lapl_id - Link access property list identifier. ! -! Comment: -!---------------------------------------------------------------------- +! AUTHOR +! M. Scot Breitenfeld +! February 20, 2008 +! +! SOURCE SUBROUTINE h5lcreate_soft_f(target_path, link_loc_id, link_name, hdferr, lcpl_id, lapl_id) IMPLICIT NONE - CHARACTER(LEN=*), INTENT(IN) :: target_path ! Path to the target object, which is not required to exist. + CHARACTER(LEN=*), INTENT(IN) :: target_path ! Path to the target object, which is not required to exist. INTEGER(HID_T), INTENT(IN) :: link_loc_id ! The file or group identifier for the new link. - CHARACTER(LEN=*), INTENT(IN) :: link_name ! The name of the new link. - INTEGER, INTENT(OUT) :: hdferr ! Error code: - ! 0 on success and -1 on failure + CHARACTER(LEN=*), INTENT(IN) :: link_name ! The name of the new link. + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 on success and -1 on failure INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier. INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier. - +!***** INTEGER(HID_T) :: lcpl_id_default INTEGER(HID_T) :: lapl_id_default INTEGER(SIZE_T) :: target_path_len INTEGER(SIZE_T) :: link_name_len -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5lcreate_soft_c(target_path, target_path_len, & link_loc_id, & @@ -242,33 +251,33 @@ CONTAINS END SUBROUTINE h5lcreate_soft_f -!---------------------------------------------------------------------- -! Name: H5Lcreate_hard_f ! -! Purpose: Creates a hard link to an object. +!****s* H5L/H5Lcreate_hard_f ! -! Inputs: +! NAME +! H5Lcreate_hard_f ! -! obj_loc_id - The file or group identifier for the target object. -! obj_name - Name of the target object, which must already exist. -! link_loc_id - The file or group identifier for the new link. -! link_name - The name of the new link. +! PURPOSE +! Creates a hard link to an object. ! -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lcpl_id - Link creation property list identifier. -! lapl_id - Link access property list identifier. +! INPUTS ! -! Programmer: M.S. Breitenfeld -! February 27, 2008 +! obj_loc_id - The file or group identifier for the target object. +! obj_name - Name of the target object, which must already exist. +! link_loc_id - The file or group identifier for the new link. +! link_name - The name of the new link. ! -! Modifications: +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lcpl_id - Link creation property list identifier. +! lapl_id - Link access property list identifier. ! -! Comment: -!---------------------------------------------------------------------- +! AUTHOR +! M. Scot Breitenfeld +! February 27, 2008 +! +! SOURCE SUBROUTINE h5lcreate_hard_f(obj_loc_id, obj_name, link_loc_id, link_name, hdferr, lcpl_id, lapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: obj_loc_id ! The file or group identifier for the target object. @@ -281,15 +290,13 @@ CONTAINS INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier. INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier. - +!***** INTEGER(HID_T) :: lcpl_id_default INTEGER(HID_T) :: lapl_id_default INTEGER(SIZE_T) :: obj_namelen INTEGER(SIZE_T) :: link_namelen -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5lcreate_hard_c(obj_loc_id, obj_name, obj_namelen, & link_loc_id, link_name, link_namelen, lcpl_id_default, lapl_id_default) @@ -322,37 +329,36 @@ CONTAINS END SUBROUTINE h5lcreate_hard_f -!---------------------------------------------------------------------- -! Name: H5Lcreate_external_f ! -! Purpose: Creates a soft link to an object in a different file. +!****s* H5L/H5Lcreate_external_f ! -! Inputs: +! NAME +! H5Lcreate_external_f ! -! file_name - Name of the file containing the target object. Neither the file nor the target object is -! required to exist. May be the file the link is being created in. -! obj_name - Path within the target file to the target object. -! link_loc_id - The file or group identifier for the new link. -! link_name - The name of the new link. +! PURPOSE +! Creates a soft link to an object in a different file. ! -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lcpl_id - Link creation property list identifier. -! lapl_id - Link access property list identifier. +! INPUTS ! -! Programmer: M.S. Breitenfeld -! February 27, 2008 +! file_name - Name of the file containing the target object. Neither the file nor the target object is +! required to exist. May be the file the link is being created in. +! obj_name - Path within the target file to the target object. +! link_loc_id - The file or group identifier for the new link. +! link_name - The name of the new link. ! -! Modifications: +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lcpl_id - Link creation property list identifier. +! lapl_id - Link access property list identifier. ! -! Comment: -!---------------------------------------------------------------------- +! AUTHOR +! M. Scot Breitenfeld +! February 27, 2008 +! SOURCE SUBROUTINE h5lcreate_external_f(file_name, obj_name, link_loc_id, link_name, hdferr, lcpl_id, lapl_id) IMPLICIT NONE - CHARACTER(LEN=*), INTENT(IN) :: file_name ! Name of the file containing the target object. Neither + CHARACTER(LEN=*), INTENT(IN) :: file_name ! Name of the file containing the target object. Neither ! the file nor the target object is required to exist. ! May be the file the link is being created in. CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of the target object, which must already exist. @@ -364,7 +370,7 @@ CONTAINS INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier. INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier. - +!***** INTEGER(HID_T) :: lcpl_id_default INTEGER(HID_T) :: lapl_id_default @@ -372,8 +378,6 @@ CONTAINS INTEGER(SIZE_T) :: obj_namelen INTEGER(SIZE_T) :: link_namelen -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5lcreate_external_c(file_name, file_namelen, obj_name, obj_namelen, & link_loc_id, link_name, link_namelen, lcpl_id_default, lapl_id_default) @@ -408,42 +412,40 @@ CONTAINS END SUBROUTINE h5lcreate_external_f -!---------------------------------------------------------------------- -! Name: h5ldelete_by_idx_f -! -! Purpose: Removes the nth link in a group. -! Inputs: -! loc_id - File or group identifier specifying location of subject group -! group_name - Name of subject group -! index_field - Type of index; Possible values are: -! -! H5_INDEX_UNKNOWN_F = -1 - Unknown index type -! H5_INDEX_NAME_F - Index on names -! H5_INDEX_CRT_ORDER_F - Index on creation order -! H5_INDEX_N_F - Number of indices defined -! -! order - Order within field or index; Possible values are: -! -! H5_ITER_UNKNOWN_F - Unknown order -! H5_ITER_INC_F - Increasing order -! H5_ITER_DEC_F - Decreasing order -! H5_ITER_NATIVE_F - No particular order, whatever is fastest -! H5_ITER_N_F - Number of iteration orders -! -! n - Link for which to retrieve information -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - Link access property list ! -! Programmer: M.S. Breitenfeld -! February 29, 2008 -! -! Modifications: N/A -! -!---------------------------------------------------------------------- +!****s* H5L/h5ldelete_by_idx_f +! +! NAME +! h5ldelete_by_idx_f +! +! PURPOSE +! Removes the nth link in a group. +! INPUTS +! loc_id - File or group identifier specifying location of subject group +! group_name - Name of subject group +! index_field - Type of index; Possible values are: +! H5_INDEX_UNKNOWN_F = -1 - Unknown index type +! H5_INDEX_NAME_F - Index on names +! H5_INDEX_CRT_ORDER_F - Index on creation order +! H5_INDEX_N_F - Number of indices defined +! +! order - Order within field or index; Possible values are: +! H5_ITER_UNKNOWN_F - Unknown order +! H5_ITER_INC_F - Increasing order +! H5_ITER_DEC_F - Decreasing order +! H5_ITER_NATIVE_F - No particular order, whatever is fastest +! H5_ITER_N_F - Number of iteration orders +! +! n - Link for which to retrieve information +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lapl_id - Link access property list +! +! AUTHOR +! M. Scot Breitenfeld +! February 29, 2008 +! SOURCE SUBROUTINE h5ldelete_by_idx_f(loc_id, group_name, index_field, order, n, hdferr, lapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifer for object to which attribute is attached @@ -464,12 +466,10 @@ CONTAINS INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list - +!***** INTEGER(HID_T) :: lapl_id_default INTEGER(SIZE_T) :: group_namelen -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5ldelete_by_idx_c(loc_id, group_name, group_namelen, index_field, order, n, lapl_id_default) USE H5GLOBAL @@ -495,29 +495,30 @@ CONTAINS END SUBROUTINE h5ldelete_by_idx_f -!---------------------------------------------------------------------- -! Name: H5Lexists_f ! -! Purpose: Check if a link with a particular name exists in a group. +!****s* H5L/H5Lexists_f +! +! NAME +! H5Lexists_f ! -! Inputs: -! loc_id - Identifier of the file or group to query. -! name - Link name to check +! PURPOSE +! Check if a link with a particular name exists in a group. ! -! Outputs: -! link_exists - link exists status (.TRUE.,.FALSE.) -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - Link access property list identifier. +! INPUTS +! loc_id - Identifier of the file or group to query. +! name - Link name to check ! -! Programmer: M. S. Breitenfeld -! February 29, 2008 +! OUTPUTS +! link_exists - link exists status (.TRUE.,.FALSE.) +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lapl_id - Link access property list identifier. ! -! Modifications: N/A +! AUTHOR +! M. Scot Breitenfeld +! February 29, 2008 ! -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5lexists_f(loc_id, name, link_exists, hdferr, lapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier of the file or group to query. @@ -527,12 +528,11 @@ CONTAINS ! 0 on success and -1 on failure INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier. +!***** INTEGER :: link_exists_c INTEGER(HID_T) :: lapl_id_default INTEGER(SIZE_T) :: namelen -! -! MS FORTRAN needs explicit interface for C functions called here. -! + INTERFACE INTEGER FUNCTION h5lexists_c(loc_id, name, namelen, lapl_id_default, link_exists_c) USE H5GLOBAL @@ -561,46 +561,50 @@ CONTAINS END SUBROUTINE h5lexists_f -!---------------------------------------------------------------------- -! Name: h5lget_info_f -! -! Purpose: Returns information about a link. -! -! Inputs: -! link_loc_id - File or group identifier. -! link_name - Name of the link for which information is being sought -! -! Outputs: NOTE: In C these are contained in the structure H5L_info_t -! -! cset - indicates the character set used for link’s name. -! corder - specifies the link’s creation order position. -!f_corder_valid - indicates whether the value in corder is valid. -! link_type - specifies the link class: -! H5L_TYPE_HARD_F - Hard link -! H5L_TYPE_SOFT_F - Soft link -! H5L_TYPE_EXTERNAL_F - External link -! H5L_TYPE_ERROR_F - Error -! address - If the link is a hard link, address specifies the file address that the link points to -! val_size - If the link is a symbolic link, val_size will be the length of the link value, e.g., -! the length of the name of the pointed-to object with a null terminator. -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - Link access property list -! -! Programmer: M. S. Breitenfeld -! February 29, 2008 -! -! Modifications: +! +!****s* H5L/h5lget_info_f +! +! NAME +! h5lget_info_f +! +! PURPOSE +! Returns information about a link. +! +! INPUTS +! link_loc_id - File or group identifier. +! link_name - Name of the link for which information is being sought +! +! OUTPUTS +! NOTE: In C these are contained in the structure H5L_info_t +! +! cset - indicates the character set used for link’s name. +! corder - specifies the link’s creation order position. +! corder_valid - indicates whether the value in corder is valid. +! link_type - specifies the link class: +! H5L_TYPE_HARD_F - Hard link +! H5L_TYPE_SOFT_F - Soft link +! H5L_TYPE_EXTERNAL_F - External link +! H5L_TYPE_ERROR_ F - Error +! address - If the link is a hard link, address specifies the file address that the link points to +! val_size - If the link is a symbolic link, val_size will be the length of the link value, e.g., +! the length of the name of the pointed-to object with a null terminator. +! hdferr - Returns 0 if successful and -1 if fails +! +! OPTIONAL PARAMETERS +! lapl_id - Link access property list +! +! AUTHOR +! M. Scot Breitenfeld +! February 29, 2008 +! +! HISTORY ! Changed the link_type names to match those in C (bug 1720) from, ! H5L_LINK_HARD_F, H5L_LINK_SOFT_F,H5L_LINK_EXTERNAL_F,H5L_LINK_ERROR_F ! to ! H5L_TYPE_HARD_F, H5L_TYPE_SOFT_F,H5L_TYPE_EXTERNAL_F,H5L_TYPE_ERROR_F ! MSB January 8, 2010. ! -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5lget_info_f(link_loc_id, link_name, & cset, corder, f_corder_valid, link_type, address, val_size, & hdferr, lapl_id) @@ -609,7 +613,7 @@ CONTAINS INTEGER(HID_T), INTENT(IN) :: link_loc_id ! File or group identifier. CHARACTER(LEN=*), INTENT(IN) :: link_name ! Name of the link for which information is being sought -! Outputs: NOTE: In C these are contained in the structure H5L_info_t +! OUTPUTS NOTE: In C these are contained in the structure H5L_info_t INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the link’s name. INTEGER, INTENT(OUT) :: corder ! Specifies the link’s creation order position. LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the value in corder is valid. @@ -618,19 +622,17 @@ CONTAINS ! H5L_TYPE_SOFT_F - Soft link ! H5L_TYPE_EXTERNAL_F - External link ! H5L_TYPE_ERROR _F - Error - INTEGER(HADDR_T), INTENT(OUT) :: address ! If the link is a hard link, address specifies the file address that the link points to - INTEGER(SIZE_T), INTENT(OUT) :: val_size ! If the link is a symbolic link, val_size will be the length of the link value, e.g., - ! the length of the name of the pointed-to object with a null terminator. + INTEGER(HADDR_T), INTENT(OUT) :: address ! If the link is a hard link, address specifies the file address that the link points to + INTEGER(SIZE_T), INTENT(OUT) :: val_size ! If the link is a symbolic link, val_size will be the length of the link value, e.g., + ! the length of the name of the pointed-to object with a null terminator. INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list - +!***** INTEGER(SIZE_T) :: link_namelen INTEGER(HID_T) :: lapl_id_default INTEGER :: corder_valid -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5lget_info_c(link_loc_id, link_name, link_namelen, & cset, corder, corder_valid, link_type, address, val_size, & @@ -668,46 +670,51 @@ CONTAINS END SUBROUTINE h5lget_info_f -!---------------------------------------------------------------------- -! Name: h5lget_info_by_idx_f -! -! Purpose: Retrieves metadata for a link in a group, according to the order within a field or index. -! -! Inputs: -! loc_id - File or group identifier specifying location of subject group -! group_name - Name of subject group -! index_field - Index or field which determines the order -! order - Order within field or index -! n - Link for which to retrieve information -! -! Outputs: NOTE: In C these are defined as a structure: H5L_info_t -! corder_valid - indicates whether the creation order data is valid for this attribute -! corder - is a positive integer containing the creation order of the attribute -! cset - indicates the character set used for the attribute’s name -! address - If the link is a hard link, address specifies the file address that the link points to -! val_size - If the link is a symbolic link, val_size will be the length of the link value, e.g., -! the length of the name of the pointed-to object with a null terminator. -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - Link access property list -! -! Programmer: M.S. Breitenfeld -! February 29, 2008 -! -! Modifications: +! +!****s* H5L/h5lget_info_by_idx_f +! +! NAME +! h5lget_info_by_idx_f +! +! PURPOSE +! Retrieves metadata for a link in a group, according to the order within a field or index. +! +! INPUTS +! loc_id - File or group identifier specifying location of subject group +! group_name - Name of subject group +! index_field - Index or field which determines the order +! order - Order within field or index +! n - Link for which to retrieve information +! +! OUTPUTS +! NOTE: In C these are defined as a structure: H5L_info_t +! corder_valid - Indicates whether the creation order data is valid for this attribute +! corder - Is a positive integer containing the creation order of the attribute +! cset - Indicates the character set used for the attribute’s name +! address - If the link is a hard link, address specifies the file address that the link points to +! val_size - If the link is a symbolic link, val_size will be the length of the link value, e.g., +! the length of the name of the pointed-to object with a null terminator. +! hdferr - Returns 0 if successful and -1 if fails +! +! OPTIONAL PARAMETERS +! lapl_id - Link access property list +! +! AUTHOR +! M. Scot Breitenfeld +! February 29, 2008 +! +! HISTORY ! Changed the link_type names to match those in C (bug 1720) from, ! H5L_LINK_HARD_F, H5L_LINK_SOFT_F,H5L_LINK_EXTERNAL_F,H5L_LINK_ERROR_F ! to ! H5L_TYPE_HARD_F, H5L_TYPE_SOFT_F,H5L_TYPE_EXTERNAL_F,H5L_TYPE_ERROR_F -! MSB January 8, 2010. +! MSB January 8, 2010. ! -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5lget_info_by_idx_f(loc_id, group_name, index_field, order, n, & link_type, f_corder_valid, corder, cset, address, val_size, hdferr, lapl_id) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier specifying location of subject group + INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier specifying location of subject group CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of subject group INTEGER, INTENT(IN) :: index_field ! Index or field which determines the order ! H5_INDEX_UNKNOWN_F - Unknown index type @@ -725,15 +732,16 @@ CONTAINS ! H5L_TYPE_SOFT_F - Soft link ! H5L_TYPE_EXTERNAL_F - External link ! H5L_TYPE_ERROR _F - Error - LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the creation order data is valid for this attribute - INTEGER, INTENT(OUT) :: corder ! Is a positive integer containing the creation order of the attribute - INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the attribute’s name + LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the creation order data is valid for this attribute + INTEGER, INTENT(OUT) :: corder ! Is a positive integer containing the creation order of the attribute + INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the attribute’s name INTEGER(HADDR_T), INTENT(OUT) :: address ! If the link is a hard link, address specifies the file address that the link points to - INTEGER(SIZE_T), INTENT(OUT) :: val_size ! If the link is a symbolic link, val_size will be the length of the link value, e.g., - ! the length of the name of the pointed-to object with a null terminator. + INTEGER(SIZE_T), INTENT(OUT) :: val_size ! If the link is a symbolic link, val_size will be the length of the link value, e.g., + ! the length of the name of the pointed-to object with a null terminator. INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list +!***** INTEGER :: corder_valid INTEGER(SIZE_T) :: group_namelen INTEGER(HID_T) :: lapl_id_default @@ -755,7 +763,7 @@ CONTAINS INTEGER, INTENT(IN) :: order INTEGER(HSIZE_T), INTENT(IN) :: n INTEGER, INTENT(OUT) :: link_type - INTEGER :: corder_valid + INTEGER :: corder_valid INTEGER, INTENT(OUT) :: corder INTEGER, INTENT(OUT) :: cset INTEGER(HADDR_T), INTENT(OUT) :: address @@ -777,29 +785,30 @@ CONTAINS END SUBROUTINE h5lget_info_by_idx_f -!---------------------------------------------------------------------- -! Name: h5lis_registered_f ! -! Purpose: Determines whether a class of user-defined links is registered. +!****s* H5L/h5lis_registered_f ! -! Inputs: -! link_cls_id - User-defined link class identifier +! NAME +! h5lis_registered_f ! -! Outputs: -! registered - .TRUE. - if the link class has been registered -! .FALSE. - if it is unregistered -! hdferr - Error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! None +! PURPOSE +! Determines whether a class of user-defined links is registered. ! -! Programmer: M.S. Breitenfeld -! February 29, 2008 +! INPUTS +! link_cls_id - User-defined link class identifier ! -! Modifications: N/A +! OUTPUTS +! registered - .TRUE. - if the link class has been registered +! .FALSE. - if it is unregistered +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -!---------------------------------------------------------------------- +! AUTHOR +! M. Scot Breitenfeld +! February 29, 2008 +! +! SOURCE SUBROUTINE h5lis_registered_f(link_cls_id, registered, hdferr) IMPLICIT NONE INTEGER, INTENT(IN) :: link_cls_id ! User-defined link class identifier @@ -807,9 +816,7 @@ CONTAINS ! .FALSE. - if it is unregistered INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure -! -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5lis_registered_c(link_cls_id) USE H5GLOBAL @@ -830,31 +837,34 @@ CONTAINS END SUBROUTINE h5lis_registered_f -!---------------------------------------------------------------------- -! Name: h5lmove_f ! -! Purpose: Renames a link within an HDF5 file. +!****s* H5L/h5lmove_f +! +! NAME +! h5lmove_f +! +! PURPOSE +! Renames a link within an HDF5 file. ! -! Inputs: -! src_loc_id - Original file or group identifier. -! src_name - Original link name. -! dest_loc_id - Destination file or group identifier. -! dest_name - NEW link name. +! INPUTS +! src_loc_id - Original file or group identifier. +! src_name - Original link name. +! dest_loc_id - Destination file or group identifier. +! dest_name - NEW link name. ! -! Outputs: -! hdferr - Error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lcpl_id - Link creation property list identifier to be associated WITH the NEW link. -! lapl_id - Link access property list identifier to be associated WITH the NEW link. +! OUTPUTS +! hdferr - Error code: +! 0 on success and -1 on failure ! -! Programmer: M.S. Breitenfeld -! March 3, 2008 +! OPTIONAL PARAMETERS +! lcpl_id - Link creation property list identifier to be associated WITH the NEW link. +! lapl_id - Link access property list identifier to be associated WITH the NEW link. ! -! Modifications: N/A +! AUTHOR +! M. Scot Breitenfeld +! March 3, 2008 ! -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5lmove_f(src_loc_id, src_name, dest_loc_id, dest_name, hdferr, lcpl_id, lapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: src_loc_id ! Original file or group identifier. @@ -867,16 +877,13 @@ CONTAINS ! to be associated WITH the NEW link. INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier ! to be associated WITH the NEW link. - +!***** INTEGER(SIZE_T) :: src_namelen INTEGER(SIZE_T) :: dest_namelen INTEGER(HID_T) :: lcpl_id_default INTEGER(HID_T) :: lapl_id_default -! -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5lmove_c(src_loc_id, src_name, src_namelen, dest_loc_id, & dest_name, dest_namelen, lcpl_id_default, lapl_id_default) @@ -886,6 +893,7 @@ CONTAINS !DEC$ENDIF !DEC$ATTRIBUTES reference :: src_name, dest_name INTEGER(HID_T), INTENT(IN) :: src_loc_id + CHARACTER(LEN=*), INTENT(IN) :: src_name INTEGER(SIZE_T) :: src_namelen INTEGER(HID_T), INTENT(IN) :: dest_loc_id @@ -911,34 +919,35 @@ CONTAINS END SUBROUTINE h5lmove_f -!---------------------------------------------------------------------- -! Name: h5lget_name_by_idx_f ! -! Purpose: Retrieves name of the nth link in a group, according to the order within a specified field or index. +!****s* H5L/h5lget_name_by_idx_f +! +! NAME +! h5lget_name_by_idx_f ! -! Inputs: -! loc_id - File or group identifier specifying location of subject group -! group_name - Name of subject group -! index_field - Index or field which determines the order -! order - Order within field or index -! n - Link for which to retrieve information +! PURPOSE +! Retrieves name of the nth link in a group, according to the order within a specified field or index. ! -! Outputs: -! name - Buffer in which link value is returned -! hdferr - error code -! Success: 0 -! Failure: -1 +! INPUTS +! loc_id - File or group identifier specifying location of subject group +! group_name - Name of subject group +! index_field - Index or field which determines the order +! order - Order within field or index +! n - Link for which to retrieve information ! -! Optional parameters: -! lapl_id - List access property list identifier. -! size - Maximum number of characters of link value to be returned. +! OUTPUTS +! name - Buffer in which link value is returned +! hdferr - Returns 0 if successful and -1 if fails ! -! Programmer: M. S. Breitenfeld -! March 10, 2008 +! OPTIONAL PARAMETERS +! lapl_id - List access property list identifier. +! size - Maximum number of characters of link value to be returned. ! -! Modifications: N/A +! AUTHOR +! M. Scot Breitenfeld +! March 10, 2008 ! -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5lget_name_by_idx_f(loc_id, group_name, index_field, order, n, & name, hdferr, size, lapl_id) IMPLICIT NONE @@ -958,16 +967,13 @@ CONTAINS CHARACTER(LEN=*), INTENT(OUT) :: name ! Buffer in which link value is returned INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure - +!***** INTEGER(SIZE_T) :: group_namelen INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list INTEGER(HID_T) :: lapl_id_default INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size ! Indicates the size, in the number of characters, of the link INTEGER(SIZE_T) :: size_default - -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5lget_name_by_idx_c(loc_id, group_name, group_namelen, index_field, order, n, & size_default, name, lapl_id_default) @@ -977,6 +983,7 @@ CONTAINS !DEC$ENDIF !DEC$ATTRIBUTES reference :: group_name, name INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: group_name INTEGER(SIZE_T) :: group_namelen INTEGER, INTENT(IN) :: index_field @@ -1004,24 +1011,27 @@ CONTAINS END SUBROUTINE h5lget_name_by_idx_f -! HAS PROBLEM WITH void pointer in C - -!!$!---------------------------------------------------------------------- -!!$! Name: h5lget_val_by_idx_f +! HAS PROBLEM WITH void pointer in C !!$! -!!$! Purpose: Returns the link value of a link, according to the order of +!!$!****s* H5L/ +!!$! +!!$! NAME +!!$! h5lget_val_by_idx_f +!!$! +!!$! PURPOSE +!!$! Returns the link value of a link, according to the order of !!$! an index. For symbolic links, this is the path to which the !!$! link points, including the null terminator. For user-defined !!$! links, it is the link buffer. -!!$! Inputs: +!!$! INPUTS !!$! loc_id - File or group identifier specifying location of subject group !!$! group_name - Name of subject group !!$! index_field - Index or field which determines the order !!$! order - Order within field or index !!$! n - Link for which to retrieve information -!!$! size - Maximum number of characters of link value to be returned. +!!$! size - Maximum number of characters of link value to be returned. !!$! -!!$! Outputs: NOTE: In C these are defined as a structure: H5L_info_t +!!$! OUTPUTS NOTE: In C these are defined as a structure: H5L_info_t !!$! corder_valid - indicates whether the creation order data is valid for this attribute !!$! corder - is a positive integer containing the creation order of the attribute !!$! cset - indicates the character set used for the attribute’s name @@ -1029,15 +1039,17 @@ CONTAINS !!$! hdferr - error code !!$! Success: 0 !!$! Failure: -1 -!!$! Optional parameters: +!!$! OPTIONAL PARAMETERS !!$! lapl_id - List access property list identifier. !!$! -!!$! Programmer: M. S. Breitenfeld +!!$! AUTHOR +!!$! M. Scot Breitenfeld !!$! March 3, 2008 !!$! -!!$! Modifications: N/A +!!$! HISTORY N/A !!$! -!!$!---------------------------------------------------------------------- +!!$! +!!$! SOURCE !!$ SUBROUTINE h5lget_val_by_idx_f(loc_id, group_name, index_field, order, n, & !!$ f_corder_valid, corder, cset, data_size, hdferr, lapl_id) !!$ IMPLICIT NONE @@ -1065,8 +1077,6 @@ CONTAINS !!$ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list !!$ INTEGER(HID_T) :: lapl_id_default !!$ -!!$! MS FORTRAN needs explicit interface for C functions called here. -!!$! !!$ INTERFACE !!$ INTEGER FUNCTION h5lget_val_by_idx_c(loc_id, group_name, group_namelen, index_field, order, n, & !!$ corder_valid, corder, cset, data_size, lapl_id_default) @@ -1101,33 +1111,32 @@ CONTAINS !!$ !!$ END SUBROUTINE h5lget_val_by_idx_f - - -!---------------------------------------------------------------------- -! Name: h5lget_val_f -! -! Purpose: Returns the value of a symbolic link. -! -! Inputs: -! link_loc_id - File or group identifier. -! link_name - Link whose value is to be returned. -! size - Maximum number of characters of link value to be returned. -! -! Outputs: -! linkval_buff - The buffer to hold the returned link value. -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - List access property list identifier. -! -! Programmer: M. S. Breitenfeld -! March 3, 2008 -! -! Modifications: N/A -! -!---------------------------------------------------------------------- - +!!$! +!!$!****s* H5L/h5lget_val_f +!!$! +!!$! NAME +!!$! h5lget_val_f +!!$! +!!$! PURPOSE +!!$! Returns the value of a symbolic link. +!!$! +!!$! INPUTS +!!$! link_loc_id - File or group identifier. +!!$! link_name - Link whose value is to be returned. +!!$! size - Maximum number of characters of link value to be returned. +!!$! +!!$! OUTPUTS +!!$! linkval_buff - The buffer to hold the returned link value. +!!$! hdferr - error code +!!$! Success: 0 +!!$! Failure: -1 +!!$! OPTIONAL PARAMETERS +!!$! lapl_id - List access property list identifier. +!!$! +!!$! AUTHOR +!!$! M. Scot Breitenfeld +!!$! March 3, 2008 +!!$! SOURCE !!$ SUBROUTINE h5lget_val_f(link_loc_id, link_name, size, linkval_buff, & !!$ hdferr, lapl_id) !!$ IMPLICIT NONE @@ -1179,37 +1188,41 @@ CONTAINS !!$ !!$ END SUBROUTINE h5lget_val_f - - -!---------------------------------------------------------------------- -! Name: H5Lregistered_f -! -! Purpose: Registers user-defined link class or changes behavior of existing class. -! -! Inputs: NOTE: In C the following represents struct H5L_class_t: -! version - Version number of this struct -! class_id - Link class identifier -! comment - Comment for debugging -! create_func - Callback during link creation -! move_func - Callback after moving link -! copy_func - Callback after copying link -! trav_func - The main traversal function -! del_func - Callback for link deletion -! query_func - Callback for queries -! -! Outputs: -! hdferr - Error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! None -! -! Programmer: M.S. Breitenfeld -! February 29, 2008 -! -! Modifications: N/A -! -!---------------------------------------------------------------------- +!!$! +!!$!****s* H5L/H5Lregistered_f +!!$! +!!$! NAME +!!$! H5Lregistered_f +!!$! +!!$! PURPOSE +!!$! Registers user-defined link class or changes behavior of existing class. +!!$! +!!$! INPUTS NOTE: In C the following represents struct H5L_class_t: +!!$! version - Version number of this struct +!!$! class_id - Link class identifier +!!$! comment - Comment for debugging +!!$! create_func - Callback during link creation +!!$! move_func - Callback after moving link +!!$! copy_func - Callback after copying link +!!$! trav_func - The main traversal function +!!$! del_func - Callback for link deletion +!!$! query_func - Callback for queries +!!$! +!!$! OUTPUTS +!!$! hdferr - Error code +!!$! Success: 0 +!!$! Failure: -1 +!!$! OPTIONAL PARAMETERS +!!$! None +!!$! +!!$! AUTHOR +!!$! M. Scot Breitenfeld +!!$! February 29, 2008 +!!$! +!!$! HISTORY N/A +!!$! +!!$! +!!$! SOURCE !!$ SUBROUTINE H5Lregistered_f(version, class_id, comment, create_func, & !!$ move_func, copy_func, trav_func, del_func, query_func, hdferr) !!$ IMPLICIT NONE @@ -1232,9 +1245,6 @@ CONTAINS !!$ INTEGER :: del_func_len !!$ INTEGER :: query_func_len !!$ -!!$! -!!$! MS FORTRAN needs explicit interface for C functions called here. -!!$! !!$ INTERFACE !!$ INTEGER FUNCTION H5Lregistered_c(version, class_id, comment, & !!$ create_func, create_func_len, & diff --git a/fortran/src/H5Lff_F03.f90 b/fortran/src/H5Lff_F03.f90 new file mode 100644 index 0000000..360dc93 --- /dev/null +++ b/fortran/src/H5Lff_F03.f90 @@ -0,0 +1,225 @@ +!****h* ROBODoc/H5L (F03) +! +! NAME +! H5L_PROVISIONAL +! +! FILE +! src/fortran/src/H5Lff_F03.f90 +! +! PURPOSE +! +! This file contains Fortran 90 and Fortran 2003 interfaces for H5L functions. +! It contains the same functions as H5Lff_DEPRECIATE.f90 but includes the +! Fortran 2003 functions and the interface listings. This file will be compiled +! instead of H5Lff_DEPRECIATE.f90 if Fortran 2003 functions are enabled. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! *** IMPORTANT *** +! If you add a new H5A function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** + +MODULE H5L_PROVISIONAL + + USE H5GLOBAL + +CONTAINS + +!****s* H5L (F03)/h5literate_f +! +! NAME +! h5literate_f +! +! PURPOSE +! Iterates through links in a group. +! +! INPUTS +! group_id - Identifier specifying subject group +! index_type - Type of index which determines the order +! order - Order within index +! idx - Iteration position at which to start +! op - Callback function passing data regarding the link to the calling application +! op_data - User-defined pointer to data required by the application for its processing of the link +! +! OUTPUTS +! idx - Position at which an interrupted iteration may be restarted +! hdferr - Error code: +! Success: 0 +! Failure: -1 +! AUTHOR +! M. Scot Breitenfeld +! July 8, 2008 +! +! SOURCE + SUBROUTINE h5literate_f(group_id, index_type, order, idx, op, op_data, return_value, hdferr) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: group_id ! Identifier specifying subject group + INTEGER, INTENT(IN) :: index_type ! Type of index which determines the order: + ! H5_INDEX_NAME_F - Alpha-numeric index on name + ! H5_INDEX_CRT_ORDER_F - Index on creation order + INTEGER, INTENT(IN) :: order ! Order within index: + ! H5_ITER_INC_F - Increasing order + ! H5_ITER_DEC_F - Decreasing order + ! H5_ITER_NATIVE_F - Fastest available order + INTEGER(HSIZE_T), INTENT(INOUT) :: idx ! IN : Iteration position at which to start + ! OUT: Position at which an interrupted iteration may be restarted + + TYPE(C_FUNPTR):: op ! Callback function passing data regarding the link to the calling application + TYPE(C_PTR) :: op_data ! User-defined pointer to data required by the application for its processing of the link + + INTEGER, INTENT(OUT) :: return_value ! Success: The return value of the first operator that + ! returns non-zero, or zero if all members were + ! processed with no operator returning non-zero. + + ! Failure: Negative if something goes wrong within the + ! library, or the negative value returned by one + ! of the operators. + + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 on success and -1 on failure +!***** + INTERFACE + INTEGER FUNCTION h5literate_c(group_id, index_type, order, idx, op, op_data) + USE ISO_C_BINDING + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5LITERATE_C'::h5literate_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: group_id + INTEGER, INTENT(IN) :: index_type + INTEGER, INTENT(IN) :: order + INTEGER(HSIZE_T), INTENT(INOUT) :: idx + TYPE(C_FUNPTR), VALUE :: op + TYPE(C_PTR), VALUE :: op_data + END FUNCTION h5literate_c + END INTERFACE + + return_value = h5literate_c(group_id, index_type, order, idx, op, op_data) + + IF(return_value.GE.0)THEN + hdferr = 0 + ELSE + hdferr = -1 + END IF + + END SUBROUTINE h5literate_f + +!****s* H5L (F03)/h5literate_by_name_f +! +! NAME +! h5literate_by_name_f +! +! PURPOSE +! Iterates through links in a group. +! +! INPUTS +! loc_id - File or group identifier specifying location of subject group +! group_name - Name of subject group +! index_type - Type of index which determines the order +! order - Order within index +! idx - Iteration position at which to start +! op - Callback function passing data regarding the link to the calling application +! op_data - User-defined pointer to data required by the application for its processing of the link +! +! OUTPUTS +! idx - Position at which an interrupted iteration may be restarted +! hdferr - Error code: +! Success: 0 +! Failure: -1 +! OPTIONAL PARAMETERS +! lapl_id - Link access property list +! +! AUTHOR +! M. Scot Breitenfeld +! Augest 18, 2008 +! +! SOURCE + SUBROUTINE h5literate_by_name_f(loc_id, group_name, index_type, order, idx, op, op_data, return_value, hdferr, lapl_id) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier specifying subject group + CHARACTER(LEN=*) :: group_name ! Name of subject group + INTEGER, INTENT(IN) :: index_type ! Type of index which determines the order: + ! H5_INDEX_NAME_F - Alpha-numeric index on name + ! H5_INDEX_CRT_ORDER_F - Index on creation order + INTEGER, INTENT(IN) :: order ! Order within index: + ! H5_ITER_INC_F - Increasing order + ! H5_ITER_DEC_F - Decreasing order + ! H5_ITER_NATIVE_F - Fastest available order + INTEGER(HSIZE_T), INTENT(INOUT) :: idx ! IN : Iteration position at which to start + ! OUT: Position at which an interrupted iteration may be restarted + + TYPE(C_FUNPTR):: op ! Callback function passing data regarding the link to the calling application + TYPE(C_PTR) :: op_data ! User-defined pointer to data required by the application for its processing of the link + + INTEGER, INTENT(OUT) :: return_value ! Success: The return value of the first operator that + ! returns non-zero, or zero if all members were + ! processed with no operator returning non-zero. + + ! Failure: Negative if something goes wrong within the + ! library, or the negative value returned by one + ! of the operators. + + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 on success and -1 on failure + + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list +!***** + INTEGER(HID_T) :: lapl_id_default + INTEGER(SIZE_T) :: namelen + + INTERFACE + INTEGER FUNCTION h5literate_by_name_c(loc_id, name, namelen, index_type, order, idx, op, op_data, lapl_id_default) + USE ISO_C_BINDING + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5LITERATE_BY_NAME_C'::h5literate_by_name_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*) :: name + INTEGER(SIZE_T) :: namelen + INTEGER, INTENT(IN) :: index_type + INTEGER, INTENT(IN) :: order + INTEGER(HSIZE_T), INTENT(INOUT) :: idx + TYPE(C_FUNPTR), VALUE :: op + TYPE(C_PTR), VALUE :: op_data + INTEGER(HID_T) :: lapl_id_default + END FUNCTION +! h5literate_by_name_c + END INTERFACE + + namelen = LEN(group_name) + + lapl_id_default = H5P_DEFAULT_F + IF(PRESENT(lapl_id)) lapl_id_default = lapl_id + + return_value = h5literate_by_name_c(loc_id, group_name, namelen, index_type, order, idx, op, op_data,lapl_id_default) + + IF(return_value.GE.0)THEN + hdferr = 0 + ELSE + hdferr = -1 + END IF + + END SUBROUTINE h5literate_by_name_f + +END MODULE H5L_PROVISIONAL diff --git a/fortran/src/H5Lff_F90.f90 b/fortran/src/H5Lff_F90.f90 new file mode 100644 index 0000000..c802af7 --- /dev/null +++ b/fortran/src/H5Lff_F90.f90 @@ -0,0 +1,39 @@ +!****h* ROBODoc/H5L (F90) +! +! NAME +! MODULE H5L_PROVISIONAL +! +! PURPOSE +! This file contains Fortran 90 interfaces for H5L functions. It contains +! the same functions as H5Lff_F03.f90 but excludes the Fortran 2003 functions +! and the interface listings. This file will be compiled instead of H5Lff_F03.f90 +! if Fortran 2003 functions are not enabled. +! +! NOTE +! Currently contains no functions. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! *** IMPORTANT *** +! If you add a new H5D function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +!***** + +MODULE H5L_PROVISIONAL + +END MODULE H5L_PROVISIONAL diff --git a/fortran/src/H5Of.c b/fortran/src/H5Of.c index 56cbfeb..a23f2a7 100644 --- a/fortran/src/H5Of.c +++ b/fortran/src/H5Of.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5Of/H5Of + * PURPOSE + * This file contains C stubs for H5O Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,32 +16,37 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for H5O Fortran APIs */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" #include "H5Eprivate.h" -/*---------------------------------------------------------------------------- - * Name: h5olink_c - * Purpose: Calls H5Olink - * Inputs: +/****if* H5Of/h5olink_c + * NAME + * h5olink_c + * PURPOSE + * Calls H5Olink + * INPUTS * object_id - Object to be linked. * new_loc_id - File or group identifier specifying location at which object is to be linked. * name - Name of link to be created, relative to new_loc_id. * namelen - Length of buffer for link to be created. * lcpl_id - Link creation property list identifier. * lapl_id - Link access property list identifier. - * Outputs: - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * April 21, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * April 21, 2008 + * SOURCE +*/ int_f nh5olink_c (hid_t_f *object_id, hid_t_f *new_loc_id, _fcd name, size_t_f *namelen, hid_t_f *lcpl_id, hid_t_f *lapl_id) +/******/ { char *c_name = NULL; /* Buffer to hold C string */ int_f ret_value = 0; /* Return value */ @@ -60,21 +70,28 @@ nh5olink_c (hid_t_f *object_id, hid_t_f *new_loc_id, _fcd name, size_t_f *namele return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5oopen_c - * Purpose: Calls H5Oopen - * Inputs: loc_id - File or group identifier - * name - Attribute access property list - * namelen - Size of name - * lapl_id - Link access property list - * Outputs: obj_id - Dataset identifier - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * April 18, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5Of/h5oopen_c + * NAME + * h5oopen_c + * PURPOSE + * Calls H5Oopen + * INPUTS + * loc_id - File or group identifier + * name - Attribute access property list + * namelen - Size of name + * lapl_id - Link access property list + * OUTPUTS + * obj_id - Dataset identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * April 18, 2008 + * SOURCE +*/ int_f nh5oopen_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id, hid_t_f *obj_id) +/******/ { char *c_name = NULL; /* Buffer to hold C string */ int_f ret_value = 0; /* Return value */ @@ -96,20 +113,95 @@ nh5oopen_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id, hid HDfree(c_name); return ret_value; } +/****if* H5Of/h5oclose_c + * NAME + * h5oclose_c + * PURPOSE + * Call H5Oclose + * INPUTS + * object_id - Object identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * December 17, 2008 + * SOURCE +*/ +int_f +nh5oclose_c ( hid_t_f *object_id ) +/******/ +{ + int_f ret_value=0; /* Return value */ + + if (H5Oclose((hid_t)*object_id) < 0) + HGOTO_DONE(FAIL); + + done: + return ret_value; +} + +/****if* H5Of/h5ovisit_c + * NAME + * h5ovisit_c + * PURPOSE + * Calls H5Ovisit + * INPUTS + * object_id - Identifier specifying subject group + * index_type - Type of index which determines the order + * order - Order within index + * idx - Iteration position at which to start + * op - Callback function passing data regarding the link to the calling application + * op_data - User-defined pointer to data required by the application for its processing of the link + * + * OUTPUTS + * idx - Position at which an interrupted iteration may be restarted + * + * RETURNS + * >0 on success, 0< on failure + * AUTHOR + * M. Scot Breitenfeld + * November 19, 2008 + * SOURCE +*/ +int_f +nh5ovisit_c(hid_t_f *group_id, int_f *index_type, int_f *order, H5O_iterate_t op, void *op_data ) +/******/ +{ + int_f ret_value = -1; /* Return value */ + herr_t func_ret_value; /* H5Linterate return value */ + + /* + * Call H5Ovisit + */ + func_ret_value = H5Ovisit( (hid_t)*group_id, (H5_index_t)*index_type, (H5_iter_order_t)*order, op, op_data); + + ret_value = (int_f)func_ret_value; + + return ret_value; +} -/*---------------------------------------------------------------------------- - * Name: h5oopen_by_addr_c - * Purpose: Calls H5open_by_addr - * Inputs: loc_id - File or group identifier - * addr - Object’s address in the file - * Outputs: obj_id - Dataset identifier - * Returns: 0 on success, -1 on failure - * Programmer: M. Scot Breitenfeld - * September 14, 2009 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5Of/h5oopen_by_addr_c + * NAME + * h5oopen_by_addr_c + * PURPOSE + * Calls H5open_by_addr + * INPUTS + * loc_id - File or group identifier + * addr - Object’s address in the file + * + * OUTPUTS + * obj_id - Dataset identifier + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * September 14, 2009 + * SOURCE +*/ int_f nh5oopen_by_addr_c (hid_t_f *loc_id, haddr_t_f *addr, hid_t_f *obj_id) +/******/ { int_f ret_value = 0; /* Return value */ @@ -122,3 +214,76 @@ nh5oopen_by_addr_c (hid_t_f *loc_id, haddr_t_f *addr, hid_t_f *obj_id) done: return ret_value; } + +/* ***if* H5Of/H5Oget_info_by_name_c + * NAME + * H5Oget_info_by_name_c + * PURPOSE + * Calls H5Oget_info_by_name + * INPUTS + * loc_id - File or group identifier specifying location of group in which object is located. + * name - Name of group, relative to loc_id. + * namelen - Name length. + * lapl_id - Link access property list. + * OUTPUTS + * corder_valid - Indicates whether the the creation order data is valid for this attribute. + * corder - Is a positive integer containing the creation order of the attribute. + * cset - Indicates the character set used for the attribute’s name. + * data_size - indicates the size, in the number of characters, of the attribute. + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * December 1, 2008 + * SOURCE +*/ +int_f +nh5oget_info_by_name_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id, + H5O_info_t *object_info) +/******/ +{ + char *c_name = NULL; /* Buffer to hold C string */ + int_f ret_value = 0; /* Return value */ + H5O_info_t Oinfo; + + /* + * Convert FORTRAN name to C name + */ + if((c_name = HD5f2cstring(name, (size_t)*namelen)) == NULL) + HGOTO_DONE(FAIL); + + /* + * Call H5Oinfo_by_name function. + */ + if(H5Oget_info_by_name((hid_t)*loc_id, c_name, + &Oinfo, (hid_t)*lapl_id) < 0) + HGOTO_DONE(FAIL); + + object_info->fileno = Oinfo.fileno; + object_info->addr = Oinfo.addr; + object_info->type = Oinfo.type; + object_info->rc = Oinfo.rc; + object_info->atime = Oinfo.atime; + object_info->mtime = Oinfo.mtime; + object_info->ctime = Oinfo.ctime; + object_info->btime = Oinfo.btime; + object_info->num_attrs = Oinfo.num_attrs; + + +/* printf("fileno %d %d\n",object_info->fileno, Oinfo.fileno); */ +/* printf("string %d %d\n",object_info.rc, Oinfo.rc); */ + +/* printf("atime %lld %lld\n",(long long int)object_info.atime, (long long int)Oinfo.atime); */ +/* printf("atime %lld %lld\n",(long long int)object_info.mtime, (long long int)Oinfo.mtime); */ +/* printf("atime %lld %lld\n",(long long int)object_info.ctime, (long long int)Oinfo.ctime); */ +/* printf("atime %lld %lld\n",(long long int)object_info.btime, (long long int)Oinfo.btime); */ +/* printf("string %f %f\n",object_info.addr, Oinfo.addr); */ +/* printf("num_attrs %d %d\n",object_info.num_attrs, Oinfo.num_attrs); */ +/* printf("num_attrs %f %f\n",object_info.hdr.version, Oinfo.hdr.version); */ + + + done: + return ret_value; +} + diff --git a/fortran/src/H5Off.f90 b/fortran/src/H5Off.f90 index af965e2..f29671d 100644 --- a/fortran/src/H5Off.f90 +++ b/fortran/src/H5Off.f90 @@ -1,3 +1,18 @@ +!****h* ROBODoc/H5O +! +! NAME +! MODULE H5O +! +! FILE +! fortran/src/H5Off.f90 +! +! PURPOSE +! This file contains Fortran interfaces for H5O functions. It includes +! all the functions that are independent on whether the Fortran 2003 functions +! are enabled or disabled. +! +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,39 +28,43 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! NOTES +! *** IMPORTANT *** +! If you add a new H5O function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. ! -! This file contains Fortran90 interfaces for H5O functions. -! +!***** + MODULE H5O USE H5GLOBAL CONTAINS -!---------------------------------------------------------------------- -! Name: h5olink_f -! -! Purpose: Creates a hard link to an object in an HDF5 file. -! -! Inputs: -! object_id - Object to be linked. -! new_loc_id - File or group identifier specifying location at which object is to be linked. -! new_link_name - Name of link to be created, relative to new_loc_id. -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lcpl_id - Link creation property list identifier. -! lapl_id - Link access property list identifier. -! -! Programmer: M.S. Breitenfeld -! April 21, 2008 -! -! Modifications: N/A -! -!---------------------------------------------------------------------- - +!****s* H5O/h5olink_f +! +! NAME +! h5olink_f +! +! PURPOSE +! Creates a hard link to an object in an HDF5 file. +! INPUTS +! object_id - Object to be linked. +! new_loc_id - File or group identifier specifying location at which object is to be linked. +! new_link_name - Name of link to be created, relative to new_loc_id. +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! OPTIONAL PARAMETERS +! lcpl_id - Link creation property list identifier. +! lapl_id - Link access property list identifier. +! AUTHOR +! M. Scot Breitenfeld +! April 21, 2008 +! +! SOURCE SUBROUTINE h5olink_f(object_id, new_loc_id, new_link_name, hdferr, lcpl_id, lapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: object_id ! Object to be linked @@ -57,6 +76,7 @@ CONTAINS ! Failure: -1 INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier. INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link creation property list identifier. +!***** INTEGER(HID_T) :: lapl_id_default INTEGER(HID_T) :: lcpl_id_default @@ -91,29 +111,28 @@ CONTAINS END SUBROUTINE h5olink_f -!---------------------------------------------------------------------- -! Name: h5oopen_f -! -! Purpose: Opens an object in an HDF5 file by location identifier and path name.O -! -! Inputs: -! loc_id - File or group identifier -! name - Path to the object, relative to loc_id. -! Outputs: -! obj_id - Object identifier for the opened object -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lapl_id - Access property list identifier for the link pointing to the object -! -! Programmer: M.S. Breitenfeld -! April 18, 2008 -! -! Modifications: N/A -! -!---------------------------------------------------------------------- - +!****s* H5O/h5oopen_f +! +! NAME +! h5oopen_f +! PURPOSE +! Opens an object in an HDF5 file by location identifier and path name. +! +! INPUTS +! loc_id - File or group identifier +! name - Path to the object, relative to loc_id. +! OUTPUTS +! obj_id - Object identifier for the opened object +! hdferr: - error code +! Success: 0 +! Failure: -1 +! OPTIONAL PARAMETERS +! lapl_id - Access property list identifier for the link pointing to the object +! +! AUTHOR +! M. Scot Breitenfeld +! April 18, 2008 +! SOURCE SUBROUTINE h5oopen_f(loc_id, name, obj_id, hdferr, lapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -123,12 +142,10 @@ CONTAINS ! Success: 0 ! Failure: -1 INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Attribute access property list +!***** INTEGER(HID_T) :: lapl_id_default - INTEGER(SIZE_T) :: namelen -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5oopen_c(loc_id, name, namelen, lapl_id_default, obj_id) USE H5GLOBAL @@ -152,36 +169,71 @@ CONTAINS hdferr = h5oopen_c(loc_id, name, namelen, lapl_id_default, obj_id) END SUBROUTINE h5oopen_f - -!---------------------------------------------------------------------- -! Name: h5oopen_by_addr_f ! -! Purpose: Opens an object using its address within an HDF5 file. +!****s* H5O/h5oclose_f +! +! NAME +! h5oclose_f ! -! Inputs: -! loc_id - File or group identifier -! addr - Object’s address in the file -! Outputs: -! obj_id - Object identifier for the opened object -! hdferr: - error code -! Success: 0 -! Failure: -1 +! PURPOSE +! Closes an object in an HDF5 file. ! -! Programmer: M. Scot Breitenfeld -! September 14, 2009 +! INPUTS +! object_id - Object identifier +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Modifications: N/A +! AUTHOR +! M. Scot Breitenfeld +! December 17, 2008 ! -!---------------------------------------------------------------------- +! SOURCE + SUBROUTINE h5oclose_f(object_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: object_id + INTEGER, INTENT(OUT) :: hdferr +!***** + INTERFACE + INTEGER FUNCTION h5oclose_c(object_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$OBJECTIBUTES C,reference,decorate,alias:'H5OCLOSE_C'::h5oclose_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: object_id + END FUNCTION h5oclose_c + END INTERFACE + hdferr = h5oclose_c(object_id) + END SUBROUTINE h5oclose_f + +! +!****s* H5O/h5open_by_addr_f +! NAME +! h5oopen_by_addr_f +! +! PURPOSE +! Opens an object using its address within an HDF5 file. +! +! INPUTS +! loc_id - File or group identifier +! addr - Object’s address in the file +! OUTPUTS: +! obj_id - Object identifier for the opened object +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! M. Scot Breitenfeld +! September 14, 2009 +! +! SOURCE SUBROUTINE h5oopen_by_addr_f(loc_id, addr, obj_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier INTEGER(HADDR_T), INTENT(IN) :: addr ! Object’s address in the file INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier for the opened object - INTEGER, INTENT(OUT) :: hdferr ! Error code - ! Success: 0 - ! Failure: -1 + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 on success and -1 on failure +!***** INTERFACE INTEGER FUNCTION h5oopen_by_addr_c(loc_id, addr, obj_id) USE H5GLOBAL @@ -199,3 +251,4 @@ CONTAINS END SUBROUTINE h5oopen_by_addr_f END MODULE H5O + diff --git a/fortran/src/H5Off_F03.f90 b/fortran/src/H5Off_F03.f90 new file mode 100644 index 0000000..0a72831 --- /dev/null +++ b/fortran/src/H5Off_F03.f90 @@ -0,0 +1,264 @@ +!****h* ROBODoc/H5O (F03) +! +! NAME +! H5O_PROVISIONAL +! +! PURPOSE +! This file contains Fortran 90 and Fortran 2003 interfaces for H5O functions. +! It contains the same functions as H5Off_DEPRECIATE.f90 but includes the +! Fortran 2003 functions and the interface listings. This file will be compiled +! instead of H5Off_DEPRECIATE.f90 if Fortran 2003 functions are enabled. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! *** IMPORTANT *** +! If you add a new H5P function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** + +MODULE H5O_PROVISIONAL + + USE H5GLOBAL + USE ISO_C_BINDING + + IMPLICIT NONE + + + enum, bind(c) + enumerator :: H5O_TYPE_UNKNOWN_F = -1 + enumerator :: H5O_TYPE_GROUP_F, H5O_TYPE_DATASET_F, H5O_TYPE_NAMED_DATATYPE_F, H5O_TYPE_NTYPES_F + end enum + + + TYPE, BIND(C) :: space_t + INTEGER(hsize_t) :: total ! Total space for storing object header in file + INTEGER(hsize_t) :: meta ! Space within header for object header metadata information + INTEGER(hsize_t) :: mesg ! Space within header for actual message information + INTEGER(hsize_t) :: free ! Free space within object header + END TYPE space_t + + TYPE, BIND(C) :: mesg_t + INTEGER(c_int64_t) :: present ! Flags to indicate presence of message type in header + INTEGER(c_int64_t) :: shared ! Flags to indicate message type is shared in header + END TYPE mesg_t + + TYPE, BIND(C) :: hdr_t + INTEGER(c_int) :: version ! Version number of header format in file + ! unsigned version + INTEGER(c_int) :: nmesgs ! Number of object header messages + ! unsigned nmesgs + INTEGER(c_int) :: nchunks ! Number of object header chunks + ! unsigned nchunks + INTEGER(c_int) :: flags ! Object header status flags + ! unsigned flags + TYPE(space_t) :: space + TYPE(mesg_t) :: mesg + END TYPE hdr_t + + ! Extra metadata storage for obj & attributes + TYPE, BIND(C) :: H5_ih_info_t + INTEGER(hsize_t) :: index_size ! btree and/or list + INTEGER(hsize_t) :: heap_size + END TYPE H5_ih_info_t + + TYPE, BIND(C) :: meta_size_t + TYPE(H5_ih_info_t) :: obj ! v1/v2 B-tree & local/fractal heap for groups, B-tree for chunked datasets + TYPE(H5_ih_info_t) :: attr ! v2 B-tree & heap for attributes + ENDTYPE meta_size_t + + + TYPE, BIND(C) :: H5O_info_t + INTEGER(HADDR_T) :: fileno ! File number that object is located in + ! unsigned long + INTEGER(HADDR_T) :: addr ! Object address in file + INTEGER :: TYPE ! Basic object type (group, dataset, etc.) + ! H5O_type_t type + INTEGER(c_int) :: rc ! Reference count of object + ! unsigned rc + INTEGER(c_int) :: atime ! Access time + INTEGER(c_int) :: mtime ! Modification time + INTEGER(c_int) :: ctime ! Change time + INTEGER(c_int) :: btime ! Birth time + INTEGER(hsize_t) :: num_attrs ! # of attributes attached to object + + TYPE(hdr_t) :: hdr + TYPE(meta_size_t) :: meta_size + END TYPE H5O_info_t + +CONTAINS + +!****s* H5O (F03)/h5ovisit_f +! +! NAME +! h5ovisit_f +! +! PURPOSE +! Recursively visits all objects starting from a specified object. +! +! INPUTS +! group_id - Identifier of the group at which the recursive iteration begins +! index_type - Type of index; valid values include: +! H5_INDEX_NAME_F +! H5_INDEX_CRT_ORDER_F +! order - Order in which index is traversed; valid values include: +! H5_ITER_DEC_F +! H5_ITER_INC_F +! H5_ITER_NATIVE_F +! op - Callback function passing data regarding the group to the calling application +! op_data - User-defined pointer to data required by the application for its processing of the group +! +! OUTPUTS +! idx - returns the return value of the first operator that returns a positive value, or +! zero if all members were processed with no operator returning non-zero. +! hdferr - error code: +! 0 on success and -1 on failure +! AUTHOR +! M. Scot Breitenfeld +! November 19, 2008 +! +! SOURCE + SUBROUTINE h5ovisit_f(group_id, index_type, order, op, op_data, return_value, hdferr) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: group_id + INTEGER, INTENT(IN) :: index_type + INTEGER, INTENT(IN) :: order +!!$ INTEGER(HSIZE_T), INTENT(INOUT) :: idx ! IN : Iteration position at which to start +!!$ ! OUT: Position at which an interrupted iteration may be restarted + + TYPE(C_FUNPTR):: op ! Callback function passing data regarding the link to the calling application + TYPE(C_PTR) :: op_data ! User-defined pointer to data required by the application for its processing of the link + + INTEGER, INTENT(OUT) :: return_value ! Success: The return value of the first operator that + ! returns non-zero, or zero if all members were + ! processed with no operator returning non-zero. + + ! Failure: Negative if something goes wrong within the + ! library, or the negative value returned by one + ! of the operators. + + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 on success and -1 on failure +!***** + INTERFACE + INTEGER FUNCTION h5ovisit_c(group_id, index_type, order, op, op_data) + USE ISO_C_BINDING + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OVISIT_C'::h5ovisit_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: group_id + INTEGER, INTENT(IN) :: index_type + INTEGER, INTENT(IN) :: order + TYPE(C_FUNPTR), VALUE :: op + TYPE(C_PTR), VALUE :: op_data + END FUNCTION h5ovisit_c + END INTERFACE + + return_value = h5ovisit_c(group_id, index_type, order, op, op_data) + + IF(return_value.GE.0)THEN + hdferr = 0 + ELSE + hdferr = -1 + END IF + + END SUBROUTINE h5ovisit_f + + + +! +!!$!****s* H5O/h5oget_info_by_name_f +! +! NAME +! h5oget_info_by_name_f +! +! PURPOSE +! Retrieves the metadata for an object, identifying the object by location and relative name. +! +! INPUTS +! loc_id - File or group identifier specifying location of group in which object +! is located. +! name - Name of group, relative to loc_id +! +! OUTPUTS NOTE: In C it is defined as a structure: H5O_info_t +! **** NEED TO MAKE THIS DERIVED DATATYPE **** +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lapl_id - Link access property list +! +! AUTHOR +! M. Scot Breitenfeld +! December 1, 2008 +! +! SOURCE + SUBROUTINE h5oget_info_by_name_f(loc_id, name, & + object_info, hdferr, lapl_id) + ! f_corder_valid, corder, cset, data_size, hdferr, lapl_id) + + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T) , INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + TYPE(C_PTR) :: object_info +!!$ LOGICAL , INTENT(OUT) :: f_corder_valid +!!$ INTEGER , INTENT(OUT) :: corder +!!$ INTEGER , INTENT(OUT) :: cset +!!$ INTEGER(HSIZE_T), INTENT(OUT) :: data_size + INTEGER , INTENT(OUT) :: hdferr + INTEGER(HID_T) , INTENT(IN) , OPTIONAL :: lapl_id +!***** + INTEGER :: corder_valid + INTEGER(SIZE_T) :: namelen + INTEGER(HID_T) :: lapl_id_default + + INTERFACE + INTEGER FUNCTION h5oget_info_by_name_c(loc_id, name, namelen, lapl_id_default, & + object_info) + USE H5GLOBAL + USE, INTRINSIC :: ISO_C_BINDING + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OGET_INFO_BY_NAME_C'::h5oget_info_by_name_c + !DEC$ENDIF + INTEGER(HID_T) , INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(SIZE_T) , INTENT(IN) :: namelen + INTEGER(HID_T) , INTENT(IN) :: lapl_id_default + TYPE(C_PTR),value :: object_info + + END FUNCTION h5oget_info_by_name_c + END INTERFACE + + namelen = LEN(name) + + lapl_id_default = H5P_DEFAULT_F + IF(PRESENT(lapl_id)) lapl_id_default = lapl_id + + hdferr = H5Oget_info_by_name_c(loc_id, name, namelen, lapl_id_default, & + object_info) + + +!!$ f_corder_valid =.FALSE. +!!$ IF (corder_valid .EQ. 1) f_corder_valid =.TRUE. + + END SUBROUTINE H5Oget_info_by_name_f + +END MODULE H5O_PROVISIONAL + diff --git a/fortran/src/H5Off_F90.f90 b/fortran/src/H5Off_F90.f90 new file mode 100644 index 0000000..53553d6 --- /dev/null +++ b/fortran/src/H5Off_F90.f90 @@ -0,0 +1,39 @@ +!****h* ROBODoc/H5O (F90) +! +! NAME +! MODULE H5O_PROVISIONAL +! +! PURPOSE +! This file contains Fortran 90 interfaces for H5O functions. It contains +! the same functions as H5Off_F03.f90 but excludes the Fortran 2003 functions +! and the interface listings. This file will be compiled instead of H5Off_F03.f90 +! if Fortran 2003 functions are not enabled. +! +! NOTE +! Currently contains no functions. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! *** IMPORTANT *** +! If you add a new H5D function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +!***** + +MODULE H5O_PROVISIONAL + +END MODULE H5O_PROVISIONAL diff --git a/fortran/src/H5Pf.c b/fortran/src/H5Pf.c index cf5eb7d..6fc8487 100644 --- a/fortran/src/H5Pf.c +++ b/fortran/src/H5Pf.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5Pf/H5Pf + * PURPOSE + * This file contains C stubs for H5P Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,26 +16,35 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for H5P Fortran APIs */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" #include "H5Eprivate.h" -/*---------------------------------------------------------------------------- - * Name: h5pcreate_c - * Purpose: Call H5Pcreate to create a property list - * Inputs: cls - property list class identifier - * Outputs: prp_id - identifier of the created property list - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Wednesday, October 9, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5Pf/h5pcreate_c + * NAME + * h5pcreate_c + * PURPOSE + * Call H5Pcreate to create a property list + * INPUTS + * cls - property list class identifier + * OUTPUTS + * prp_id - identifier of the created property list + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Wednesday, October 9, 2002 + * + * SOURCE +*/ int_f nh5pcreate_c ( hid_t_f *cls, hid_t_f *prp_id ) +/******/ { hid_t c_prp_id; int_f ret_value = 0; @@ -45,18 +59,25 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pclose_c - * Purpose: Call H5Pclose to close property lis - * Inputs: prp_id - identifier of the property list to be closed - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Pf/h5pclose_c + * NAME + * h5pclose_c + * PURPOSE + * Call H5Pclose to close property lis + * INPUTS + * prp_id - identifier of the property list to be closed + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * + * SOURCE +*/ int_f nh5pclose_c ( hid_t_f *prp_id ) +/******/ { int_f ret_value = 0; @@ -67,19 +88,26 @@ nh5pclose_c ( hid_t_f *prp_id ) } -/*---------------------------------------------------------------------------- - * Name: h5pcopy_c - * Purpose: Call H5Pcopy to copy property list - * Inputs: prp_id - identifier of the property list to be copied - * Outputs: new_prp_id - identifier of the new property list - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Pf/h5pcopy_c + * NAME + * h5pcopy_c + * PURPOSE + * Call H5Pcopy to copy property list + * INPUTS + * prp_id - identifier of the property list to be copied + * OUTPUTS + * new_prp_id - identifier of the new property list + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ - + * + * SOURCE +*/ int_f nh5pcopy_c ( hid_t_f *prp_id , hid_t_f *new_prp_id) +/******/ { hid_t c_new_prp_id; int_f ret_value = 0; @@ -94,20 +122,27 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pequal_c - * Purpose: Call H5Pequal to check if two property lists are equal - * Inputs: plist1_id - property list identifier +/****if* H5Pf/h5pequal_c + * NAME + * h5pequal_c + * PURPOSE + * Call H5Pequal to check if two property lists are equal + * INPUTS + * plist1_id - property list identifier * plist2_id - property list identifier - * Outputs: c_flag - flag to indicate that lists are eqaul - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * c_flag - flag to indicate that lists are eqaul + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, September 30, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ - + * + * SOURCE +*/ int_f nh5pequal_c ( hid_t_f *plist1_id , hid_t_f *plist2_id, int_f * c_flag) +/******/ { htri_t c_c_flag; int_f ret_value = 0; @@ -123,25 +158,32 @@ done: } -/*---------------------------------------------------------------------------- - * Name: h5pget_class_c - * Purpose: Call H5Pget_class to determine property list class - * Inputs: prp_id - identifier of the dataspace - * Outputs: classtype - class type; possible values are: +/****if* H5Pf/h5pget_class_c + * NAME + * h5pget_class_c + * PURPOSE + * Call H5Pget_class to determine property list class + * INPUTS + * prp_id - identifier of the dataspace + * OUTPUTS + * classtype - class type; possible values are: * H5P_ROOT_F -1 * H5P_FILE_CREATE_F 0 * H5P_FILE_ACCESS_F 1 * H5P_DATASET_CREATE_F 2 * H5P_DATASET_XFER_F 3 * H5P_FILE_MOUNT_F 4 - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5pget_class_c ( hid_t_f *prp_id , int_f *classtype) +/******/ { hid_t c_classtype; int_f ret_value = 0; @@ -158,20 +200,26 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_preserve_c - * Purpose: Call H5Pset_preserve to set transfer property for compound +/****if* H5Pf/h5pset_preserve_c + * NAME + * h5pset_preserve_c + * PURPOSE + * Call H5Pset_preserve to set transfer property for compound * datatype - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * flag - TRUE/FALSE flag - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Thursday, February 17, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Thursday, February 17, 2000 + * SOURCE +*/ int_f nh5pset_preserve_c ( hid_t_f *prp_id , int_f *flag) +/******/ { int ret_value = 0; hid_t c_prp_id; @@ -186,20 +234,27 @@ nh5pset_preserve_c ( hid_t_f *prp_id , int_f *flag) } -/*---------------------------------------------------------------------------- - * Name: h5pget_preserve_c - * Purpose: Call H5Pget_preserve to set transfer property for compound +/****if* H5Pf/h5pget_preserve_c + * NAME + * h5pget_preserve_c + * PURPOSE + * Call H5Pget_preserve to set transfer property for compound * datatype - * Inputs: prp_id - property list identifier - * Outputs: flag - TRUE/FALSE flag - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Thursday, February 17, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * INPUTS + * prp_id - property list identifier + * OUTPUTS + * flag - TRUE/FALSE flag + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Thursday, February 17, 2000 + * SOURCE +*/ int_f nh5pget_preserve_c ( hid_t_f *prp_id , int_f *flag) +/******/ { int ret_value = 0; hid_t c_prp_id; @@ -212,19 +267,25 @@ nh5pget_preserve_c ( hid_t_f *prp_id , int_f *flag) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_deflate_c - * Purpose: Call H5Pset_deflate to set deflate level - * Inputs: prp_id - property list identifier +/****if* H5Pf/h5pset_deflate_c + * NAME + * h5pset_deflate_c + * PURPOSE + * Call H5Pset_deflate to set deflate level + * INPUTS + * prp_id - property list identifier * level - level of deflation - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5pset_deflate_c ( hid_t_f *prp_id , int_f *level) +/******/ { int ret_value = 0; hid_t c_prp_id; @@ -240,21 +301,27 @@ nh5pset_deflate_c ( hid_t_f *prp_id , int_f *level) -/*---------------------------------------------------------------------------- - * Name: h5pset_chunk_c - * Purpose: Call H5Pset_chunk to set the sizes of chunks for a chunked +/****if* H5Pf/h5pset_chunk_c + * NAME + * h5pset_chunk_c + * PURPOSE + * Call H5Pset_chunk to set the sizes of chunks for a chunked * layout dataset - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * rank - number of dimensions of each chunk * dims - array of the size of each chunk - * Returns: 0 on success, -1 on failure + * RETURNS + * 0 on success, -1 on failure * Saturday, August 14, 1999 - * Programmer: Elena Pourmal - * Modifications: - *---------------------------------------------------------------------------*/ + * AUTHOR + * Elena Pourmal + * SOURCE +*/ int_f nh5pset_chunk_c ( hid_t_f *prp_id, int_f *rank, hsize_t_f *dims ) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -285,21 +352,27 @@ DONE: } -/*---------------------------------------------------------------------------- - * Name: h5pget_chunk_c - * Purpose: Call H5Pget_chunk to get the sizes of chunks for a chunked +/****if* H5Pf/h5pget_chunk_c + * NAME + * h5pget_chunk_c + * PURPOSE + * Call H5Pget_chunk to get the sizes of chunks for a chunked * layout dataset for at list max_rank number of dimensions - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * max rank - maximum number of dimensions to return * dims - array of the size of each chunk - * Returns: number of chunk's dimnesion on success, -1 on failure + * RETURNS + * number of chunk's dimnesion on success, -1 on failure * Saturday, August 14, 1999 - * Programmer: Elena Pourmal - * Modifications: - *---------------------------------------------------------------------------*/ + * AUTHOR + * Elena Pourmal + * SOURCE +*/ int_f nh5pget_chunk_c ( hid_t_f *prp_id, int_f *max_rank, hsize_t_f *dims ) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -327,21 +400,25 @@ nh5pget_chunk_c ( hid_t_f *prp_id, int_f *max_rank, hsize_t_f *dims ) return ret_value; } - - -/*---------------------------------------------------------------------------- - * Name: h5pset_fill_valuec_c - * Purpose: Call h5pset_fill_value_c to a character fill value - * Inputs: prp_id - property list identifier +/****if* H5Pf/h5pset_fill_valuec_c + * NAME + * h5pset_fill_valuec_c + * PURPOSE + * Call h5pset_fill_value_c to a character fill value + * INPUTS + * prp_id - property list identifier * type_id - datatype identifier (fill value is of type type_id) * fillvalue - character value - * Returns: 0 on success, -1 on failure + * RETURNS + * 0 on success, -1 on failure * Saturday, August 14, 1999 - * Programmer: Elena Pourmal - * Modifications: - *---------------------------------------------------------------------------*/ + * AUTHOR + * Elena Pourmal + * SOURCE +*/ int_f nh5pset_fill_valuec_c (hid_t_f *prp_id, hid_t_f *type_id, _fcd fillvalue) +/******/ { int ret_value = -1; @@ -353,19 +430,25 @@ nh5pset_fill_valuec_c (hid_t_f *prp_id, hid_t_f *type_id, _fcd fillvalue) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_fill_value_c - * Purpose: Call H5Pset_fill_value to set a fillvalue for a dataset - * Inputs: prp_id - property list identifier +/****if* H5Pf/h5pset_fill_value_c + * NAME + * h5pset_fill_value_c + * PURPOSE + * Call H5Pset_fill_value to set a fillvalue for a dataset + * INPUTS + * prp_id - property list identifier * type_id - datatype identifier (fill value is of type type_id) * fillvalue - fillvalue - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5pset_fill_value_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -386,6 +469,7 @@ nh5pset_fill_value_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue) int_f nh5pset_fill_value_integer_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue) +/******/ { /* * Call h5pset_fill_value_c function. @@ -411,20 +495,27 @@ nh5pset_fill_value_double_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue) return nh5pset_fill_value_c(prp_id, type_id, fillvalue); } - -/*---------------------------------------------------------------------------- - * Name: h5pget_fill_valuec_c - * Purpose: Call h5pget_fill_value_c to a character fill value - * Inputs: prp_id - property list identifier +/****if* H5Pf/h5pget_fill_valuec_c + * NAME + * h5pget_fill_valuec_c + * PURPOSE + * Call h5pget_fill_value_c to a character fill value + * INPUTS + * prp_id - property list identifier * type_id - datatype identifier (fill value is of type type_id) * fillvalue - character value - * Returns: 0 on success, -1 on failure + * RETURNS + * 0 on success, -1 on failure * Saturday, August 14, 1999 - * Programmer: Elena Pourmal - * Modifications: - *---------------------------------------------------------------------------*/ + * AUTHOR + * Elena Pourmal + * HISTORY + * + * SOURCE +*/ int_f nh5pget_fill_valuec_c (hid_t_f *prp_id, hid_t_f *type_id, _fcd fillvalue) +/******/ { int ret_value = -1; @@ -436,19 +527,25 @@ nh5pget_fill_valuec_c (hid_t_f *prp_id, hid_t_f *type_id, _fcd fillvalue) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_fill_value_c - * Purpose: Call H5Pget_fill_value to set a fillvalue for a dataset - * Inputs: prp_id - property list identifier +/****if* H5Pf/h5pget_fill_value_c + * NAME + * h5pget_fill_value_c + * PURPOSE + * Call H5Pget_fill_value to set a fillvalue for a dataset + * INPUTS + * prp_id - property list identifier * type_id - datatype identifier (fill value is of type type_id) * fillvalue - fillvalue - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5pget_fill_value_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -494,22 +591,31 @@ nh5pget_fill_value_double_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue) return nh5pset_fill_value_c(prp_id, type_id, fillvalue); } -/*---------------------------------------------------------------------------- - * Name: h5pget_version_c - * Purpose: Call H5Pget_version to get the version information +/****if* H5Pf/h5pget_version_c + * NAME + * h5pget_version_c + * PURPOSE + * Call H5Pget_version to get the version information * of various objects for a file creation property list - * Inputs: prp_id - property list identifier - * Outputs: boot - array to put boot block version number + * INPUTS + * prp_id - property list identifier + * OUTPUTS + * boot - array to put boot block version number * freelist - array to put global freelist version number * stab - array to put symbol table version number * shhdr - array to put shared object header version number - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Wednesday, February 23, 2000 - * Modifications: Removed extra length parameters EP 7/6/00 - *---------------------------------------------------------------------------*/ + * HISTORY + * Removed extra length parameters EP 7/6/00 + * SOURCE +*/ int_f nh5pget_version_c (hid_t_f *prp_id, int_f * boot,int_f * freelist, int_f * stab, int_f *shhdr) +/******/ { int ret_value = -1; #ifndef H5_NO_DEPRECATED_SYMBOLS @@ -543,19 +649,25 @@ nh5pget_version_c (hid_t_f *prp_id, int_f * boot,int_f * freelist, int_f * stab, return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_userblock_c - * Purpose: Call H5Pget_userblock to get the size of a user block in +/****if* H5Pf/h5pget_userblock_c + * NAME + * h5pget_userblock_c + * PURPOSE + * Call H5Pget_userblock to get the size of a user block in * a file creation property list - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * Outputs size - Size of the user-block in bytes - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Wednesday, February 23, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5pget_userblock_c (hid_t_f *prp_id, hsize_t_f * size) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -575,19 +687,25 @@ nh5pget_userblock_c (hid_t_f *prp_id, hsize_t_f * size) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_userblock_c - * Purpose: Call H5Pset_userblock to set the size of a user block in +/****if* H5Pf/h5pset_userblock_c + * NAME + * h5pset_userblock_c + * PURPOSE + * Call H5Pset_userblock to set the size of a user block in * a file creation property list - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * size - Size of the user-block in bytes - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Wednesday, February 23, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5pset_userblock_c (hid_t_f *prp_id, hsize_t_f * size) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -606,20 +724,28 @@ nh5pset_userblock_c (hid_t_f *prp_id, hsize_t_f * size) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_sizes_c - * Purpose: Call H5Pget_sizes to get the size of the offsets +/****if* H5Pf/h5pget_sizes_c + * NAME + * h5pget_sizes_c + * PURPOSE + * Call H5Pget_sizes to get the size of the offsets * and lengths used in an HDF5 file - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * Outputs sizeof_addr - Size of an object offset in bytes * sizeof_size - Size of an object length in bytes - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Wednesday, February 23, 2000 - * Modifications: Deleted extra length parameters. EP 6/7/00 - *---------------------------------------------------------------------------*/ + * HISTORY + * Deleted extra length parameters. EP 6/7/00 + * SOURCE +*/ int_f nh5pget_sizes_c (hid_t_f *prp_id, size_t_f * sizeof_addr, size_t_f * sizeof_size) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -641,19 +767,27 @@ nh5pget_sizes_c (hid_t_f *prp_id, size_t_f * sizeof_addr, size_t_f * sizeof_size return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_sizes_c - * Purpose: Call H5Pset_sizes to set the size of the offsets - * Inputs: prp_id - property list identifier +/****if* H5Pf/h5pset_sizes_c + * NAME + * h5pset_sizes_c + * PURPOSE + * Call H5Pset_sizes to set the size of the offsets + * INPUTS + * prp_id - property list identifier * sizeof_addr - Size of an object offset in bytes * sizeof_size - Size of an object length in bytes - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Wednesday, February 23, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_sizes_c (hid_t_f *prp_id, size_t_f * sizeof_addr, size_t_f * sizeof_size) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -673,20 +807,26 @@ nh5pset_sizes_c (hid_t_f *prp_id, size_t_f * sizeof_addr, size_t_f * sizeof_size return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_sym_k_c - * Purpose: Call H5Pset_sym_k to set the size of parameters used +/****if* H5Pf/h5pset_sym_k_c + * NAME + * h5pset_sym_k_c + * PURPOSE + * Call H5Pset_sym_k to set the size of parameters used * to control the symbol table node - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * ik - Symbol table tree rank * lk - Symbol table node size - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5pset_sym_k_c (hid_t_f *prp_id, int_f* ik, int_f* lk) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -707,20 +847,29 @@ nh5pset_sym_k_c (hid_t_f *prp_id, int_f* ik, int_f* lk) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_sym_k_c - * Purpose: Call H5Pget_sym_k to get the size of parameters used +/****if* H5Pf/h5pget_sym_k_c + * NAME + * h5pget_sym_k_c + * PURPOSE + * Call H5Pget_sym_k to get the size of parameters used * to control the symbol table node - * Inputs: prp_id - property list identifier - * Outputs: ik - Symbol table tree rank + * INPUTS + * prp_id - property list identifier + * OUTPUTS + * ik - Symbol table tree rank * lk - Symbol table node size - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_sym_k_c (hid_t_f *prp_id, int_f* ik, int_f* lk) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -740,19 +889,27 @@ nh5pget_sym_k_c (hid_t_f *prp_id, int_f* ik, int_f* lk) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_istore_k_c - * Purpose: Call H5Pset_istore_k to set the size of the parameter +/****if* H5Pf/h5pset_istore_k_c + * NAME + * h5pset_istore_k_c + * PURPOSE + * Call H5Pset_istore_k to set the size of the parameter * used to control the B-trees for indexing chunked datasets - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * ik - Symbol table tree rank - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_istore_k_c (hid_t_f *prp_id, int_f* ik) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -771,19 +928,28 @@ nh5pset_istore_k_c (hid_t_f *prp_id, int_f* ik) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_istore_k_c - * Purpose: Call H5Pget_istore_k to get the size of parameters used +/****if* H5Pf/h5pget_istore_k_c + * NAME + * h5pget_istore_k_c + * PURPOSE + * Call H5Pget_istore_k to get the size of parameters used * to control the B-trees for indexing chunked datasets - * Inputs: prp_id - property list identifier - * Outputs: ik - Symbol table tree rank - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * INPUTS + * prp_id - property list identifier + * OUTPUTS + * ik - Symbol table tree rank + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_istore_k_c (hid_t_f *prp_id, int_f* ik) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -801,18 +967,27 @@ nh5pget_istore_k_c (hid_t_f *prp_id, int_f* ik) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_driver_c - * Purpose: Call H5Pget_driver to get low-level file driver identifier - * Inputs: prp_id - property list identifier - * Outputs: driver - low-level file driver identifier - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su +/****if* H5Pf/h5pget_driver_c + * NAME + * h5pget_driver_c + * PURPOSE + * Call H5Pget_driver to get low-level file driver identifier + * INPUTS + * prp_id - property list identifier + * OUTPUTS + * driver - low-level file driver identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_driver_c (hid_t_f *prp_id, hid_t_f* driver) +/******/ { int ret_value = -1; hid_t c_driver; @@ -830,18 +1005,26 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_fapl_stdio_c - * Purpose: Call H5Pset_stdio to set the low level file driver to +/****if* H5Pf/h5pset_fapl_stdio_c + * NAME + * h5pset_fapl_stdio_c + * PURPOSE + * Call H5Pset_stdio to set the low level file driver to * use the functions declared in the stdio.h - * Inputs: prp_id - property list identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * INPUTS + * prp_id - property list identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * March 7, 2001 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_fapl_stdio_c (hid_t_f *prp_id) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -856,20 +1039,29 @@ nh5pset_fapl_stdio_c (hid_t_f *prp_id) return ret_value; } #ifdef NO_SUCH_F90_FUNCTION -/*---------------------------------------------------------------------------- - * Name: h5pget_fapl_stdio_c - * Purpose: Call H5Pget_fapl_stdio to determine whther the low level file driver +/****if* H5Pf/h5pget_fapl_stdio_c + * NAME + * h5pget_fapl_stdio_c + * PURPOSE + * Call H5Pget_fapl_stdio to determine whther the low level file driver * uses the functions declared in the stdio.h - * Inputs: prp_id - property list identifier - * Outputs: io - value indicates whether the file driver uses + * INPUTS + * prp_id - property list identifier + * OUTPUTS + * io - value indicates whether the file driver uses * the functions declared in the stdio.h - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * March 9, 2001 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_fapl_stdio_c (hid_t_f *prp_id, int_f* io) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -887,18 +1079,26 @@ nh5pget_fapl_stdio_c (hid_t_f *prp_id, int_f* io) #endif /*NO_SUCH_F90_FUNCTION*/ -/*---------------------------------------------------------------------------- - * Name: h5pset_fapl_sec2_c - * Purpose: Call H5Pset_fapl_sec2 to set the low level file driver to +/****if* H5Pf/h5pset_fapl_sec2_c + * NAME + * h5pset_fapl_sec2_c + * PURPOSE + * Call H5Pset_fapl_sec2 to set the low level file driver to * use the functions declared in the unistd.h - * Inputs: prp_id - property list identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * INPUTS + * prp_id - property list identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * March 9, 2001 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_fapl_sec2_c (hid_t_f *prp_id) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -914,20 +1114,29 @@ nh5pset_fapl_sec2_c (hid_t_f *prp_id) } #ifdef NO_SUCH_F90_FUNCTION -/*---------------------------------------------------------------------------- - * Name: h5pget_fapl_sec2_c - * Purpose: Call H5Pget_fapl_stdio to determine whther the low level file driver +/****if* H5Pf/h5pget_fapl_sec2_c + * NAME + * h5pget_fapl_sec2_c + * PURPOSE + * Call H5Pget_fapl_stdio to determine whther the low level file driver * uses the functions declared in the unistd.h - * Inputs: prp_id - property list identifier - * Outputs: sec2 - value indicates whether the file driver uses + * INPUTS + * prp_id - property list identifier + * OUTPUTS + * sec2 - value indicates whether the file driver uses * the functions declared in the unistd.h - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * March 9, 2001 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_fapl_sec2_c (hid_t_f *prp_id, int_f* sec2) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -944,20 +1153,28 @@ nh5pget_fapl_sec2_c (hid_t_f *prp_id, int_f* sec2) } #endif /*NO_SUCH_F90_FUNCTION*/ -/*---------------------------------------------------------------------------- - * Name: h5pset_alignment_c - * Purpose: Call H5Pset_alignment to set alignment properties of +/****if* H5Pf/h5pset_alignment_c + * NAME + * h5pset_alignment_c + * PURPOSE + * Call H5Pset_alignment to set alignment properties of * a file access property list - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * threshold - Threshold value * alignment - Alignment value - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_alignment_c (hid_t_f *prp_id, hsize_t_f* threshold, hsize_t_f* alignment) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -975,20 +1192,28 @@ nh5pset_alignment_c (hid_t_f *prp_id, hsize_t_f* threshold, hsize_t_f* alignment return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_alignment_c - * Purpose: Call H5Pget_alignment to get alignment properties of +/****if* H5Pf/h5pget_alignment_c + * NAME + * h5pget_alignment_c + * PURPOSE + * Call H5Pget_alignment to get alignment properties of * a file access property list - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * threshold - Threshold value * alignment - Alignment value - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_alignment_c (hid_t_f *prp_id, hsize_t_f* threshold, hsize_t_f* alignment) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1007,21 +1232,29 @@ nh5pget_alignment_c (hid_t_f *prp_id, hsize_t_f* threshold, hsize_t_f* alignment return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_fapl_core_c - * Purpose: Call H5Pset_fapl_core to set the low-level file driver +/****if* H5Pf/h5pset_fapl_core_c + * NAME + * h5pset_fapl_core_c + * PURPOSE + * Call H5Pset_fapl_core to set the low-level file driver * to use malloc() and free() - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * increment - File block size in bytes * flag - Boolean flag indicating whether to write the * file contents to disk when the file is closed. - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * March 9, 2001 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_fapl_core_c (hid_t_f *prp_id, size_t_f* increment, int_f *flag) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1041,19 +1274,27 @@ nh5pset_fapl_core_c (hid_t_f *prp_id, size_t_f* increment, int_f *flag) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_fapl_core_c - * Purpose: Call H5Pget_fapl_core to determine whether the file access +/****if* H5Pf/h5pget_fapl_core_c + * NAME + * h5pget_fapl_core_c + * PURPOSE + * Call H5Pget_fapl_core to determine whether the file access * property list is set to the core drive - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * Outputs increment - File block size in bytes - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * March 9, 2001 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_fapl_core_c (hid_t_f *prp_id, size_t_f* increment, int_f *flag) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1073,21 +1314,29 @@ nh5pget_fapl_core_c (hid_t_f *prp_id, size_t_f* increment, int_f *flag) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_fapl_family_c - * Purpose: Call H5Pset_fapl_family to set the file access properties list +/****if* H5Pf/h5pset_fapl_family_c + * NAME + * h5pset_fapl_family_c + * PURPOSE + * Call H5Pset_fapl_family to set the file access properties list * to the family driver - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * memb_size - Logical size, in bytes, of each family member. * memb_plist - Identifier of the file access property list * for each member of the family - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * March 9, 2001 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_fapl_family_c(hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist ) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1106,21 +1355,29 @@ nh5pset_fapl_family_c(hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_fapl_family_c - * Purpose: Call H5Pget_fapl_family to determine whether the file access +/****if* H5Pf/h5pget_fapl_family_c + * NAME + * h5pget_fapl_family_c + * PURPOSE + * Call H5Pget_fapl_family to determine whether the file access * property list is set to the family driver - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * memb_size - Logical size, in bytes, of each family member. * memb_plist - Identifier of the file access property list * for each member of the family - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * March 9, 2001 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_fapl_family_c(hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1140,24 +1397,32 @@ nh5pget_fapl_family_c(hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_cache_c - * Purpose: Call H5Pset_cache to set he number of elements in +/****if* H5Pf/h5pset_cache_c + * NAME + * h5pset_cache_c + * PURPOSE + * Call H5Pset_cache to set he number of elements in * the meta data cache and the total number of bytes in * the raw data chunk cache - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * mdc_nelmts - Number of elements (objects) in the * meta data cache * rdcc_nbytes - Total size of the raw data chunk cache, in bytes * rdcc_w0 - Preemption policy - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: Changed the type of the rdcc_w0 parameter to be real_f EP 7/7/00 + * HISTORY + * Changed the type of the rdcc_w0 parameter to be real_f EP 7/7/00 * instead of double - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5pset_cache_c(hid_t_f *prp_id, int_f* mdc_nelmts, size_t_f* rdcc_nelmts, size_t_f* rdcc_nbytes , real_f* rdcc_w0 ) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1181,26 +1446,35 @@ nh5pset_cache_c(hid_t_f *prp_id, int_f* mdc_nelmts, size_t_f* rdcc_nelmts, size return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_cache_c - * Purpose: Call H5Pget_cache to get he number of elements in +/****if* H5Pf/h5pget_cache_c + * NAME + * h5pget_cache_c + * PURPOSE + * Call H5Pget_cache to get he number of elements in * the meta data cache and the total number of bytes in * the raw data chunk cache - * Inputs: prp_id - property list identifier - * Outputs: mdc_nelmts - Number of elements (objects) in the + * INPUTS + * prp_id - property list identifier + * OUTPUTS + * mdc_nelmts - Number of elements (objects) in the * meta data cache * rdcc_nelmts - Number of elements in the raw data chunk * rdcc_nbytes - Total size of the raw data chunk cache, in bytes * rdcc_w0 - Preemption policy - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: Changed type of the rdcc_w0 parameter to be real_f instead of double + * HISTORY + * Changed type of the rdcc_w0 parameter to be real_f instead of double * Changed type of the rdcc_nelmts parameter to be int_f. * EIP October 10, 2003 - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5pget_cache_c(hid_t_f *prp_id, int_f* mdc_nelmts, size_t_f* rdcc_nelmts, size_t_f* rdcc_nbytes , real_f* rdcc_w0) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1224,24 +1498,32 @@ nh5pget_cache_c(hid_t_f *prp_id, int_f* mdc_nelmts, size_t_f* rdcc_nelmts, size_ return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_fapl_split_c - * Purpose: Call H5Pset_fapl_split to set he low-level driver to split meta data +/****if* H5Pf/h5pset_fapl_split_c + * NAME + * h5pset_fapl_split_c + * PURPOSE + * Call H5Pset_fapl_split to set he low-level driver to split meta data * from raw data - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * meta_len - Length of meta_ext * meta_ext - Name of the extension for the metafile filename. * meta_plist - Identifier of the meta file access property list * raw_len - Length of raw _ext * raw_ext - Name of the extension for the raw file filename. * raw_plist - Identifier of the raw file access property list - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * March 9, 2001 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_fapl_split_c(hid_t_f *prp_id, int_f* meta_len, _fcd meta_ext, hid_t_f* meta_plist, int_f* raw_len, _fcd raw_ext, hid_t_f * raw_plist) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1277,26 +1559,35 @@ DONE: #ifdef NO_SUCH_F90_FUNCTION -/*---------------------------------------------------------------------------- - * Name: h5pget_fapl_split_c - * Purpose: Call H5Pget_fapl_split to determine whether the file access +/****if* H5Pf/h5pget_fapl_split_c + * NAME + * h5pget_fapl_split_c + * PURPOSE + * Call H5Pget_fapl_split to determine whether the file access * property list is set to the split driver - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * meta_ext_size - Number of characters of the meta file extension * to be copied to the meta_ext buffer * raw_ext_size - Number of characters of the raw file extension * to be copied to the raw_ext buffer - *Outputs: meta_ext - Name of the extension for the metafile filename. + *OUTPUT + * meta_ext - Name of the extension for the metafile filename. * meta_plist - Identifier of the meta file access property list * raw_ext - Name of the extension for the raw file filename. * raw_plist - Identifier of the raw file access property list - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * March 9 , 2001 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_fapl_split_c(hid_t_f *prp_id, size_t_f* meta_ext_size , _fcd meta_ext, hid_t_f* meta_plist, size_t_f* raw_ext_size, _fcd raw_ext, hid_t_f * raw_plist) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1331,20 +1622,28 @@ nh5pget_fapl_split_c(hid_t_f *prp_id, size_t_f* meta_ext_size , _fcd meta_ext, h } #endif /*NO_SUCH_F90_FUNCTION*/ -/*---------------------------------------------------------------------------- - * Name: h5pset_gc_references_c - * Purpose: Call H5Pset_gc_references to set garbage +/****if* H5Pf/h5pset_gc_references_c + * NAME + * h5pset_gc_references_c + * PURPOSE + * Call H5Pset_gc_references to set garbage * collecting references flag - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * gc_reference - flag for garbage collecting references * for the file - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_gc_references_c (hid_t_f *prp_id, int_f* gc_references) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1363,20 +1662,28 @@ nh5pset_gc_references_c (hid_t_f *prp_id, int_f* gc_references) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_gc_references_c - * Purpose: Call H5Pget_gc_references to set garbage +/****if* H5Pf/h5pget_gc_references_c + * NAME + * h5pget_gc_references_c + * PURPOSE + * Call H5Pget_gc_references to set garbage * collecting references flag - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * Outputs gc_reference - flag for garbage collecting references * for the file - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_gc_references_c (hid_t_f *prp_id, int_f* gc_references) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1393,19 +1700,27 @@ nh5pget_gc_references_c (hid_t_f *prp_id, int_f* gc_references) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_layout_c - * Purpose: Call H5Pset_layout to the type of storage used +/****if* H5Pf/h5pset_layout_c + * NAME + * h5pset_layout_c + * PURPOSE + * Call H5Pset_layout to the type of storage used * store the raw data for a dataset - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * layout - Type of storage layout for raw data. - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_layout_c (hid_t_f *prp_id, int_f* layout) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1423,19 +1738,28 @@ nh5pset_layout_c (hid_t_f *prp_id, int_f* layout) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_layout_c - * Purpose: Call H5Pget_layout to the type of storage used +/****if* H5Pf/h5pget_layout_c + * NAME + * h5pget_layout_c + * PURPOSE + * Call H5Pget_layout to the type of storage used * store the raw data for a dataset - * Inputs: prp_id - property list identifier - * Outputs: layout - Type of storage layout for raw data. - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * INPUTS + * prp_id - property list identifier + * OUTPUTS + * layout - Type of storage layout for raw data. + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_layout_c (hid_t_f *prp_id, int_f* layout) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1451,22 +1775,30 @@ nh5pget_layout_c (hid_t_f *prp_id, int_f* layout) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_filter_c - * Purpose: Call H5Pset_filter to add a filter to the filter pipeline. - * Inputs: prp_id - property list identifier +/****if* H5Pf/h5pset_filter_c + * NAME + * h5pset_filter_c + * PURPOSE + * Call H5Pset_filter to add a filter to the filter pipeline. + * INPUTS + * prp_id - property list identifier * filter - Filter to be added to the pipeline. * flags - Bit vector specifying certain general * properties of the filter. * cd_nelmts - Number of elements in cd_values. * cd_values - Auxiliary data for the filter. - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Wednesday, February 23, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_filter_c (hid_t_f *prp_id, int_f* filter, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values ) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1499,19 +1831,26 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_nfilters_c - * Purpose: Call H5Pget_nfilters to get the number of filters - * in the pipeline - * Inputs: prp_id - property list identifier - * Outputs: nfilters - number of filters defined in the filter pipline - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Friday, February 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5Pf/h5pget_nfilters_c + * NAME + * h5pget_nfilters_c + * PURPOSE + * Call H5Pget_nfilters to get the number of filters + * in the pipeline + * INPUTS + * prp_id - property list identifier + * OUTPUTS + * nfilters - number of filters defined in the filter pipline + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su + * Friday, February 25, 2000 + * SOURCE +*/ int_f nh5pget_nfilters_c (hid_t_f *prp_id, int_f* nfilters) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1554,9 +1893,10 @@ nh5pget_nfilters_c (hid_t_f *prp_id, int_f* nfilters) *---------------------------------------------------------------------------*/ int_f nh5pget_filter_c(hid_t_f *prp_id, int_f* filter_number, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values, size_t_f *namelen, _fcd name, int_f* filter_id) +/******/ { unsigned int c_flags; - size_t c_cd_nelmts; + size_t c_cd_nelmts = 0; H5Z_filter_t c_filter; unsigned int *c_cd_values = NULL; char *c_name = NULL; @@ -1595,23 +1935,31 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_external_c - * Purpose: Call H5Pset_external to add an external file to the +/****if* H5Pf/h5pset_external_c + * NAME + * h5pset_external_c + * PURPOSE + * Call H5Pset_external to add an external file to the * list of external files. - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * name - Name of an external file * namelen - length of name * offset - Offset, in bytes, from the beginning of the file * to the location in the file where the data starts. * bytes - Number of bytes reserved in the file for the data. - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Wednesday, February 23, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_external_c (hid_t_f *prp_id, _fcd name, int_f* namelen, int_f* offset, hsize_t_f*bytes) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1642,19 +1990,28 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_external_count_c - * Purpose: Call H5Pget_external_count to get the number of external +/****if* H5Pf/h5pget_external_count_c + * NAME + * h5pget_external_count_c + * PURPOSE + * Call H5Pget_external_count to get the number of external * files for the specified dataset. - * Inputs: prp_id - property list identifier - * Outputs: count - number of external files - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * INPUTS + * prp_id - property list identifier + * OUTPUTS + * count - number of external files + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_external_count_c (hid_t_f *prp_id, int_f* count) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1670,23 +2027,32 @@ nh5pget_external_count_c (hid_t_f *prp_id, int_f* count) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_external_c - * Purpose: Call H5Pget_external to get nformation about an external file. - * Inputs: prp_id - property list identifier - * name_size - length of name - * idx - External file index. - *Outputs: name - Name of an external file - * offset - Offset, in bytes, from the beginning of the file - * to the location in the file where the data starts. - * bytes - Number of bytes reserved in the file for the data. - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Wednesday, February 23, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5Pf/h5pget_external_c + * NAME + * h5pget_external_c + * PURPOSE + * Call H5Pget_external to get nformation about an external file. + * INPUTS + * prp_id - property list identifier + * name_size - length of name + * idx - External file index. + *OUTPUT + * name - Name of an external file + * offset - Offset, in bytes, from the beginning of the file + * to the location in the file where the data starts. + * bytes - Number of bytes reserved in the file for the data. + * RETURNS + * on success, -1 on failure + * AUTHOR + * Xiangyang Su + * Wednesday, February 23, 2000 + * HISTORY + * + * SOURCE +*/ int_f nh5pget_external_c(hid_t_f *prp_id, int_f *idx, size_t_f* name_size, _fcd name, int_f* offset, hsize_t_f*bytes) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1727,22 +2093,30 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_btree_ratios_c - * Purpose: Call H5Pset_btree_ratios to set B-tree split ratios for B-tree split ratios for a dataset transfer property list. a +/****if* H5Pf/h5pset_btree_ratios_c + * NAME + * h5pset_btree_ratios_c + * PURPOSE + * Call H5Pset_btree_ratios to set B-tree split ratios for B-tree split ratios for a dataset transfer property list. a * dataset transfer property list. - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * left - The B-tree split ratio for left-most nodes. * middle - The B-tree split ratio for all other nodes * right - The B-tree split ratio for right-most nodes * and lone nodes. - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: Changed the type of the last three parameters from double to real_f - *---------------------------------------------------------------------------*/ + * HISTORY + * Changed the type of the last three parameters from double to real_f + * SOURCE +*/ int_f nh5pset_btree_ratios_c(hid_t_f *prp_id, real_f* left, real_f* middle, real_f* right) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1764,22 +2138,30 @@ nh5pset_btree_ratios_c(hid_t_f *prp_id, real_f* left, real_f* middle, real_f* ri return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_btree_ratios_c - * Purpose: Call H5Pget_btree_ratios to Gets B-tree split ratios +/****if* H5Pf/h5pget_btree_ratios_c + * NAME + * h5pget_btree_ratios_c + * PURPOSE + * Call H5Pget_btree_ratios to Gets B-tree split ratios * for a dataset transfer property list. - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * left - The B-tree split ratio for left-most nodes. * middle - The B-tree split ratio for all other nodes * right - The B-tree split ratio for right-most nodes * and lone nodes. - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, February 25, 2000 - * Modifications: Changed the type of the last three parameters from double to real_f - *---------------------------------------------------------------------------*/ + * HISTORY + * Changed the type of the last three parameters from double to real_f + * SOURCE +*/ int_f nh5pget_btree_ratios_c(hid_t_f *prp_id, real_f* left, real_f* middle, real_f* right) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1798,24 +2180,33 @@ nh5pget_btree_ratios_c(hid_t_f *prp_id, real_f* left, real_f* middle, real_f* ri ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_fclose_degree_c - * Purpose: Call H5Pget_fclose_degree to determine file close behavior - * Inputs: fapl_id - file access identifier - * Outputs: +/****if* H5Pf/h5pget_fclose_degree_c + * NAME + * h5pget_fclose_degree_c + * PURPOSE + * Call H5Pget_fclose_degree to determine file close behavior + * INPUTS + * fapl_id - file access identifier + * OUTPUTS + * * degree - possible values are: * H5F_CLOSE_DEFAULT * H5F_CLOSE_WEAK * H5F_CLOSE_SEMI * H5F_CLOSE_STRONG - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, September 26, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_fclose_degree_c ( hid_t_f *fapl_id , int_f *degree) +/******/ { int ret_value = -1; hid_t c_fapl_id; @@ -1829,23 +2220,31 @@ nh5pget_fclose_degree_c ( hid_t_f *fapl_id , int_f *degree) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_fclose_degree_c - * Purpose: Call H5Pset_fclose_degree to set file close behavior - * Inputs: fapl_id - file access identifier +/****if* H5Pf/h5pset_fclose_degree_c + * NAME + * h5pset_fclose_degree_c + * PURPOSE + * Call H5Pset_fclose_degree to set file close behavior + * INPUTS + * fapl_id - file access identifier * degree - possible values are: * H5F_CLOSE_DEFAULT * H5F_CLOSE_WEAK * H5F_CLOSE_SEMI * H5F_CLOSE_STRONG - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, September 26, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_fclose_degree_c ( hid_t_f *fapl_id , int_f *degree) +/******/ { int ret_value = -1; hid_t c_fapl_id; @@ -1859,20 +2258,29 @@ nh5pset_fclose_degree_c ( hid_t_f *fapl_id , int_f *degree) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_buffer_c - * Purpose: Call H5Pset_buffer to set size of conversion buffer - * Inputs: prp_id - t`dataset trasfer property list identifier +/****if* H5Pf/h5pset_buffer_c + * NAME + * h5pset_buffer_c + * PURPOSE + * Call H5Pset_buffer to set size of conversion buffer + * INPUTS + * prp_id - t`dataset trasfer property list identifier * size - size of the buffer - * Outputs: NONE - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * NONE + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, October 2, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_buffer_c ( hid_t_f *prp_id , hsize_t_f *size) +/******/ { int ret_value = 0; hid_t c_prp_id; @@ -1884,19 +2292,28 @@ nh5pset_buffer_c ( hid_t_f *prp_id , hsize_t_f *size) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_buffer_c - * Purpose: Call H5Pget_buffer to get size of conversion buffer - * Inputs: prp_id - t`dataset trasfer property list identifier - * Outputs: size - size of conversion buffer - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Pf/h5pget_buffer_c + * NAME + * h5pget_buffer_c + * PURPOSE + * Call H5Pget_buffer to get size of conversion buffer + * INPUTS + * prp_id - t`dataset trasfer property list identifier + * OUTPUTS + * size - size of conversion buffer + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, October 2, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_buffer_c ( hid_t_f *prp_id , hsize_t_f *size) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1909,19 +2326,28 @@ nh5pget_buffer_c ( hid_t_f *prp_id , hsize_t_f *size) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pfill_value_defined_c - * Purpose: Call H5Pfill_value_defined to check if fill value is defined - * Inputs: prp_id - dataset creation property list identifier - * Outputs: flag - fill value status flag - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Pf/h5pfill_value_defined_c + * NAME + * h5pfill_value_defined_c + * PURPOSE + * Call H5Pfill_value_defined to check if fill value is defined + * INPUTS + * prp_id - dataset creation property list identifier + * OUTPUTS + * flag - fill value status flag + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Friday, October 4, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pfill_value_defined_c ( hid_t_f *prp_id , int_f *flag) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1933,20 +2359,29 @@ nh5pfill_value_defined_c ( hid_t_f *prp_id , int_f *flag) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_alloc_time_c - * Purpose: Call H5Pget_alloc_time to get space allocation +/****if* H5Pf/h5pget_alloc_time_c + * NAME + * h5pget_alloc_time_c + * PURPOSE + * Call H5Pget_alloc_time to get space allocation * time for dataset during creation - * Inputs: prp_id - dataset creation property list identifier - * Outputs: flag - allocation time flag - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * INPUTS + * prp_id - dataset creation property list identifier + * OUTPUTS + * flag - allocation time flag + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Friday, October 4, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_alloc_time_c ( hid_t_f *prp_id , int_f *flag) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1958,20 +2393,28 @@ nh5pget_alloc_time_c ( hid_t_f *prp_id , int_f *flag) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_alloc_time_c - * Purpose: Call H5Pset_alloc_time to get space allocation +/****if* H5Pf/h5pset_alloc_time_c + * NAME + * h5pset_alloc_time_c + * PURPOSE + * Call H5Pset_alloc_time to get space allocation * time for dataset during creation - * Inputs: prp_id - dataset creation property list identifier + * INPUTS + * prp_id - dataset creation property list identifier * flag - allocation time flag - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Friday, October 4, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_alloc_time_c ( hid_t_f *prp_id , int_f *flag) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -1983,20 +2426,29 @@ nh5pset_alloc_time_c ( hid_t_f *prp_id , int_f *flag) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_fill_time_c - * Purpose: Call H5Pget_fill_time to get fill value writing +/****if* H5Pf/h5pget_fill_time_c + * NAME + * h5pget_fill_time_c + * PURPOSE + * Call H5Pget_fill_time to get fill value writing * time for dataset during creation - * Inputs: prp_id - dataset creation property list identifier - * Outputs: flag - fill value writing time flag - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * INPUTS + * prp_id - dataset creation property list identifier + * OUTPUTS + * flag - fill value writing time flag + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Friday, October 4, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_fill_time_c ( hid_t_f *prp_id , int_f *flag) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -2008,20 +2460,28 @@ nh5pget_fill_time_c ( hid_t_f *prp_id , int_f *flag) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_fill_time_c - * Purpose: Call H5Pset_fill_time to set fill value writing +/****if* H5Pf/h5pset_fill_time_c + * NAME + * h5pset_fill_time_c + * PURPOSE + * Call H5Pset_fill_time to set fill value writing * time for dataset during creation - * Inputs: prp_id - dataset creation property list identifier + * INPUTS + * prp_id - dataset creation property list identifier * flag - fill value writing time flag - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Friday, October 4, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_fill_time_c ( hid_t_f *prp_id , int_f *flag) +/******/ { int ret_value = -1; hid_t c_prp_id; @@ -2033,20 +2493,29 @@ nh5pset_fill_time_c ( hid_t_f *prp_id , int_f *flag) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_meta_block_size_c - * Purpose: Call H5Pset_meta_block_size to set size of metadata block - * Inputs: prp_id - file access property list identifier +/****if* H5Pf/h5pset_meta_block_size_c + * NAME + * h5pset_meta_block_size_c + * PURPOSE + * Call H5Pset_meta_block_size to set size of metadata block + * INPUTS + * prp_id - file access property list identifier * size - size of the metadata block - * Outputs: NONE - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * NONE + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, October 7, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_meta_block_size_c ( hid_t_f *prp_id , hsize_t_f *size) +/******/ { int ret_value = 0; hid_t c_prp_id; @@ -2057,20 +2526,29 @@ nh5pset_meta_block_size_c ( hid_t_f *prp_id , hsize_t_f *size) if ( H5Pset_meta_block_size(c_prp_id, c_size) < 0 ) ret_value = -1; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_meta_block_size_c - * Purpose: Call H5Pget_meta_block_size to get size of metadata block - * Inputs: prp_id - file access property list identifier - * Outputs: +/****if* H5Pf/h5pget_meta_block_size_c + * NAME + * h5pget_meta_block_size_c + * PURPOSE + * Call H5Pget_meta_block_size to get size of metadata block + * INPUTS + * prp_id - file access property list identifier + * OUTPUTS + * * size - size of the metadata block - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, October 7, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_meta_block_size_c ( hid_t_f *prp_id , hsize_t_f *size) +/******/ { int ret_value = 0; hid_t c_prp_id; @@ -2081,20 +2559,29 @@ nh5pget_meta_block_size_c ( hid_t_f *prp_id , hsize_t_f *size) *size = (hsize_t_f)c_size; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_sieve_buf_size_c - * Purpose: Call H5Pset_sieve_buf_size to set size of datasieve buffer - * Inputs: prp_id - file access property list identifier +/****if* H5Pf/h5pset_sieve_buf_size_c + * NAME + * h5pset_sieve_buf_size_c + * PURPOSE + * Call H5Pset_sieve_buf_size to set size of datasieve buffer + * INPUTS + * prp_id - file access property list identifier * size - size of the buffer - * Outputs: NONE - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * NONE + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, October 7, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_sieve_buf_size_c ( hid_t_f *prp_id , size_t_f *size) +/******/ { int ret_value = 0; hid_t c_prp_id; @@ -2105,20 +2592,29 @@ nh5pset_sieve_buf_size_c ( hid_t_f *prp_id , size_t_f *size) if ( H5Pset_sieve_buf_size(c_prp_id, c_size) < 0 ) ret_value = -1; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_sieve_buf_size_c - * Purpose: Call H5Pget_sieve_buf_size to get size of datasieve buffer - * Inputs: prp_id - file access property list identifier - * Outputs: +/****if* H5Pf/h5pget_sieve_buf_size_c + * NAME + * h5pget_sieve_buf_size_c + * PURPOSE + * Call H5Pget_sieve_buf_size to get size of datasieve buffer + * INPUTS + * prp_id - file access property list identifier + * OUTPUTS + * * size - size of the buffer - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, October 7, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_sieve_buf_size_c ( hid_t_f *prp_id , size_t_f *size) +/******/ { int ret_value = 0; hid_t c_prp_id; @@ -2129,20 +2625,29 @@ nh5pget_sieve_buf_size_c ( hid_t_f *prp_id , size_t_f *size) *size = (size_t_f)c_size; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_small_data_block_size_c - * Purpose: Call H5Pset_small_data_block_size to set size of raw small data block - * Inputs: prp_id - file access property list identifier +/****if* H5Pf/h5pset_small_data_block_size_c + * NAME + * h5pset_small_data_block_size_c + * PURPOSE + * Call H5Pset_small_data_block_size to set size of raw small data block + * INPUTS + * prp_id - file access property list identifier * size - size of the block - * Outputs: NONE - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * NONE + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, October 7, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_small_data_block_size_c ( hid_t_f *prp_id , hsize_t_f *size) +/******/ { int ret_value = 0; hid_t c_prp_id; @@ -2153,20 +2658,29 @@ nh5pset_small_data_block_size_c ( hid_t_f *prp_id , hsize_t_f *size) if ( H5Pset_small_data_block_size(c_prp_id, c_size) < 0 ) ret_value = -1; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_small_data_block_size_c - * Purpose: Call H5Pget_small_data_block_size to get size of raw small data block - * Inputs: prp_id - file access property list identifier - * Outputs: +/****if* H5Pf/h5pget_small_data_block_size_c + * NAME + * h5pget_small_data_block_size_c + * PURPOSE + * Call H5Pget_small_data_block_size to get size of raw small data block + * INPUTS + * prp_id - file access property list identifier + * OUTPUTS + * * size - size of the block - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, October 7, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_small_data_block_size_c ( hid_t_f *prp_id , hsize_t_f *size) +/******/ { int ret_value = 0; hid_t c_prp_id; @@ -2177,20 +2691,29 @@ nh5pget_small_data_block_size_c ( hid_t_f *prp_id , hsize_t_f *size) *size = (hsize_t_f)c_size; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_hyper_vector_size_c - * Purpose: Call H5Pset_hyper_vector_size to set size of the hyper vector - * Inputs: prp_id - dataset transfer property list identifier +/****if* H5Pf/h5pset_hyper_vector_size_c + * NAME + * h5pset_hyper_vector_size_c + * PURPOSE + * Call H5Pset_hyper_vector_size to set size of the hyper vector + * INPUTS + * prp_id - dataset transfer property list identifier * size - size of the vector - * Outputs: NONE - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * NONE + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, October 7, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_hyper_vector_size_c ( hid_t_f *prp_id , size_t_f *size) +/******/ { int ret_value = 0; hid_t c_prp_id; @@ -2201,20 +2724,29 @@ nh5pset_hyper_vector_size_c ( hid_t_f *prp_id , size_t_f *size) if ( H5Pset_hyper_vector_size(c_prp_id, c_size) < 0 ) ret_value = -1; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_hyper_vector_size_c - * Purpose: Call H5Pget_hyper_vector_size to get size of the hyper vector - * Inputs: prp_id - dataset transfer property list identifier - * Outputs: +/****if* H5Pf/h5pget_hyper_vector_size_c + * NAME + * h5pget_hyper_vector_size_c + * PURPOSE + * Call H5Pget_hyper_vector_size to get size of the hyper vector + * INPUTS + * prp_id - dataset transfer property list identifier + * OUTPUTS + * * size - size of the vector - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, October 7, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_hyper_vector_size_c ( hid_t_f *prp_id , size_t_f *size) +/******/ { int ret_value = 0; hid_t c_prp_id; @@ -2225,34 +2757,48 @@ nh5pget_hyper_vector_size_c ( hid_t_f *prp_id , size_t_f *size) *size = (size_t_f)c_size; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pcreate_class_c - * Purpose: Call H5Pcreate_class ito create a new property class - * Inputs: parent - property list class identifier + +/****if* H5Pf/h5pcreate_class_c + * NAME + * h5pcreate_class_c + * PURPOSE + * Call H5Pcreate_class ito create a new property class + * INPUTS + * parent - property list class identifier * name - name of the new class * name_len - lenght of the "name" buffer - * Outputs: cls - new class identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ -int_f -nh5pcreate_class_c(hid_t_f *parent, _fcd name, int_f *name_len, hid_t_f *cls) + * OUTPUTS + * class - new class identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * October 11, 2002 + * + * HISTORY + * Added the callback parameters (FORTRAN 2003 compilers only) + * M. Scot Breitenfeld, July 3, 2008 + * SOURCE +*/ +int_f +nh5pcreate_class_c(hid_t_f *parent, _fcd name, int_f *name_len, hid_t_f *cls, + H5P_cls_create_func_t create, void *create_data, + H5P_cls_copy_func_t copy, void *copy_data, + H5P_cls_close_func_t close, void *close_data) +/******/ { int ret_value = -1; - hid_t c_parent; hid_t c_class; char* c_name; c_name = (char *)HD5f2cstring(name, (size_t)*name_len); if (c_name == NULL) goto DONE; - c_parent = (hid_t)*parent; /* * Call H5Pcreate_class function. */ - c_class = H5Pcreate_class(c_parent, c_name, NULL, NULL,NULL,NULL,NULL,NULL); + c_class = H5Pcreate_class((hid_t)*parent, c_name, create, create_data, copy, copy_data, close, close_data); + if (c_class < 0) goto DONE; *cls = (hid_t_f)c_class; ret_value = 0; @@ -2262,21 +2808,30 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pregisterc_c - * Purpose: Call h5pregister_c to registers a permanent property - * Inputs: cls - property list class identifier + +/****if* H5Pf/h5pregisterc_c + * NAME + * h5pregisterc_c + * PURPOSE + * Call h5pregister_c to registers a permanent property + * INPUTS + * class - property list class identifier * name - name of the new property * name_len - length of the "name" buffer * size - property size * value - property value of character type - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * October 11, 2002 + * HISTORY + * + * SOURCE +*/ int_f nh5pregisterc_c(hid_t_f *cls, _fcd name, int_f *name_len, size_t_f *size, _fcd value, int_f UNUSED *value_len) +/******/ { int ret_value = -1; @@ -2287,21 +2842,29 @@ nh5pregisterc_c(hid_t_f *cls, _fcd name, int_f *name_len, size_t_f *size, _fcd v return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pregister_c - * Purpose: Call H5Pregister2 to registers a permanent property - * Inputs: cls - property list class identifier +/****if* H5Pf/h5pregister_c + * NAME + * h5pregister_c + * PURPOSE + * Call H5Pregister2 to registers a permanent property + * INPUTS + * class - property list class identifier * name - name of the new property * name_len - length of the "name" buffer * size - property size * value - property value - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pregister_c(hid_t_f *cls, _fcd name, int_f *name_len, size_t_f *size, void UNUSED *value) +/******/ { char* c_name = NULL; int_f ret_value = -1; @@ -2349,21 +2912,29 @@ nh5pregister_double_c(hid_t_f *cls, _fcd name, int_f *name_len, size_t_f *size, return nh5pregister_c(cls, name, name_len, size, value); } -/*---------------------------------------------------------------------------- - * Name: h5pinsertc_c - * Purpose: Call h5pinsert_c to register a temporary property - * Inputs: plist - property list identifier +/****if* H5Pf/h5pinsertc_c + * NAME + * h5pinsertc_c + * PURPOSE + * Call h5pinsert_c to register a temporary property + * INPUTS + * plist - property list identifier * name - name of the new property * name_len - length of the "name" buffer * size - property size * value - property value of character type - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pinsertc_c(hid_t_f *plist, _fcd name, int_f *name_len, size_t_f *size, _fcd value, int_f UNUSED *value_len) +/******/ { int_f ret_value = -1; @@ -2374,21 +2945,29 @@ nh5pinsertc_c(hid_t_f *plist, _fcd name, int_f *name_len, size_t_f *size, _fcd v return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pinsert_c - * Purpose: Call H5Pinsert2 to iinsert a temporary property - * Inputs: plist - property list class identifier +/****if* H5Pf/h5pinsert_c + * NAME + * h5pinsert_c + * PURPOSE + * Call H5Pinsert2 to iinsert a temporary property + * INPUTS + * plist - property list class identifier * name - name of the new property * name_len - length of the "name" buffer * size - property size * value - property value - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pinsert_c(hid_t_f *plist, _fcd name, int_f *name_len, size_t_f *size, void UNUSED *value) +/******/ { char* c_name = NULL; int_f ret_value = -1; @@ -2436,20 +3015,28 @@ nh5pinsert_double_c(hid_t_f *plist, _fcd name, int_f *name_len, size_t_f *size, return nh5pinsert_c(plist, name, name_len, size, value); } -/*---------------------------------------------------------------------------- - * Name: h5pexist_c - * Purpose: Call H5Pexist to querie whether a property name exists +/****if* H5Pf/h5pexist_c + * NAME + * h5pexist_c + * PURPOSE + * Call H5Pexist to querie whether a property name exists * in a property list or class - * Inputs: plist - property list or property class identifier + * INPUTS + * plist - property list or property class identifier * name - name of the new property * name_len - length of the "name" buffer - * Returns: nonnegative on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * nonnegative on success, -1 on failure + * AUTHOR + * Elena Pourmal * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pexist_c(hid_t_f *cls, _fcd name, int_f *name_len) +/******/ { int_f ret_value = -1; hid_t c_class; @@ -2470,19 +3057,27 @@ DONE: if(c_name != NULL) HDfree(c_name); return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pisa_class_c - * Purpose: Call H5Pisa_class to querie whether a property is a +/****if* H5Pf/h5pisa_class_c + * NAME + * h5pisa_class_c + * PURPOSE + * Call H5Pisa_class to querie whether a property is a * member of a class - * Inputs: plist - property list identifier + * INPUTS + * plist - property list identifier * cls - property class identifier - * Returns: nonnegative on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * nonnegative on success, -1 on failure + * AUTHOR + * Elena Pourmal * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pisa_class_c(hid_t_f *plist, hid_t_f *cls) +/******/ { int_f ret_value = -1; hid_t c_class; @@ -2499,20 +3094,29 @@ nh5pisa_class_c(hid_t_f *plist, hid_t_f *cls) ret_value = status; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_size_c - * Purpose: Call H5Pget_size to querie the size of the property - * Inputs: plist - property list to query +/****if* H5Pf/h5pget_size_c + * NAME + * h5pget_size_c + * PURPOSE + * Call H5Pget_size to querie the size of the property + * INPUTS + * plist - property list to query * name - name of the property * name_len - length of the "name" buffer - * Outputs: size - size of the property in bytes - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * size - size of the property in bytes + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_size_c(hid_t_f *plist, _fcd name, int_f *name_len, size_t_f *size) +/******/ { int_f ret_value = -1; hid_t c_plist; @@ -2534,18 +3138,27 @@ DONE: if(c_name != NULL) HDfree(c_name); return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_nprops_c - * Purpose: Call H5Pget_nporps to get number of the properties in the list - * Inputs: plist - property list to query - * Outputs: nprops - number of properties in the list - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Pf/h5pget_nprops_c + * NAME + * h5pget_nprops_c + * PURPOSE + * Call H5Pget_nporps to get number of the properties in the list + * INPUTS + * plist - property list to query + * OUTPUTS + * nprops - number of properties in the list + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_nprops_c(hid_t_f *plist, size_t_f *nprops) +/******/ { int_f ret_value = -1; hid_t c_plist; @@ -2562,19 +3175,28 @@ nh5pget_nprops_c(hid_t_f *plist, size_t_f *nprops) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_class_parent_c - * Purpose: Call H5Pget_class_parent to get the parent class of +/****if* H5Pf/h5pget_class_parent_c + * NAME + * h5pget_class_parent_c + * PURPOSE + * Call H5Pget_class_parent to get the parent class of * a genereic property class - * Inputs: prp_id - property list to query - * Outputs: parent_id - parent classs identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * INPUTS + * prp_id - property list to query + * OUTPUTS + * parent_id - parent classs identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_class_parent_c(hid_t_f *prp_id, hid_t_f *parent_id) +/******/ { int_f ret_value = -1; hid_t c_prp_id; @@ -2592,21 +3214,29 @@ nh5pget_class_parent_c(hid_t_f *prp_id, hid_t_f *parent_id) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pcopy_prop_c - * Purpose: Call H5Pcopy_prop to copy a property from one list or +/****if* H5Pf/h5pcopy_prop_c + * NAME + * h5pcopy_prop_c + * PURPOSE + * Call H5Pcopy_prop to copy a property from one list or * class to another - * Inputs: dst_id - identifier of destination property list + * INPUTS + * dst_id - identifier of destination property list * src_id - identifier of source property list * name - name of the property * name_len - length of the "name" buffer - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pcopy_prop_c(hid_t_f *dst_id, hid_t_f *src_id, _fcd name, int_f *name_len) +/******/ { int_f ret_value = -1; hid_t c_dst_id, c_src_id; @@ -2627,19 +3257,27 @@ DONE: if(c_name != NULL) HDfree(c_name); return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5premove_c - * Purpose: Call H5Premove to remove a property from a list - * Inputs: plid - identifier of property list +/****if* H5Pf/h5premove_c + * NAME + * h5premove_c + * PURPOSE + * Call H5Premove to remove a property from a list + * INPUTS + * plid - identifier of property list * name - name of the property to remove * name_len - length of the "name" buffer - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5premove_c(hid_t_f *plid, _fcd name, int_f *name_len) +/******/ { int_f ret_value = -1; hid_t c_plid; @@ -2659,19 +3297,27 @@ DONE: if(c_name != NULL) HDfree(c_name); return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5punregister_c - * Purpose: Call H5Punregister to remove a property from a property class - * Inputs: cls - identifier of property class +/****if* H5Pf/h5punregister_c + * NAME + * h5punregister_c + * PURPOSE + * Call H5Punregister to remove a property from a property class + * INPUTS + * cls - identifier of property class * name - name of the property to unregister * name_len - length of the "name" buffer - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * October 11, 2002 + * HISTORY + * + * SOURCE +*/ int_f nh5punregister_c(hid_t_f *cls, _fcd name, int_f *name_len) +/******/ { int_f ret_value = -1; hid_t c_class; @@ -2691,17 +3337,25 @@ DONE: if(c_name != NULL) HDfree(c_name); return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pclose_class_c - * Purpose: Call H5Pclose_class to close property class - * Inputs: cls - identifier of property class to close - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5Pf/h5pclose_class_c + * NAME + * h5pclose_class_c + * PURPOSE + * Call H5Pclose_class to close property class + * INPUTS + * class - identifier of property class to close + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * October 11, 2002 + * HISTORY + * + * SOURCE +*/ int_f nh5pclose_class_c(hid_t_f *cls) +/******/ { int_f ret_value = -1; hid_t c_class; @@ -2714,19 +3368,27 @@ nh5pclose_class_c(hid_t_f *cls) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_class_name_c - * Purpose: Call H5Pget_class_name to get property class name - * Inputs: cls - identifier of property class +/****if* H5Pf/h5pget_class_name_c + * NAME + * h5pget_class_name_c + * PURPOSE + * Call H5Pget_class_name to get property class name + * INPUTS + * cls - identifier of property class * name - ibuffer to retrieve name in * name_len - length of the "name" buffer - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * October 11, 2002 + * HISTORY + * + * SOURCE +*/ int_f nh5pget_class_name_c(hid_t_f *cls, _fcd name, int_f *name_len) +/******/ { int_f ret_value = -1; char *c_name = NULL; /* Buffer to hold C string */ @@ -2753,21 +3415,28 @@ DONE: HDfree(c_name); return ret_value; } - -/*---------------------------------------------------------------------------- - * Name: h5pset_c - * Purpose: Call h5setc_c to set property with the character string value - * Inputs: plist - property list identifier +/****if* H5Pf/h5psetc_c + * NAME + * h5psetc_c + * PURPOSE + * Call h5setc_c to set property with the character string value + * INPUTS + * plist - property list identifier * name - name of property * name_len - length of the "name" buffer * value - property value of character type - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5psetc_c(hid_t_f *plist, _fcd name, int_f *name_len, _fcd value, int_f UNUSED *value_len) +/******/ { int_f ret_value = -1; @@ -2778,33 +3447,39 @@ nh5psetc_c(hid_t_f *plist, _fcd name, int_f *name_len, _fcd value, int_f UNUSED return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_c - * Purpose: Call H5Pset to set property value - * Inputs: plist - property list class identifier +/****if* H5Pf/h5pset_c + * NAME + * h5pset_c + * PURPOSE + * Call H5Pset to set property value + * INPUTS + * plist - property list class identifier * name - name of the new property * name_len - length of the "name" buffer * value - property value - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * October 11, 2002 + * HISTORY + * + * SOURCE +*/ int_f -nh5pset_c(hid_t_f *plist, _fcd name, int_f *name_len, void UNUSED *value) +nh5pset_c(hid_t_f *plist, _fcd name, int_f *name_len, void *value) +/******/ { int_f ret_value = -1; - hid_t c_plist; char* c_name; c_name = (char *)HD5f2cstring(name, (size_t)*name_len); if (c_name == NULL) goto DONE; - c_plist = (hid_t)*plist; /* * Call H5Pset function. */ - if( H5Pset(c_plist, c_name, value) <0) goto DONE; + if( H5Pset((hid_t)*plist, c_name, value) <0) goto DONE; ret_value = 0; DONE: @@ -2838,20 +3513,28 @@ nh5pset_double_c(hid_t_f *plist, _fcd name, int_f *name_len, void *value) */ return nh5pset_c(plist, name, name_len, value); } -/*---------------------------------------------------------------------------- - * Name: h5pgetc_c - * Purpose: Call h5set_c to set property with the character string value - * Inputs: plist - property list identifier +/****if* H5Pf/h5pgetc_c + * NAME + * h5pgetc_c + * PURPOSE + * Call h5set_c to set property with the character string value + * INPUTS + * plist - property list identifier * name - name of property * name_len - length of the "name" buffer * Output: value - property value of character type - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pgetc_c(hid_t_f *plist, _fcd name, int_f *name_len, _fcd value, int_f UNUSED *value_len) +/******/ { int_f ret_value = -1; @@ -2862,33 +3545,39 @@ nh5pgetc_c(hid_t_f *plist, _fcd name, int_f *name_len, _fcd value, int_f UNUSED return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_c - * Purpose: Call H5Pget to set property value - * Inputs: plist - property list class identifier +/****if* H5Pf/h5pget_c + * NAME + * h5pget_c + * PURPOSE + * Call H5Pget to set property value + * INPUTS + * plist - property list class identifier * name - name of the new property * name_len - length of the "name" buffer * Output: value - property value - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * October 11, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f -nh5pget_c(hid_t_f *plist, _fcd name, int_f *name_len, void UNUSED *value) +nh5pget_c(hid_t_f *plist, _fcd name, int_f *name_len, void *value) +/******/ { int_f ret_value = -1; - hid_t c_plist; char* c_name; c_name = (char *)HD5f2cstring(name, (size_t)*name_len); if (c_name == NULL) goto DONE; - c_plist = (hid_t)*plist; /* * Call H5Pset function. */ - if( H5Pget(c_plist, c_name, value) <0) goto DONE; + if( H5Pget((hid_t)*plist, c_name, value) <0) goto DONE; ret_value = 0; DONE: @@ -2924,19 +3613,27 @@ nh5pget_double_c(hid_t_f *plist, _fcd name, int_f *name_len, void *value) } -/*---------------------------------------------------------------------------- - * Name: h5pset_shuffle_c - * Purpose: Call H5Pset_shuffle - * Inputs: prp_id - property list identifier +/****if* H5Pf/h5pset_shuffle_c + * NAME + * h5pset_shuffle_c + * PURPOSE + * Call H5Pset_shuffle + * INPUTS + * prp_id - property list identifier * type_size - size of the datatype in bytes - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, March 12, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_shuffle_c ( hid_t_f *prp_id ) +/******/ { int_f ret_value = 0; hid_t c_prp_id; @@ -2947,18 +3644,26 @@ nh5pset_shuffle_c ( hid_t_f *prp_id ) if ( status < 0 ) ret_value = -1; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_fletcher32_c - * Purpose: Call H5Pset_fletcher32 to enable EDC - * Inputs: prp_id - dataset creation property list identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Pf/h5pset_fletcher32_c + * NAME + * h5pset_fletcher32_c + * PURPOSE + * Call H5Pset_fletcher32 to enable EDC + * INPUTS + * prp_id - dataset creation property list identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, March 13, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_fletcher32_c ( hid_t_f *prp_id ) +/******/ { int_f ret_value = 0; hid_t c_prp_id; @@ -2970,19 +3675,27 @@ nh5pset_fletcher32_c ( hid_t_f *prp_id ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_edc_check_c - * Purpose: Call H5Pset_edc_check to enable EDC - * Inputs: prp_id - dataset transfer property list identifier +/****if* H5Pf/h5pset_edc_check_c + * NAME + * h5pset_edc_check_c + * PURPOSE + * Call H5Pset_edc_check to enable EDC + * INPUTS + * prp_id - dataset transfer property list identifier * flag - EDC flag - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, March 13, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_edc_check_c ( hid_t_f *prp_id, int_f *flag ) +/******/ { int_f ret_value = 0; hid_t c_prp_id; @@ -2996,19 +3709,27 @@ nh5pset_edc_check_c ( hid_t_f *prp_id, int_f *flag ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_edc_check_c - * Purpose: Call H5Pget_edc_check to query EDC - * Inputs: prp_id - dataset transfer property list identifier +/****if* H5Pf/h5pget_edc_check_c + * NAME + * h5pget_edc_check_c + * PURPOSE + * Call H5Pget_edc_check to query EDC + * INPUTS + * prp_id - dataset transfer property list identifier * Outouts: flag - EDC flag - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, March 13, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_edc_check_c ( hid_t_f *prp_id, int_f *flag ) +/******/ { int_f ret_value = 0; hid_t c_prp_id; @@ -3020,19 +3741,27 @@ nh5pget_edc_check_c ( hid_t_f *prp_id, int_f *flag ) *flag = (int_f)c_flag; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_family_offset_c - * Purpose: Call H5Pset_family_offset to set and offset for family driver - * Inputs: prp_id - property list identifier +/****if* H5Pf/h5pset_family_offset_c + * NAME + * h5pset_family_offset_c + * PURPOSE + * Call H5Pset_family_offset to set and offset for family driver + * INPUTS + * prp_id - property list identifier * offset - offset in bytes - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, 19 March 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_family_offset_c ( hid_t_f *prp_id , hsize_t_f *offset) +/******/ { int_f ret_value = 0; hid_t c_prp_id; @@ -3046,25 +3775,33 @@ nh5pset_family_offset_c ( hid_t_f *prp_id , hsize_t_f *offset) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_fapl_multi_c - * Purpose: Call H5Pset_fapl_multi to set multi file dirver - * Inputs: prp_id - file_creation property list identifier +/****if* H5Pf/h5pset_fapl_multi_c + * NAME + * h5pset_fapl_multi_c + * PURPOSE + * Call H5Pset_fapl_multi to set multi file dirver + * INPUTS + * prp_id - file_creation property list identifier * mem_map - memory mapping array * memb_fapl - property list for each memory usage type * memb_name - array with members names * len - array with the lenght of each name * lenmax - lenght of the name a sdeclared in Fortran * flag - flag allowing partila access when one of the files is missing - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday 24, March 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f /*nh5pset_fapl_multi_c ( hid_t_f *prp_id , int_f *memb_map, hid_t_f *memb_fapl, _fcd memb_name, int_f *len, int_f *lenmax, haddr_t_f *memb_addr, int_f *flag) */ nh5pset_fapl_multi_c ( hid_t_f *prp_id , int_f *memb_map, hid_t_f *memb_fapl, _fcd memb_name, int_f *len, int_f *lenmax, real_f *memb_addr, int_f *flag) +/******/ { int_f ret_value = -1; hid_t c_prp_id; @@ -3126,18 +3863,26 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_fapl_multi_sc - * Purpose: Call H5Pset_fapl_multi to set multi file dirver - * Inputs: prp_id - file_creation property list identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Pf/h5pset_fapl_multi_sc + * NAME + * h5pset_fapl_multi_sc + * PURPOSE + * Call H5Pset_fapl_multi to set multi file dirver + * INPUTS + * prp_id - file_creation property list identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * March 31 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_fapl_multi_sc ( hid_t_f *prp_id , int_f *flag) +/******/ { int_f ret_value = -1; hid_t c_prp_id; @@ -3155,24 +3900,33 @@ nh5pset_fapl_multi_sc ( hid_t_f *prp_id , int_f *flag) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_fapl_multi_c - * Purpose: Call H5Pget_fapl_multi to set multi file dirver - * Inputs: prp_id - file_creation property list identifier +/****if* H5Pf/h5pget_fapl_multi_c + * NAME + * h5pget_fapl_multi_c + * PURPOSE + * Call H5Pget_fapl_multi to set multi file dirver + * INPUTS + * prp_id - file_creation property list identifier * lenmax - lenght of the name a sdeclared in Fortran - * Outputs: memb_map - memory mapping array + * OUTPUTS + * memb_map - memory mapping array * memb_fapl - property list for each memory usage type * memb_name - array with members names * len - array with the lenght of each name * flag - flag allowing partila access when one of the files is missing - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday 24, March 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_fapl_multi_c ( hid_t_f *prp_id , int_f *memb_map, hid_t_f *memb_fapl, _fcd memb_name, int_f *len, int_f *lenmax, real_f *memb_addr, int_f *flag, int_f *maxlen_out) +/******/ { int_f ret_value = -1; hid_t c_prp_id; @@ -3230,20 +3984,28 @@ HD5packFstring(tmp, _fcdtocp(memb_name), (size_t)(c_lenmax*H5FD_MEM_NTYPES)); return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_szip_c - * Purpose: Call H5Pset_szip to set szip compression - * Inputs: prp_id - dataset creation property list identifier +/****if* H5Pf/h5pset_szip_c + * NAME + * h5pset_szip_c + * PURPOSE + * Call H5Pset_szip to set szip compression + * INPUTS + * prp_id - dataset creation property list identifier * options_mask * pixels_per_block -szip compression parameters - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * April 8 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_szip_c ( hid_t_f *prp_id , int_f *options_mask, int_f *pixels_per_block) +/******/ { int_f ret_value = -1; hid_t c_prp_id; @@ -3263,19 +4025,28 @@ nh5pset_szip_c ( hid_t_f *prp_id , int_f *options_mask, int_f *pixels_per_block) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pall_filters_avail_c - * Purpose: Call H5Pall_filters_avail - * Inputs: prp_id - dataset creation property list identifier - * Outputs: status - logical flag - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Pf/h5pall_filters_avail_c + * NAME + * h5pall_filters_avail_c + * PURPOSE + * Call H5Pall_filters_avail + * INPUTS + * prp_id - dataset creation property list identifier + * OUTPUTS + * status - logical flag + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * April 10 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pall_filters_avail_c ( hid_t_f *prp_id , int_f *status) +/******/ { int_f ret_value = -1; hid_t c_prp_id; @@ -3295,25 +4066,34 @@ nh5pall_filters_avail_c ( hid_t_f *prp_id , int_f *status) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_filter_by_id_c - * Purpose: Call H5Pget_filter_by_id2 to get information about a filter +/****if* H5Pf/h5pget_filter_by_id_c + * NAME + * h5pget_filter_by_id_c + * PURPOSE + * Call H5Pget_filter_by_id2 to get information about a filter * in a pipeline - * Inputs: prp_id - property list identifier + * INPUTS + * prp_id - property list identifier * filter_id - filter id * namelen - Anticipated number of characters in name. - *Outputs: flags - Bit vector specifying certain general + *OUTPUT + * flags - Bit vector specifying certain general * properties of the filter. * cd_nelmts - Number of elements in cd_value * cd_values - Auxiliary data for the filter. * name - Name of the filter - * Returns: 0 on success, -1 on failure - * Programmer: Elena POurmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena POurmal * April 10, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_filter_by_id_c(hid_t_f *prp_id, int_f* filter_id, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values, size_t_f *namelen, _fcd name) +/******/ { unsigned int c_flags; size_t c_cd_nelmts = (size_t)*cd_nelmts; @@ -3353,22 +4133,30 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pmodify_filter_c - * Purpose: Call H5Pmodify_filter to modify a filter - * Inputs: prp_id - property list identifier +/****if* H5Pf/h5pmodify_filter_c + * NAME + * h5pmodify_filter_c + * PURPOSE + * Call H5Pmodify_filter to modify a filter + * INPUTS + * prp_id - property list identifier * filter - Filter to be modified * flags - Bit vector specifying certain general * properties of the filter. * cd_nelmts - Number of elements in cd_values. * cd_values - Auxiliary data for the filter. - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * April 10 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pmodify_filter_c (hid_t_f *prp_id, int_f* filter, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values ) +/******/ { int_f ret_value = -1; hid_t c_prp_id; @@ -3401,18 +4189,26 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5premove_filter_c - * Purpose: Call H5Premove_filter to delete one or more filters - * Inputs: prp_id - property list identifier +/****if* H5Pf/h5premove_filter_c + * NAME + * h5premove_filter_c + * PURPOSE + * Call H5Premove_filter to delete one or more filters + * INPUTS + * prp_id - property list identifier * filter - Filter to be deleted - * Returns: 0 on success, -1 on failure - * Programmer: Quincey Koziol + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Quincey Koziol * January 27 2004 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5premove_filter_c (hid_t_f *prp_id, int_f* filter) +/******/ { int_f ret_value = -1; hid_t c_prp_id; @@ -3431,20 +4227,28 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_attr_phase_change_c - * Purpose: Calls H5Pget_attr_phase_change +/****if* H5Pf/h5pget_attr_phase_change_c + * NAME + * h5pget_attr_phase_change_c + * PURPOSE + * Calls H5Pget_attr_phase_change * - * Inputs: ocpl_id - Object (dataset or group) creation property list identifier + * INPUTS + * ocpl_id - Object (dataset or group) creation property list identifier * Outputs max_compact - Maximum number of attributes to be stored in compact storage * min_dense - Minimum number of attributes to be stored in dense storage - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_attr_phase_change_c(hid_t_f *ocpl_id, int_f *max_compact, int_f *min_dense ) +/******/ { int ret_value = -1; hid_t c_ocpl_id; @@ -3464,19 +4268,27 @@ nh5pget_attr_phase_change_c(hid_t_f *ocpl_id, int_f *max_compact, int_f *min_den return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_attr_creation_order_c - * Purpose: Calls H5Ppset_attr_creation_order +/****if* H5Pf/h5pset_attr_creation_order_c + * NAME + * h5pset_attr_creation_order_c + * PURPOSE + * Calls H5Ppset_attr_creation_order * - * Inputs: ocpl_id - Object (dataset or group) creation property list identifier + * INPUTS + * ocpl_id - Object (dataset or group) creation property list identifier * Outputs crt_order_flags - Flags specifying whether to track and index attribute creation order - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_attr_creation_order_c(hid_t_f *ocpl_id, int_f *crt_order_flags ) +/******/ { int ret_value = -1; unsigned c_crt_order_flags; @@ -3493,23 +4305,32 @@ nh5pset_attr_creation_order_c(hid_t_f *ocpl_id, int_f *crt_order_flags ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_shared_mesg_nindexes_c - * Purpose: Calls h5pset_shared_mesg_nindexes +/****if* H5Pf/h5pset_shared_mesg_nindexes_c + * NAME + * h5pset_shared_mesg_nindexes_c + * PURPOSE + * Calls h5pset_shared_mesg_nindexes + * + * INPUTS * - * Inputs: * plist_id - file creation property list * nindexes - Number of shared object header message indexes * available in files created WITH this property list * - * Outputs: - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * OUTPUTS + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_shared_mesg_nindexes_c(hid_t_f *plist_id, int_f *nindexes ) +/******/ { int ret_value = -1; hid_t c_plist_id; @@ -3527,24 +4348,33 @@ nh5pset_shared_mesg_nindexes_c(hid_t_f *plist_id, int_f *nindexes ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_shared_mesg_index_c - * Purpose: Calls H5Pset_shared_mesg_index +/****if* H5Pf/h5pset_shared_mesg_index_c + * NAME + * h5pset_shared_mesg_index_c + * PURPOSE + * Calls H5Pset_shared_mesg_index + * + * INPUTS * - * Inputs: * fcpl_id - File creation property list identifier. * index_num - Index being configured. * mesg_type_flags - Types of messages that should be stored in this index. * min_mesg_size - Minimum message size. * - * Outputs: - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * OUTPUTS + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * January, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_shared_mesg_index_c(hid_t_f *fcpl_id, int_f *index_num, int_f *mesg_type_flags, int_f *min_mesg_size) +/******/ { int ret_value = -1; herr_t ret; @@ -3558,22 +4388,31 @@ nh5pset_shared_mesg_index_c(hid_t_f *fcpl_id, int_f *index_num, int_f *mesg_type return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_attr_creation_order_c - * Purpose: Calls H5Pget_attr_creation_order +/****if* H5Pf/h5pget_attr_creation_order_c + * NAME + * h5pget_attr_creation_order_c + * PURPOSE + * Calls H5Pget_attr_creation_order + * + * INPUTS * - * Inputs: * ocpl_id - Object (group or dataset) creation property list identifier - * Outputs: + * OUTPUTS + * * crt_order_flags - Flags specifying whether to track and index attribute creation order * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_attr_creation_order_c(hid_t_f *ocpl_id, int_f *crt_order_flags) +/******/ { int ret_value = -1; herr_t ret; @@ -3591,23 +4430,32 @@ nh5pget_attr_creation_order_c(hid_t_f *ocpl_id, int_f *crt_order_flags) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_libver_bounds_c - * Purpose: Calls H5Pset_libver_bounds +/****if* H5Pf/h5pset_libver_bounds_c + * NAME + * h5pset_libver_bounds_c + * PURPOSE + * Calls H5Pset_libver_bounds + * + * INPUTS * - * Inputs: * fapl_id - File access property list identifier * low - The earliest version of the library that will be used for writing objects. * high - The latest version of the library that will be used for writing objects. - * Outputs: + * OUTPUTS * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February 18, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_libver_bounds_c(hid_t_f *fapl_id, int_f *low, int_f *high ) +/******/ { int ret_value = -1; herr_t ret; @@ -3622,20 +4470,29 @@ nh5pset_libver_bounds_c(hid_t_f *fapl_id, int_f *low, int_f *high ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_link_creation_order_c - * Purpose: Calls H5Pset_link_creation_order +/****if* H5Pf/h5pset_link_creation_order_c + * NAME + * h5pset_link_creation_order_c + * PURPOSE + * Calls H5Pset_link_creation_order * - * Inputs: gcpl_id - Group creation property list identifier + * INPUTS + * gcpl_id - Group creation property list identifier * crt_order_flags - Creation order flag(s) - * Outputs: - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * OUTPUTS + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February 18, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_link_creation_order_c(hid_t_f *gcpl_id, int_f *crt_order_flags ) +/******/ { int ret_value = -1; herr_t ret; @@ -3649,20 +4506,28 @@ nh5pset_link_creation_order_c(hid_t_f *gcpl_id, int_f *crt_order_flags ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_link_phase_change_c - * Purpose: Calls H5Pget_link_phase_change +/****if* H5Pf/h5pget_link_phase_change_c + * NAME + * h5pget_link_phase_change_c + * PURPOSE + * Calls H5Pget_link_phase_change * - * Inputs: gcpl_id - Group creation property list identifier + * INPUTS + * gcpl_id - Group creation property list identifier * Outputs max_compact - Maximum number of attributes to be stored in compact storage * min_dense - Minimum number of attributes to be stored in dense storage - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February 20, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_link_phase_change_c(hid_t_f *gcpl_id, int_f *max_compact, int_f *min_dense ) +/******/ { int ret_value = -1; unsigned c_max_compact; @@ -3681,21 +4546,30 @@ nh5pget_link_phase_change_c(hid_t_f *gcpl_id, int_f *max_compact, int_f *min_den return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_obj_track_times_c - * Purpose: Call H5Pget_obj_track_times +/****if* H5Pf/h5pget_obj_track_times_c + * NAME + * h5pget_obj_track_times_c + * PURPOSE + * Call H5Pget_obj_track_times + * + * INPUTS + * plist_id - property list id + * OUTPUTS * - * Inputs: plist_id - property list id - * Outputs: * flag - TRUE/FALSE flag - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February 22, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_obj_track_times_c(hid_t_f *plist_id, int_f *flag) +/******/ { int ret_value = -1; hbool_t c_track_times=0; @@ -3714,20 +4588,28 @@ nh5pget_obj_track_times_c(hid_t_f *plist_id, int_f *flag) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_obj_track_times_c - * Purpose: Call H5Pset_obj_track_times +/****if* H5Pf/h5pset_obj_track_times_c + * NAME + * h5pset_obj_track_times_c + * PURPOSE + * Call H5Pset_obj_track_times * - * Inputs: plist_id - property list id + * INPUTS + * plist_id - property list id * flag - TRUE/FALSE flag - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February 22, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_obj_track_times_c(hid_t_f *plist_id, int_f *flag) +/******/ { int ret_value = -1; hbool_t c_track_times; @@ -3746,23 +4628,31 @@ nh5pset_obj_track_times_c(hid_t_f *plist_id, int_f *flag) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_create_inter_group_c - * Purpose: Calls H5Pset_create_intermediate_group +/****if* H5Pf/h5pset_create_inter_group_c + * NAME + * h5pset_create_inter_group_c + * PURPOSE + * Calls H5Pset_create_intermediate_group + * + * INPUTS * - * Inputs: * lcpl_id - Link creation property list identifier * crt_intermed_group - crt_intermed_group specifying whether * to create intermediate groups upon the * creation of an object - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * February 22, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_create_inter_group_c(hid_t_f *lcpl_id, int_f *crt_intermed_group) +/******/ { int ret_value = -1; herr_t ret; @@ -3777,22 +4667,31 @@ nh5pset_create_inter_group_c(hid_t_f *lcpl_id, int_f *crt_intermed_group) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_link_creation_order_c - * Purpose: Calls H5Pget_link_creation_order +/****if* H5Pf/h5pget_link_creation_order_c + * NAME + * h5pget_link_creation_order_c + * PURPOSE + * Calls H5Pget_link_creation_order + * + * INPUTS * - * Inputs: * gcpl_id - Group creation property list identifier - * Outputs: + * OUTPUTS + * * crt_order_flags - Creation order flag(s) * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 3, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_link_creation_order_c(hid_t_f *gcpl_id, int_f *crt_order_flags) +/******/ { int ret_value = -1; herr_t ret; @@ -3811,24 +4710,33 @@ nh5pget_link_creation_order_c(hid_t_f *gcpl_id, int_f *crt_order_flags) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_char_encoding_c - * Purpose: Calls H5Pset_char_encoding +/****if* H5Pf/h5pset_char_encoding_c + * NAME + * h5pset_char_encoding_c + * PURPOSE + * Calls H5Pset_char_encoding + * + * INPUTS * - * Inputs: * plist_id - Property list identifier * encoding - String encoding character set: * H5T_CSET_ASCII_F -> US ASCII * H5T_CSET_UTF8_F -> UTF-8 Unicode encoding - * Outputs: NONE + * OUTPUTS + * NONE * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 3, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_char_encoding_c(hid_t_f *plist_id, int_f *encoding) +/******/ { int ret_value = -1; herr_t ret; @@ -3844,24 +4752,33 @@ nh5pset_char_encoding_c(hid_t_f *plist_id, int_f *encoding) } -/*---------------------------------------------------------------------------- - * Name: h5pget_char_encoding_c - * Purpose: Calls H5Pget_char_encoding +/****if* H5Pf/h5pget_char_encoding_c + * NAME + * h5pget_char_encoding_c + * PURPOSE + * Calls H5Pget_char_encoding + * + * INPUTS * - * Inputs: * plist_id - Property list identifier - * Outputs: + * OUTPUTS + * * encoding - Encoding character set: * H5T_CSET_ASCII_F -> US ASCII * H5T_CSET_UTF8_F -> UTF-8 Unicode encoding * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 3, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_char_encoding_c(hid_t_f *plist_id, int_f *encoding) +/******/ { int ret_value = -1; H5T_cset_t c_encoding; @@ -3878,24 +4795,33 @@ nh5pget_char_encoding_c(hid_t_f *plist_id, int_f *encoding) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_copy_object_c - * Purpose: Calls H5Pset_copy_object +/****if* H5Pf/h5pset_copy_object_c + * NAME + * h5pset_copy_object_c + * PURPOSE + * Calls H5Pset_copy_object + * + * INPUTS * - * Inputs: * ocp_plist_id - Object copy property list identifier * copy_options - Copy option(s) to be set * - * Outputs: + * OUTPUTS + * * NONE * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 3, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_copy_object_c(hid_t_f *ocp_plist_id, int_f *copy_options) +/******/ { int ret_value = -1; herr_t ret; @@ -3909,23 +4835,32 @@ nh5pset_copy_object_c(hid_t_f *ocp_plist_id, int_f *copy_options) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_copy_object_c - * Purpose: Calls H5Pget_copy_object +/****if* H5Pf/h5pget_copy_object_c + * NAME + * h5pget_copy_object_c + * PURPOSE + * Calls H5Pget_copy_object + * + * INPUTS * - * Inputs: * ocp_plist_id - Object copy property list identifier * - * Outputs: + * OUTPUTS + * * copy_options - Copy option(s) to be get * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 3, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_copy_object_c(hid_t_f *ocp_plist_id, int_f *copy_options) +/******/ { int ret_value = -1; unsigned c_copy_options; @@ -3942,26 +4877,34 @@ nh5pget_copy_object_c(hid_t_f *ocp_plist_id, int_f *copy_options) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_data_transform_c - * Purpose: Calls H5Pget_data_transform - * Inputs: +/****if* H5Pf/h5pget_data_transform_c + * NAME + * h5pget_data_transform_c + * PURPOSE + * Calls H5Pget_data_transform + * INPUTS + * * prp_id - property list identifier to query * expression_len - buffer size transorm expression * * Output: * expression - buffer to hold transform expression * - * Returns: + * RETURNS + * * Success: 0 * Failure: -1 * - * Programmer: M.S. Breitenfeld + * AUTHOR + * M. Scot Breitenfeld * March 19, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_data_transform_c(hid_t_f *plist_id, _fcd expression, int_f *expression_len, size_t_f *size) +/******/ { char *c_expression = NULL; /* Buffer to hold C string */ size_t c_expression_len; @@ -3998,26 +4941,34 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_data_transform_c - * Purpose: Calls H5Pset_data_transform - * Inputs: +/****if* H5Pf/h5pset_data_transform_c + * NAME + * h5pset_data_transform_c + * PURPOSE + * Calls H5Pset_data_transform + * INPUTS + * * prp_id - property list identifier to query * expression - buffer to hold transform expression * expression_len - buffer size transorm expression * * Output: * - * Returns: + * RETURNS + * * Success: 0 * Failure: -1 * - * Programmer: M.S. Breitenfeld + * AUTHOR + * M. Scot Breitenfeld * March 19, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_data_transform_c(hid_t_f *plist_id, _fcd expression, int_f *expression_len) +/******/ { char* c_expression = NULL; /* Buffer to hold C string */ int_f ret_value = 0; /* Return value */ @@ -4041,24 +4992,32 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_local_heap_size_hint_c - * Purpose: Calls H5Pget_local_heap_size_hint - * Inputs: +/****if* H5Pf/h5pget_local_heap_size_hint_c + * NAME + * h5pget_local_heap_size_hint_c + * PURPOSE + * Calls H5Pget_local_heap_size_hint + * INPUTS + * * gcpl_id - Group creation property list identifier * * Output: * size_hint - Hint for size of local heap - * Returns: + * RETURNS + * * Success: 0 * Failure: -1 * - * Programmer: M.S. Breitenfeld + * AUTHOR + * M. Scot Breitenfeld * March 21, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_local_heap_size_hint_c(hid_t_f *gcpl_id, size_t_f *size_hint) +/******/ { int_f ret_value = -1; /* Return value */ size_t c_size_hint; @@ -4074,25 +5033,33 @@ nh5pget_local_heap_size_hint_c(hid_t_f *gcpl_id, size_t_f *size_hint) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_est_link_info_c - * Purpose: Calls H5Pget_est_link_info - * Inputs: +/****if* H5Pf/h5pget_est_link_info_c + * NAME + * h5pget_est_link_info_c + * PURPOSE + * Calls H5Pget_est_link_info + * INPUTS + * * gcpl_id - Group creation property list identifier * * Output: * est_num_entries - Estimated number of links to be inserted into group * est_name_len - Estimated average length of link names - * Returns: + * RETURNS + * * Success: 0 * Failure: -1 * - * Programmer: M.S. Breitenfeld + * AUTHOR + * M. Scot Breitenfeld * March 21, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_est_link_info_c(hid_t_f *gcpl_id, int_f *est_num_entries, int_f *est_name_len) +/******/ { int_f ret_value = -1; /* Return value */ unsigned c_est_num_entries; @@ -4111,25 +5078,33 @@ nh5pget_est_link_info_c(hid_t_f *gcpl_id, int_f *est_num_entries, int_f *est_nam return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_local_heap_size_hint_c - * Purpose: Calls H5Pset_local_heap_size_hint - * Inputs: +/****if* H5Pf/h5pset_local_heap_size_hint_c + * NAME + * h5pset_local_heap_size_hint_c + * PURPOSE + * Calls H5Pset_local_heap_size_hint + * INPUTS + * * gcpl_id - Group creation property list identifier * size_hint - Hint for size of local heap * * Output: * - * Returns: + * RETURNS + * * Success: 0 * Failure: -1 * - * Programmer: M.S. Breitenfeld + * AUTHOR + * M. Scot Breitenfeld * March 21, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_local_heap_size_hint_c(hid_t_f *gcpl_id, size_t_f *size_hint) +/******/ { int_f ret_value = -1; /* Return value */ herr_t ret; @@ -4143,25 +5118,33 @@ nh5pset_local_heap_size_hint_c(hid_t_f *gcpl_id, size_t_f *size_hint) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_est_link_info_c - * Purpose: Calls H5Pset_est_link_info - * Inputs: +/****if* H5Pf/h5pset_est_link_info_c + * NAME + * h5pset_est_link_info_c + * PURPOSE + * Calls H5Pset_est_link_info + * INPUTS + * * gcpl_id - Group creation property list identifier * est_num_entries - Estimated number of links to be inserted into group * est_name_len - Estimated average length of link names * * Output: - * Returns: + * RETURNS + * * Success: 0 * Failure: -1 * - * Programmer: M.S. Breitenfeld + * AUTHOR + * M. Scot Breitenfeld * March 21, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_est_link_info_c(hid_t_f *gcpl_id, int_f *est_num_entries, int_f *est_name_len) +/******/ { int_f ret_value = -1; /* Return value */ herr_t ret; @@ -4175,21 +5158,29 @@ nh5pset_est_link_info_c(hid_t_f *gcpl_id, int_f *est_num_entries, int_f *est_nam return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_link_phase_change_c - * Purpose: Calls H5Pset_link_phase_change +/****if* H5Pf/h5pset_link_phase_change_c + * NAME + * h5pset_link_phase_change_c + * PURPOSE + * Calls H5Pset_link_phase_change * - * Inputs: gcpl_id - Group creation property list identifier + * INPUTS + * gcpl_id - Group creation property list identifier * max_compact - Maximum number of attributes to be stored in compact storage * min_dense - Minimum number of attributes to be stored in dense storage * Outputs - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 21, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_link_phase_change_c(hid_t_f *gcpl_id, int_f *max_compact, int_f *min_dense ) +/******/ { int ret_value = -1; herr_t ret; @@ -4204,23 +5195,31 @@ nh5pset_link_phase_change_c(hid_t_f *gcpl_id, int_f *max_compact, int_f *min_den return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_fapl_direct_c - * Purpose: Calls H5Pset_fapl_direct +/****if* H5Pf/h5pset_fapl_direct_c + * NAME + * h5pset_fapl_direct_c + * PURPOSE + * Calls H5Pset_fapl_direct + * + * INPUTS * - * Inputs: * fapl_id - File access property list identifier * alignment - Required memory alignment boundary * block_size - File system block size * cbuf_size - Copy buffer size * Outputs - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 21, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_fapl_direct_c(hid_t_f UNUSED *fapl_id, size_t_f UNUSED *alignment, size_t_f UNUSED *block_size, size_t_f UNUSED *cbuf_size) +/******/ { int ret_value = -1; #ifdef H5_HAVE_DIRECT @@ -4238,23 +5237,32 @@ nh5pset_fapl_direct_c(hid_t_f UNUSED *fapl_id, size_t_f UNUSED *alignment, size_ return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_fapl_direct_c - * Purpose: Calls H5Pget_fapl_direct +/****if* H5Pf/h5pget_fapl_direct_c + * NAME + * h5pget_fapl_direct_c + * PURPOSE + * Calls H5Pget_fapl_direct + * + * INPUTS * - * Inputs: * fapl_id - File access property list identifier - * Outputs: + * OUTPUTS + * * alignment - Required memory alignment boundary * block_size - File system block size * cbuf_size - Copy buffer size - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 21, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_fapl_direct_c(hid_t_f UNUSED *fapl_id, size_t_f UNUSED *alignment, size_t_f UNUSED *block_size, size_t_f UNUSED *cbuf_size) +/******/ { int ret_value = -1; #ifdef H5_HAVE_DIRECT @@ -4278,21 +5286,30 @@ nh5pget_fapl_direct_c(hid_t_f UNUSED *fapl_id, size_t_f UNUSED *alignment, size_ return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_attr_phase_change_c - * Purpose: Calls H5Pset_attr_phase_change +/****if* H5Pf/h5pset_attr_phase_change_c + * NAME + * h5pset_attr_phase_change_c + * PURPOSE + * Calls H5Pset_attr_phase_change * - * Inputs: ocpl_id - Object (dataset or group) creation property list identifier + * INPUTS + * ocpl_id - Object (dataset or group) creation property list identifier * max_compact - Maximum number of attributes to be stored in compact storage * min_dense - Minimum number of attributes to be stored in dense storage - * Outputs: - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * OUTPUTS + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 21, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_attr_phase_change_c(hid_t_f *ocpl_id, int_f *max_compact, int_f *min_dense ) +/******/ { int ret_value = -1; herr_t ret; @@ -4306,19 +5323,28 @@ nh5pset_attr_phase_change_c(hid_t_f *ocpl_id, int_f *max_compact, int_f *min_den return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_nbit_c - * Purpose: Calls H5Pset_nbit +/****if* H5Pf/h5pset_nbit_c + * NAME + * h5pset_nbit_c + * PURPOSE + * Calls H5Pset_nbit * - * Inputs: plist_id - Dataset creation property list identifier - * Outputs: - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * INPUTS + * plist_id - Dataset creation property list identifier + * OUTPUTS + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 21, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pset_nbit_c(hid_t_f *plist_id ) +/******/ { int ret_value = -1; herr_t ret; @@ -4331,22 +5357,27 @@ nh5pset_nbit_c(hid_t_f *plist_id ) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_scaleoffset_c - * Purpose: Calls H5Pset_scaleoffset +/****if* H5Pf/h5pset_scaleoffset_c + * NAME + * h5pset_scaleoffset_c + * PURPOSE + * Calls H5Pset_scaleoffset * - * Inputs: - * plist_id - Dataset creation property list identifier - * scale_type - Flag indicating compression method. + * INPUTS + * plist_id - Dataset creation property list identifier + * scale_type - Flag indicating compression method. * scale_factor - Parameter related to scale. - * Outputs: - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * March 21, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * March 21, 2008 + * SOURCE +*/ int_f nh5pset_scaleoffset_c(hid_t_f *plist_id, int_f *scale_type, int_f *scale_factor ) +/******/ { int ret_value = -1; H5Z_SO_scale_type_t c_scale_type; @@ -4363,21 +5394,25 @@ nh5pset_scaleoffset_c(hid_t_f *plist_id, int_f *scale_type, int_f *scale_factor return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pset_nlinks - * Purpose: Calls H5Pset_nlinks +/****if* H5Pf/h5pset_nlinks + * NAME + * h5pset_nlinks + * PURPOSE + * Calls H5Pset_nlinks * - * Inputs: - * lapl_id - File access property list identifier - * nlinks - Maximum number of links to traverse - * Outputs: - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * March 24, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * INPUTS + * lapl_id - File access property list identifier + * nlinks - Maximum number of links to traverse + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * March 24, 2008 + * SOURCE +*/ int_f nh5pset_nlinks_c(hid_t_f *lapl_id, size_t_f *nlinks) +/******/ { int ret_value = -1; herr_t ret; @@ -4391,23 +5426,32 @@ nh5pset_nlinks_c(hid_t_f *lapl_id, size_t_f *nlinks) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_nlinks - * Purpose: Calls H5Pget_nlinks +/****if* H5Pf/h5pget_nlinks + * NAME + * h5pget_nlinks + * PURPOSE + * Calls H5Pget_nlinks + * + * INPUTS * - * Inputs: * lapl_id - File access property list identifier * - * Outputs: + * OUTPUTS + * * nlinks - Maximum number of links to traverse * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 24, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5pget_nlinks_c(hid_t_f *lapl_id, size_t_f *nlinks) +/******/ { int ret_value = -1; herr_t ret; @@ -4423,22 +5467,29 @@ nh5pget_nlinks_c(hid_t_f *lapl_id, size_t_f *nlinks) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5pget_create_inter_group_c - * Purpose: Calls H5Pget_create_intermediate_group +/****if* H5Pf/h5pget_create_inter_group_c + * NAME + * h5pget_create_inter_group_c + * PURPOSE + * Calls H5Pget_create_intermediate_group + * + * INPUTS * - * Inputs: * lcpl_id - Link creation property list identifier * crt_intermed_group - Specifying whether to create intermediate groups upon * the creation of an object - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * April 4, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ - + * HISTORY + * + * SOURCE +*/ int_f nh5pget_create_inter_group_c(hid_t_f *lcpl_id, int_f *crt_intermed_group) +/******/ { int ret_value = -1; herr_t ret; @@ -4466,7 +5517,7 @@ nh5pget_create_inter_group_c(hid_t_f *lcpl_id, int_f *crt_intermed_group) * rdcc_w0 - * * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * Programmer: M. Scot Breitenfeld * April 13, 2009 * Modifications: *---------------------------------------------------------------------------*/ @@ -4497,7 +5548,7 @@ nh5pset_chunk_cache_c(hid_t_f *dapl_id, size_t_f *rdcc_nslots, size_t_f *rdcc_nb * rdcc_w0 - * * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * Programmer: M. Scot Breitenfeld * April 13, 2009 * Modifications: *---------------------------------------------------------------------------*/ diff --git a/fortran/src/H5Pff.f90 b/fortran/src/H5Pff.f90 index 50aad81..a22b2e3 100644 --- a/fortran/src/H5Pff.f90 +++ b/fortran/src/H5Pff.f90 @@ -1,3 +1,14 @@ +!****h* ROBODoc/H5P (F90) +! +! NAME +! H5P_PROVISIONAL +! +! PURPOSE +! This file contains Fortran interfaces for H5P functions. It includes +! all the functions that are independent on whether the Fortran 2003 functions +! are enabled or disabled. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,1354 +24,1156 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! NOTES +! *** IMPORTANT *** +! If you add a new H5P function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +!***** + +MODULE H5P + + USE H5GLOBAL + + INTERFACE h5pset_fapl_multi_f + MODULE PROCEDURE h5pset_fapl_multi_l + MODULE PROCEDURE h5pset_fapl_multi_s + END INTERFACE + +CONTAINS + +!****s* H5P/h5pcreate_f +! NAME +! h5pcreate_f +! +! PURPOSE +! Creates a new property as an instance of a property +! list class. +! +! INPUTS +! class - type of the property class to be created. +! Possible values are: +! H5P_FILE_CREATE_F +! H5P_FILE_ACCESS_F +! H5P_DATASET_CREATE_F +! H5P_DATASET_XFER_F +! H5P_FILE_MOUNT_F +! OUTPUTS +! prp_id - property list identifier +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pcreate_f(class, prp_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: class ! The type of the property list + ! to be created. Possible values are: + ! H5P_FILE_CREATE_F + ! H5P_FILE_ACCESS_F + ! H5P_DATASET_CREATE_F + ! H5P_DATASET_XFER_F + ! H5P_FILE_MOUNT_F + INTEGER(HID_T), INTENT(OUT) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** +! INTEGER, EXTERNAL :: h5pcreate_c +! MS FORTRAN needs explicit interface for C functions called here. ! -! This file contains Fortran90 interfaces for H5P functions. -! - MODULE H5P - - USE H5GLOBAL - - INTERFACE h5pset_fill_value_f - MODULE PROCEDURE h5pset_fill_value_integer - MODULE PROCEDURE h5pset_fill_value_real - MODULE PROCEDURE h5pset_fill_value_char - END INTERFACE - - INTERFACE h5pget_fill_value_f - MODULE PROCEDURE h5pget_fill_value_integer - MODULE PROCEDURE h5pget_fill_value_real - MODULE PROCEDURE h5pget_fill_value_char - END INTERFACE - - INTERFACE h5pset_f - MODULE PROCEDURE h5pset_integer - MODULE PROCEDURE h5pset_real - MODULE PROCEDURE h5pset_char - END INTERFACE - - INTERFACE h5pget_f - MODULE PROCEDURE h5pget_integer - MODULE PROCEDURE h5pget_real - MODULE PROCEDURE h5pget_char - END INTERFACE - - INTERFACE h5pregister_f - MODULE PROCEDURE h5pregister_integer - MODULE PROCEDURE h5pregister_real - MODULE PROCEDURE h5pregister_char - END INTERFACE - - INTERFACE h5pinsert_f - MODULE PROCEDURE h5pinsert_integer - MODULE PROCEDURE h5pinsert_real - MODULE PROCEDURE h5pinsert_char - END INTERFACE - - INTERFACE h5pset_fapl_multi_f - MODULE PROCEDURE h5pset_fapl_multi_l - MODULE PROCEDURE h5pset_fapl_multi_s - END INTERFACE - - - CONTAINS - -!---------------------------------------------------------------------- -! Name: h5pcreate_f -! -! Purpose: Creates a new property as an instance of a property -! list class. -! -! Inputs: -! class - type of the property class to be created. -! Possible values are: -! H5P_FILE_CREATE_F -! H5P_FILE_ACCESS_F -! H5P_DATASET_CREATE_F -! H5P_DATASET_XFER_F -! H5P_FILE_MOUNT_F -! Outputs: -! prp_id - property list identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 + INTERFACE + INTEGER FUNCTION h5pcreate_c(class, prp_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PCREATE_C'::h5pcreate_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: class + INTEGER(HID_T), INTENT(OUT) :: prp_id + END FUNCTION h5pcreate_c + END INTERFACE + + hdferr = h5pcreate_c(class, prp_id) + END SUBROUTINE h5pcreate_f + +!****s* H5P/h5pset_preserve_f +! NAME +! h5pset_preserve_f ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 +! PURPOSE +! Sets the dataset transfer property list status to +! TRUE or FALSE for initializing compound datatype +! members during write/read operations. ! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5pcreate_f(class, prp_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: class ! The type of the property list - ! to be created. Possible values - ! are: - ! H5P_FILE_CREATE_F - ! H5P_FILE_ACCESS_F - ! H5P_DATASET_CREATE_F - ! H5P_DATASET_XFER_F - ! H5P_FILE_MOUNT_F - INTEGER(HID_T), INTENT(OUT) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5pcreate_c -! MS FORTRAN needs explicit interface for C functions called here. +! INPUTS +! prp_id - property list identifier +! flag - status flag ! - INTERFACE - INTEGER FUNCTION h5pcreate_c(class, prp_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PCREATE_C'::h5pcreate_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: class - INTEGER(HID_T), INTENT(OUT) :: prp_id - END FUNCTION h5pcreate_c - END INTERFACE - - hdferr = h5pcreate_c(class, prp_id) - END SUBROUTINE h5pcreate_f - -!---------------------------------------------------------------------- -! Name: h5pset_preserve_f -! -! Purpose: Sets the dataset transfer property list status to -! TRUE or FALSE for initializing compound datatype -! members during write/read operations. -! -! Inputs: -! prp_id - property list identifier -! flag - status flag -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! Datatype of the flag parameter is changed from -! INTEGER to LOGICAL -! June 4, 2003 +! OPTIONAL PARAMETERS +! NONE ! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pset_preserve_f(prp_id, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - LOGICAL, INTENT(IN) :: flag ! TRUE/FALSE flag to set the dataset +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Datatype of the flag parameter is changed from +! INTEGER to LOGICAL June 4, 2003 +! +! SOURCE + SUBROUTINE h5pset_preserve_f(prp_id, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + LOGICAL, INTENT(IN) :: flag ! TRUE/FALSE flag to set the dataset ! transfer property for partila writing/reading ! compound datatype - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: flag_c + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: flag_c ! INTEGER, EXTERNAL :: h5pset_preserve_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_preserve_c(prp_id, flag_c) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_PRESERVE_C'::h5pset_preserve_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER :: flag_c - END FUNCTION h5pset_preserve_c - END INTERFACE - flag_c = 0 - if(flag) flag_c = 1 - hdferr = h5pset_preserve_c(prp_id, flag_c) - END SUBROUTINE h5pset_preserve_f - -!---------------------------------------------------------------------- -! Name: h5pget_preserve_f -! -! Purpose: Checks status of the dataset transfer property list. -! -! Inputs: -! prp_id - property list identifier -! Outputs: -! flag - status flag -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! Datatype of the flag parameter is changed from -! INTEGER to LOGICAL -! June 4, 2003 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_preserve_f(prp_id, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - LOGICAL, INTENT(OUT) :: flag ! TRUE/FALSE flag. Shows status of the dataset's + INTERFACE + INTEGER FUNCTION h5pset_preserve_c(prp_id, flag_c) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_PRESERVE_C'::h5pset_preserve_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER :: flag_c + END FUNCTION h5pset_preserve_c + END INTERFACE + flag_c = 0 + IF(flag) flag_c = 1 + hdferr = h5pset_preserve_c(prp_id, flag_c) + END SUBROUTINE h5pset_preserve_f + +!****s* H5P/h5pget_preserve_f +! NAME +! h5pget_preserve_f +! +! PURPOSE +! Checks status of the dataset transfer property list. +! +! INPUTS +! prp_id - property list identifier +! +! OUTPUTS +! flag - status flag +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Datatype of the flag parameter is changed from +! INTEGER to LOGICAL +! June 4, 2003 +! +! SOURCE + SUBROUTINE h5pget_preserve_f(prp_id, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + LOGICAL, INTENT(OUT) :: flag ! TRUE/FALSE flag. Shows status of the dataset's ! transfer property for partial writing/reading ! compound datatype - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: flag_c + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: flag_c ! INTEGER, EXTERNAL :: h5pget_preserve_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_preserve_c(prp_id, flag_c) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_PRESERVE_C'::h5pget_preserve_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER :: flag_c - END FUNCTION h5pget_preserve_c - END INTERFACE - - hdferr = h5pget_preserve_c(prp_id, flag_c) - flag = .FALSE. - if(flag_c .eq. 1) flag = .TRUE. - END SUBROUTINE h5pget_preserve_f - -!---------------------------------------------------------------------- -! Name: h5pget_class_f -! -! Purpose: Returns the property list class for a property list. -! -! Inputs: -! prp_id - property list identifier -! Outputs: -! classtype - property list class -! Possible values are: -! H5P_ROOT_F -! H5P_FILE_CREATE_F -! H5P_FILE_ACCESS_F -! H5PE_DATASET_CREATE_F -! H5P_DATASET_XFER_F -! H5P_FILE_MOUNT_F -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 + INTERFACE + INTEGER FUNCTION h5pget_preserve_c(prp_id, flag_c) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_PRESERVE_C'::h5pget_preserve_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER :: flag_c + END FUNCTION h5pget_preserve_c + END INTERFACE + + hdferr = h5pget_preserve_c(prp_id, flag_c) + flag = .FALSE. + IF(flag_c .EQ. 1) flag = .TRUE. + END SUBROUTINE h5pget_preserve_f + +!****s* H5P/h5pget_class_f +! NAME +! h5pget_class_f +! +! PURPOSE +! Returns the property list class for a property list. +! +! INPUTS +! +! prp_id - property list identifier +! OUTPUTS +! +! classtype - property list class +! Possible values are: +! H5P_ROOT_F +! H5P_FILE_CREATE_F +! H5P_FILE_ACCESS_F +! H5PE_DATASET_CREATE_F +! H5P_DATASET_XFER_F +! H5P_FILE_MOUNT_F +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_class_f(prp_id, classtype, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: classtype ! The type of the property list + ! to be created. Possible values are: + ! H5P_ROOT_F + ! H5P_FILE_CREATE_F + ! H5P_FILE_ACCESS_F + ! H5PE_DATASET_CREATE_F + ! H5P_DATASET_XFER_F + ! H5P_FILE_MOUNT_F + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + +! INTEGER, EXTERNAL :: h5pget_class_c +! MS FORTRAN needs explicit interface for C functions called here. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 + INTERFACE + INTEGER FUNCTION h5pget_class_c(prp_id, classtype) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_CLASS_C'::h5pget_class_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: classtype + END FUNCTION h5pget_class_c + END INTERFACE + + hdferr = h5pget_class_c(prp_id, classtype) + END SUBROUTINE h5pget_class_f + +!****s* H5P/h5pcopy_f +! NAME +! h5pcopy_f ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_class_f(prp_id, classtype, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: classtype ! The type of the property list - ! to be created. Possible values - ! are: - ! H5P_ROOT_F - ! H5P_FILE_CREATE_F - ! H5P_FILE_ACCESS_F - ! H5PE_DATASET_CREATE_F - ! H5P_DATASET_XFER_F - ! H5P_FILE_MOUNT_F - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5pget_class_c -! MS FORTRAN needs explicit interface for C functions called here. +! PURPOSE +! Copies an existing property list to create a new +! property list ! - INTERFACE - INTEGER FUNCTION h5pget_class_c(prp_id, classtype) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_CLASS_C'::h5pget_class_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(OUT) :: classtype - END FUNCTION h5pget_class_c - END INTERFACE - - hdferr = h5pget_class_c(prp_id, classtype) - END SUBROUTINE h5pget_class_f - -!---------------------------------------------------------------------- -! Name: h5pcopy_f -! -! Purpose: Copies an existing property list to create a new -! property list -! -! Inputs: -! prp_id - property list identifier -! Outputs: -! new_prp_id - new property list identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 +! INPUTS +! prp_id - property list identifier +! OUTPUTS +! new_prp_id - new property list identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pcopy_f(prp_id, new_prp_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HID_T), INTENT(OUT) :: new_prp_id - ! Identifier of property list - ! copy - INTEGER, INTENT(OUT) :: hdferr ! Error code +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pcopy_f(prp_id, new_prp_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(OUT) :: new_prp_id ! Identifier of property list + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pcopy_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pcopy_c(prp_id, new_prp_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PCOPY_C'::h5pcopy_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HID_T), INTENT(OUT) :: new_prp_id - END FUNCTION h5pcopy_c - END INTERFACE - - hdferr = h5pcopy_c(prp_id, new_prp_id) - END SUBROUTINE h5pcopy_f - -!---------------------------------------------------------------------- -! Name: h5pclose_f -! -! Purpose: Terminates access to a property list. -! -! Inputs: -! prp_id - identifier of the property list to -! terminate access to. -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pclose_f(prp_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pcopy_c(prp_id, new_prp_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PCOPY_C'::h5pcopy_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(OUT) :: new_prp_id + END FUNCTION h5pcopy_c + END INTERFACE + + hdferr = h5pcopy_c(prp_id, new_prp_id) + END SUBROUTINE h5pcopy_f + +!****s* H5P/h5pclose_f +! NAME +! h5pclose_f +! +! PURPOSE +! Terminates access to a property list. +! +! INPUTS +! prp_id - identifier of the property list to +! terminate access to. +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pclose_f(prp_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pclose_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pclose_c(prp_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PCLOSE_C'::h5pclose_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - END FUNCTION h5pclose_c - END INTERFACE - - hdferr = h5pclose_c(prp_id) - END SUBROUTINE h5pclose_f - -!---------------------------------------------------------------------- -! Name: h5pset_chunk_f -! -! Purpose: Sets the size of the chunks used to store -! a chunked layout dataset. -! -! Inputs: -! prp_id - datatset creation property list identifier -! ndims - number of dimensions for each chunk -! dims - array with dimension sizes for each chunk -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pset_chunk_f(prp_id, ndims, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: ndims ! Number of chunk dimensions - INTEGER(HSIZE_T), DIMENSION(ndims), INTENT(IN) :: dims - ! Array containing sizes of - ! chunk dimensions - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pclose_c(prp_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PCLOSE_C'::h5pclose_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + END FUNCTION h5pclose_c + END INTERFACE + + hdferr = h5pclose_c(prp_id) + END SUBROUTINE h5pclose_f + +!****s* H5P/h5pset_chunk_f +! NAME +! h5pset_chunk_f +! +! PURPOSE +! Sets the size of the chunks used to store +! a chunked layout dataset. +! +! INPUTS +! prp_id - datatset creation property list identifier +! ndims - number of dimensions for each chunk +! dims - array with dimension sizes for each chunk +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_chunk_f(prp_id, ndims, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: ndims ! Number of chunk dimensions + INTEGER(HSIZE_T), DIMENSION(ndims), INTENT(IN) :: dims + ! Array containing sizes of + ! chunk dimensions + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_chunk_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_chunk_c(prp_id, ndims, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_CHUNK_C'::h5pset_chunk_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: ndims - INTEGER(HSIZE_T), DIMENSION(ndims), INTENT(IN) :: dims - END FUNCTION h5pset_chunk_c - END INTERFACE - - hdferr = h5pset_chunk_c(prp_id, ndims, dims) - END SUBROUTINE h5pset_chunk_f - -!---------------------------------------------------------------------- -! Name: h5pget_chunk_f -! -! Purpose: Retrieves the size of chunks for the raw data of a -! chunked layout dataset -! -! Inputs: -! prp_id - property list identifier -! ndims - size of dims array -! Outputs: -! dims - array with dimension sizes for each chunk -! hdferr: - error code -! Success: number of chunk dimensions -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pget_chunk_f(prp_id, ndims, dims, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: ndims ! Number of chunk dimensions to - ! to return - INTEGER(HSIZE_T), DIMENSION(ndims), INTENT(OUT) :: dims - ! Array containing sizes of - ! chunk dimensions - INTEGER, INTENT(OUT) :: hdferr ! Error code; number of - ! chunk dimensions on success, - ! -1 on failure - + INTERFACE + INTEGER FUNCTION h5pset_chunk_c(prp_id, ndims, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_CHUNK_C'::h5pset_chunk_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: ndims + INTEGER(HSIZE_T), DIMENSION(ndims), INTENT(IN) :: dims + END FUNCTION h5pset_chunk_c + END INTERFACE + + hdferr = h5pset_chunk_c(prp_id, ndims, dims) + END SUBROUTINE h5pset_chunk_f + +!****s* H5P/h5pget_chunk_f +! NAME +! h5pget_chunk_f +! +! PURPOSE +! Retrieves the size of chunks for the raw data of a +! chunked layout dataset +! +! INPUTS +! prp_id - property list identifier +! ndims - size of dims array +! OUTPUTS +! dims - array with dimension sizes for each chunk +! hdferr - error code +! Success: number of chunk dimensions +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_chunk_f(prp_id, ndims, dims, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: ndims ! Number of chunk dimensions to + ! to return + INTEGER(HSIZE_T), DIMENSION(ndims), INTENT(OUT) :: dims + ! Array containing sizes of + ! chunk dimensions + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! number of chunk dimensions on success, + ! -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_chunk_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_chunk_c(prp_id, ndims, dims) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_CHUNK_C'::h5pget_chunk_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER :: ndims - INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: dims - END FUNCTION h5pget_chunk_c - END INTERFACE - - hdferr = h5pget_chunk_c(prp_id, ndims, dims) - END SUBROUTINE h5pget_chunk_f - -!---------------------------------------------------------------------- -! Name: h5pset_deflate_f -! -! Purpose: Sets compression method and compression level. -! -! Inputs: -! prp_id - property list identifier -! level - compression level -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - + INTERFACE + INTEGER FUNCTION h5pget_chunk_c(prp_id, ndims, dims) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_CHUNK_C'::h5pget_chunk_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER :: ndims + INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: dims + END FUNCTION h5pget_chunk_c + END INTERFACE - SUBROUTINE h5pset_deflate_f(prp_id, level, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: level ! Compression level - INTEGER, INTENT(OUT) :: hdferr ! Error code + hdferr = h5pget_chunk_c(prp_id, ndims, dims) + END SUBROUTINE h5pget_chunk_f -! INTEGER, EXTERNAL :: h5pset_deflate_c -! MS FORTRAN needs explicit interface for C functions called here. +!****s* H5P/h5pset_deflate_f +! NAME +! h5pset_deflate_f +! +! PURPOSE +! Sets compression method and compression level. ! - INTERFACE - INTEGER FUNCTION h5pset_deflate_c(prp_id, level) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_DEFLATE_C'::h5pset_deflate_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: level - END FUNCTION h5pset_deflate_c - END INTERFACE - hdferr = h5pset_deflate_c(prp_id, level) - - END SUBROUTINE h5pset_deflate_f - -!---------------------------------------------------------------------- -! Name: h5pset(get)fill_value_f -! -! Purpose: Sets(gets) fill value for a dataset creation property list -! -! Inputs: -! prp_id - dataset creation property list identifier -! type_id - datatype identifier for fill value -! fillvalue - fill value -! Outputs: -! ( type_id - datatype identifier for fill value ) -! ( fillvalue - fill value ) -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal +! INPUTS +! prp_id - property list identifier +! level - compression level +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal ! August 12, 1999 ! -! Modifications: Explicit Fortran interfaces were added for +! HISTORY +! Explicit Fortran interfaces were added for ! called C functions (it is needed for Windows ! port). March 14, 2001 -! -! Comment: h5pset(get)fill_value_f function is overloaded to support -! INTEGER, REAL, DOUBLE PRECISION and CHARACTER dtatypes. -!---------------------------------------------------------------------- - - - SUBROUTINE h5pset_fill_value_integer(prp_id, type_id, fillvalue, & - hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of - ! of fillvalue datatype - ! (in memory) - INTEGER, INTENT(IN) :: fillvalue ! Fillvalue - INTEGER, INTENT(OUT) :: hdferr ! Error code +! +! SOURCE + SUBROUTINE h5pset_deflate_f(prp_id, level, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: level ! Compression level + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** -! INTEGER, EXTERNAL :: h5pset_fill_value_integer_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5pset_fill_value_integer_c(prp_id, type_id, fillvalue) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FILL_VALUE_INTEGER_C'::h5pset_fill_value_integer_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HID_T), INTENT(IN) :: type_id - INTEGER, INTENT(IN) :: fillvalue - END FUNCTION h5pset_fill_value_integer_c - END INTERFACE - - hdferr = h5pset_fill_value_integer_c(prp_id, type_id, fillvalue) - END SUBROUTINE h5pset_fill_value_integer - - - SUBROUTINE h5pget_fill_value_integer(prp_id, type_id, fillvalue, & - hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of - ! of fillvalue datatype - ! (in memory) - INTEGER, INTENT(IN) :: fillvalue ! Fillvalue - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5pget_fill_value_integer_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5pget_fill_value_integer_c(prp_id, type_id, fillvalue) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILL_VALUE_INTEGER_C'::h5pget_fill_value_integer_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HID_T), INTENT(IN) :: type_id - INTEGER :: fillvalue - END FUNCTION h5pget_fill_value_integer_c - END INTERFACE - - hdferr = h5pget_fill_value_integer_c(prp_id, type_id, fillvalue) - END SUBROUTINE h5pget_fill_value_integer - - - SUBROUTINE h5pset_fill_value_real(prp_id, type_id, fillvalue, & - hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of - ! of fillvalue datatype - ! (in memory) - REAL, INTENT(IN) :: fillvalue ! Fillvalue - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5pset_fill_value_real_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5pset_fill_value_real_c(prp_id, type_id, fillvalue) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FILL_VALUE_REAL_C'::h5pset_fill_value_real_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HID_T), INTENT(IN) :: type_id - REAL, INTENT(IN) :: fillvalue - END FUNCTION h5pset_fill_value_real_c - END INTERFACE - - hdferr = h5pset_fill_value_real_c(prp_id, type_id, fillvalue) - END SUBROUTINE h5pset_fill_value_real - - - SUBROUTINE h5pget_fill_value_real(prp_id, type_id, fillvalue, & - hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of - ! of fillvalue datatype - ! (in memory) - REAL, INTENT(IN) :: fillvalue ! Fillvalue - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5pget_fill_value_real_c +! INTEGER, EXTERNAL :: h5pset_deflate_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_fill_value_real_c(prp_id, type_id, fillvalue) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILL_VALUE_REAL_C'::h5pget_fill_value_real_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HID_T), INTENT(IN) :: type_id - REAL :: fillvalue - END FUNCTION h5pget_fill_value_real_c - END INTERFACE - - hdferr = h5pget_fill_value_real_c(prp_id, type_id, fillvalue) - END SUBROUTINE h5pget_fill_value_real - - - - SUBROUTINE h5pset_fill_value_char(prp_id, type_id, fillvalue, & - hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of - ! of fillvalue datatype - ! (in memory) - CHARACTER, INTENT(IN) :: fillvalue ! Fillvalue - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5pset_fill_valuec_c + INTERFACE + INTEGER FUNCTION h5pset_deflate_c(prp_id, level) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_DEFLATE_C'::h5pset_deflate_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: level + END FUNCTION h5pset_deflate_c + END INTERFACE + hdferr = h5pset_deflate_c(prp_id, level) + + END SUBROUTINE h5pset_deflate_f + +!****s* H5P/h5pget_version_f +! NAME +! h5pget_version_f +! +! PURPOSE +! Retrieves the version information of various objects +! for a file creation property list +! +! INPUTS +! prp_id - file createion property list identifier +! OUTPUTS +! boot - super block version number +! freelist - global freelist version number +! stab - symbol table version number +! shhdr - shared object header version number +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_version_f(prp_id, boot, freelist, & + stab, shhdr, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, DIMENSION(:), INTENT(OUT) :: boot ! Array to put boot + ! block version number + INTEGER, DIMENSION(:), INTENT(OUT) :: freelist ! Array to put global + ! Freelist version number + + INTEGER, DIMENSION(:), INTENT(OUT) :: stab ! Array to put symbol + ! table version number + INTEGER, DIMENSION(:), INTENT(OUT) :: shhdr ! Array to put shared + ! object header version number + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + +! INTEGER, EXTERNAL :: h5pget_version_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_fill_valuec_c(prp_id, type_id, fillvalue) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FILL_VALUEC_C'::h5pset_fill_valuec_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: fillvalue - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HID_T), INTENT(IN) :: type_id - CHARACTER, INTENT(IN) :: fillvalue - END FUNCTION h5pset_fill_valuec_c - END INTERFACE - - hdferr = h5pset_fill_valuec_c(prp_id, type_id, fillvalue) - END SUBROUTINE h5pset_fill_value_char - - SUBROUTINE h5pget_fill_value_char(prp_id, type_id, fillvalue, & - hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of - ! of fillvalue datatype - ! (in memory) - CHARACTER, INTENT(IN) :: fillvalue ! Fillvalue - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5pget_fill_valuec_c -! MS FORTRAN needs explicit interface for C functions called here. + INTERFACE + INTEGER FUNCTION h5pget_version_c(prp_id, boot, freelist, stab, shhdr) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_VERSION_C'::h5pget_version_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, DIMENSION(:), INTENT(OUT) :: boot + INTEGER, DIMENSION(:), INTENT(OUT) :: freelist + INTEGER, DIMENSION(:), INTENT(OUT) :: stab + INTEGER, DIMENSION(:), INTENT(OUT) :: shhdr + END FUNCTION h5pget_version_c + END INTERFACE + + hdferr = h5pget_version_c(prp_id, boot, freelist, stab, shhdr) + END SUBROUTINE h5pget_version_f + +!****s* H5P/h5pset_userblock_f +! NAME +! h5pset_userblock_f ! - INTERFACE - INTEGER FUNCTION h5pget_fill_valuec_c(prp_id, type_id, fillvalue) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILL_VALUEC_C'::h5pget_fill_valuec_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: fillvalue - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HID_T), INTENT(IN) :: type_id - CHARACTER :: fillvalue - END FUNCTION h5pget_fill_valuec_c - END INTERFACE - - hdferr = h5pget_fill_valuec_c(prp_id, type_id, fillvalue) - END SUBROUTINE h5pget_fill_value_char - -!---------------------------------------------------------------------- -! Name: h5pget_version_f -! -! Purpose: Retrieves the version information of various objects -! for a file creation property list -! -! Inputs: -! prp_id - file createion property list identifier -! Outputs: -! boot - super block version number -! freelist - global freelist version number -! stab - symbol table version number -! shhdr - shared object header version number -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Sets user block size ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 +! INPUTS +! prp_id - file creation property list to modify +! size - size of the user-block in bytes ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_version_f(prp_id, boot, freelist, & - stab, shhdr, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, DIMENSION(:), INTENT(OUT) :: boot !array to put boot - !block version number - INTEGER, DIMENSION(:), INTENT(OUT) :: freelist !array to put global - !freelist version number - - INTEGER, DIMENSION(:), INTENT(OUT) :: stab !array to put symbol - !table version number - INTEGER, DIMENSION(:), INTENT(OUT) :: shhdr !array to put shared - !object header version number - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5pget_version_c -! MS FORTRAN needs explicit interface for C functions called here. +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 ! - INTERFACE - INTEGER FUNCTION h5pget_version_c(prp_id, boot, freelist, stab, shhdr) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_VERSION_C'::h5pget_version_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, DIMENSION(:), INTENT(OUT) :: boot - INTEGER, DIMENSION(:), INTENT(OUT) :: freelist - INTEGER, DIMENSION(:), INTENT(OUT) :: stab - INTEGER, DIMENSION(:), INTENT(OUT) :: shhdr - END FUNCTION h5pget_version_c - END INTERFACE - - hdferr = h5pget_version_c(prp_id, boot, freelist, stab, shhdr) - END SUBROUTINE h5pget_version_f - -!---------------------------------------------------------------------- -! Name: h5pset_userblock_f -! -! Purpose: Sets user block size -! -! Inputs: -! prp_id - file creation property list to modify -! size - size of the user-block in bytes -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_userblock_f (prp_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HSIZE_T), INTENT(IN) :: size !Size of the user-block in bytes - INTEGER, INTENT(OUT) :: hdferr ! Error code +! SOURCE + SUBROUTINE h5pset_userblock_f (prp_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HSIZE_T), INTENT(IN) :: size ! Size of the user-block in bytes + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_userblock_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_userblock_c(prp_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_USERBLOCK_C'::h5pset_userblock_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HSIZE_T), INTENT(IN) :: size - END FUNCTION h5pset_userblock_c - END INTERFACE - - hdferr = h5pset_userblock_c(prp_id, size) - END SUBROUTINE h5pset_userblock_f - -!---------------------------------------------------------------------- -! Name: h5pget_userblock_f -! -! Purpose: Gets user block size. -! -! Inputs: -! prp_id - file creation property list identifier -! Outputs: -! block_size - size of the user block in bytes -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pget_userblock_f(prp_id, block_size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HSIZE_T), INTENT(OUT) :: block_size !Size of the - !user-block in bytes - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pset_userblock_c(prp_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_USERBLOCK_C'::h5pset_userblock_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(IN) :: size + END FUNCTION h5pset_userblock_c + END INTERFACE + hdferr = h5pset_userblock_c(prp_id, size) + END SUBROUTINE h5pset_userblock_f + +!****s* H5P/h5pget_userblock_f +! NAME +! h5pget_userblock_f +! +! PURPOSE +! Gets user block size. +! +! INPUTS +! +! prp_id - file creation property list identifier +! OUTPUTS +! +! block_size - size of the user block in bytes +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_userblock_f(prp_id, block_size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HSIZE_T), INTENT(OUT) :: block_size ! Size of the + ! user-block in bytes + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_userblock_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_userblock_c(prp_id, block_size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_USERBLOCK_C'::h5pget_userblock_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HSIZE_T), INTENT(OUT) :: block_size - END FUNCTION h5pget_userblock_c - END INTERFACE - hdferr = h5pget_userblock_c(prp_id, block_size) - END SUBROUTINE h5pget_userblock_f - -!---------------------------------------------------------------------- -! Name: h5pset_sizes_f -! -! Purpose: Sets the byte size of the offsets and lengths used -! to address objects in an HDF5 file. -! -! Inputs: -! prp_id - file creation property list identifier -! sizeof_addr - size of an object offset in bytes -! sizeof_size - size of an object length in bytes -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_sizes_f (prp_id, sizeof_addr, sizeof_size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(SIZE_T), INTENT(IN) :: sizeof_addr !Size of an object - !offset in bytes - INTEGER(SIZE_T), INTENT(IN) :: sizeof_size !Size of an object - !length in bytes - INTEGER, INTENT(OUT) :: hdferr ! Error code - + INTERFACE + INTEGER FUNCTION h5pget_userblock_c(prp_id, block_size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_USERBLOCK_C'::h5pget_userblock_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(OUT) :: block_size + END FUNCTION h5pget_userblock_c + END INTERFACE + hdferr = h5pget_userblock_c(prp_id, block_size) + END SUBROUTINE h5pget_userblock_f + +!****s* H5P/h5pset_sizes_f +! NAME +! h5pset_sizes_f +! +! PURPOSE +! Sets the byte size of the offsets and lengths used +! to address objects in an HDF5 file. +! +! INPUTS +! prp_id - file creation property list identifier +! sizeof_addr - size of an object offset in bytes +! sizeof_size - size of an object length in bytes +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_sizes_f (prp_id, sizeof_addr, sizeof_size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(SIZE_T), INTENT(IN) :: sizeof_addr ! Size of an object + ! offset in bytes + INTEGER(SIZE_T), INTENT(IN) :: sizeof_size ! Size of an object + ! length in bytes + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_sizes_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_sizes_c(prp_id, sizeof_addr, sizeof_size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SIZES_C'::h5pset_sizes_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(SIZE_T), INTENT(IN) :: sizeof_addr - INTEGER(SIZE_T), INTENT(IN) :: sizeof_size - END FUNCTION h5pset_sizes_c - END INTERFACE - - hdferr = h5pset_sizes_c(prp_id, sizeof_addr, sizeof_size) - END SUBROUTINE h5pset_sizes_f - -!---------------------------------------------------------------------- -! Name: h5pget_sizes_f -! -! Purpose: Retrieves the size of the offsets and lengths used -! in an HDF5 file -! -! Inputs: -! prp_id - file creation property list identifier -! Outputs: -! sizeof_addr - size of an object offset in bytes -! sizeof_size - size of an object length in bytes -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pget_sizes_f(prp_id, sizeof_addr, sizeof_size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(SIZE_T), INTENT(OUT) :: sizeof_addr !Size of an object - !offset in bytes - INTEGER(SIZE_T), INTENT(OUT) :: sizeof_size !Size of an object - !length in bytes - - INTEGER, INTENT(OUT) :: hdferr ! Error code - + INTERFACE + INTEGER FUNCTION h5pset_sizes_c(prp_id, sizeof_addr, sizeof_size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SIZES_C'::h5pset_sizes_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(SIZE_T), INTENT(IN) :: sizeof_addr + INTEGER(SIZE_T), INTENT(IN) :: sizeof_size + END FUNCTION h5pset_sizes_c + END INTERFACE + + hdferr = h5pset_sizes_c(prp_id, sizeof_addr, sizeof_size) + END SUBROUTINE h5pset_sizes_f + +!****s* H5P/h5pget_sizes_f +! NAME +! h5pget_sizes_f +! +! PURPOSE +! Retrieves the size of the offsets and lengths used +! in an HDF5 file +! +! INPUTS +! prp_id - file creation property list identifier +! OUTPUTS +! +! sizeof_addr - size of an object offset in bytes +! sizeof_size - size of an object length in bytes +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_sizes_f(prp_id, sizeof_addr, sizeof_size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(SIZE_T), INTENT(OUT) :: sizeof_addr ! Size of an object + ! offset in bytes + INTEGER(SIZE_T), INTENT(OUT) :: sizeof_size ! Size of an object + ! length in bytes + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_sizes_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_sizes_c(prp_id, sizeof_addr, sizeof_size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_SIZES_C'::h5pget_sizes_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(SIZE_T), INTENT(OUT) :: sizeof_addr - INTEGER(SIZE_T), INTENT(OUT) :: sizeof_size - END FUNCTION h5pget_sizes_c - END INTERFACE - - hdferr = h5pget_sizes_c(prp_id, sizeof_addr, sizeof_size) - END SUBROUTINE h5pget_sizes_f - -!---------------------------------------------------------------------- -! Name: h5pset_sym_k_f -! -! Purpose: Sets the size of parameters used to control the -! symbol table nodes -! -! Inputs: -! prp_id - file creation property list identifier -! ik - symbol table tree rank -! lk - symbol table node size -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_sym_k_f (prp_id, ik, lk, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: ik ! Symbol table tree rank - INTEGER, INTENT(IN) :: lk ! Symbol table node size - - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pget_sizes_c(prp_id, sizeof_addr, sizeof_size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_SIZES_C'::h5pget_sizes_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(SIZE_T), INTENT(OUT) :: sizeof_addr + INTEGER(SIZE_T), INTENT(OUT) :: sizeof_size + END FUNCTION h5pget_sizes_c + END INTERFACE + + hdferr = h5pget_sizes_c(prp_id, sizeof_addr, sizeof_size) + END SUBROUTINE h5pget_sizes_f + +!****s* H5P/h5pset_sym_k_f +! NAME +! h5pset_sym_k_f +! +! PURPOSE +! Sets the size of parameters used to control the +!symbol table nodes +! +! INPUTS +! +! prp_id - file creation property list identifier +! ik - symbol table tree rank +! lk - symbol table node size +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_sym_k_f (prp_id, ik, lk, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: ik ! Symbol table tree rank + INTEGER, INTENT(IN) :: lk ! Symbol table node size + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_sym_k_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_sym_k_c(prp_id, ik, lk) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SYM_K_C'::h5pset_sym_k_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: ik - INTEGER, INTENT(IN) :: lk - END FUNCTION h5pset_sym_k_c - END INTERFACE - - hdferr = h5pset_sym_k_c(prp_id, ik, lk) - END SUBROUTINE h5pset_sym_k_f - -!---------------------------------------------------------------------- -! Name: h5pget_sym_k_f -! -! Purpose: Retrieves the size of the symbol table B-tree 1/2 rank -! and the symbol table leaf node 1/2 size. -! -! Inputs: -! prp_id - file creation property list identifier -! Outputs: -! ik - symbol table tree 1/2 rank -! lk - symbol table node 1/2 size -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pget_sym_k_f(prp_id, ik, lk, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: ik !Symbol table tree rank - INTEGER, INTENT(OUT) :: lk !Symbol table node size - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pset_sym_k_c(prp_id, ik, lk) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SYM_K_C'::h5pset_sym_k_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: ik + INTEGER, INTENT(IN) :: lk + END FUNCTION h5pset_sym_k_c + END INTERFACE + + hdferr = h5pset_sym_k_c(prp_id, ik, lk) + END SUBROUTINE h5pset_sym_k_f +!****s* H5P/h5pget_sym_k_f +! NAME +! h5pget_sym_k_f +! +! PURPOSE +! Retrieves the size of the symbol table B-tree 1/2 rank +! and the symbol table leaf node 1/2 size. +! +! INPUTS +! +! prp_id - file creation property list identifier +! OUTPUTS +! +! ik - symbol table tree 1/2 rank +! lk - symbol table node 1/2 size +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_sym_k_f(prp_id, ik, lk, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: ik ! Symbol table tree rank + INTEGER, INTENT(OUT) :: lk ! Symbol table node size + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_sym_k_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_sym_k_c(prp_id, ik, lk) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_SYM_K_C'::h5pget_sym_k_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(OUT) :: ik - INTEGER, INTENT(OUT) :: lk - END FUNCTION h5pget_sym_k_c - END INTERFACE - - hdferr = h5pget_sym_k_c(prp_id, ik, lk) - END SUBROUTINE h5pget_sym_k_f - -!---------------------------------------------------------------------- -! Name: h5pset_istore_k_f -! -! Purpose: Sets the size of the parameter used to control the -! B-trees for indexing chunked datasets -! -! Inputs: -! prp_id - file creation property list identifier -! ik - 1/2 rank of chunked storage B-tree -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_istore_k_f (prp_id, ik, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: ik ! 1/2 rank of chunked storage B-tree - - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pget_sym_k_c(prp_id, ik, lk) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_SYM_K_C'::h5pget_sym_k_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: ik + INTEGER, INTENT(OUT) :: lk + END FUNCTION h5pget_sym_k_c + END INTERFACE + + hdferr = h5pget_sym_k_c(prp_id, ik, lk) + END SUBROUTINE h5pget_sym_k_f +!****s* H5P/h5pset_istore_k_f +! NAME +! h5pset_istore_k_f +! +! PURPOSE +! Sets the size of the parameter used to control the +! B-trees for indexing chunked datasets +! +! INPUTS +! +! prp_id - file creation property list identifier +! ik - 1/2 rank of chunked storage B-tree +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_istore_k_f (prp_id, ik, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: ik ! 1/2 rank of chunked storage B-tree + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_istore_k_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_istore_k_c(prp_id, ik) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_ISTORE_K_C'::h5pset_istore_k_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: ik - END FUNCTION h5pset_istore_k_c - END INTERFACE - - hdferr = h5pset_istore_k_c(prp_id, ik) - END SUBROUTINE h5pset_istore_k_f - -!---------------------------------------------------------------------- -! Name: h5pget_istore_k_f -! -! Purpose: Queries the 1/2 rank of an indexed storage B-tree. -! -! Inputs: -! prp_id - file creation property list identifier -! Outputs: -! ik - 1/2 rank of chunked storage B-tree -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pget_istore_k_f(prp_id, ik, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: ik !1/2 rank of chunked storage B-tree - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pset_istore_k_c(prp_id, ik) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_ISTORE_K_C'::h5pset_istore_k_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: ik + END FUNCTION h5pset_istore_k_c + END INTERFACE + + hdferr = h5pset_istore_k_c(prp_id, ik) + END SUBROUTINE h5pset_istore_k_f + +!****s* H5P/h5pget_istore_k_f +! NAME +! h5pget_istore_k_f +! +! PURPOSE +! Queries the 1/2 rank of an indexed storage B-tree. +! +! INPUTS +! +! prp_id - file creation property list identifier +! OUTPUTS +! +! ik - 1/2 rank of chunked storage B-tree +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_istore_k_f(prp_id, ik, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: ik ! 1/2 rank of chunked storage B-tree + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_istore_k_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_istore_k_c(prp_id, ik) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_ISTORE_K_C'::h5pget_istore_k_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(OUT) :: ik - END FUNCTION h5pget_istore_k_c - END INTERFACE - - hdferr = h5pget_istore_k_c(prp_id, ik) - END SUBROUTINE h5pget_istore_k_f - -!---------------------------------------------------------------------- -! Name: h5pget_driver_f -! -! Purpose: Returns low-lever driver identifier. -! -! Inputs: -! prp_id - file access or data transfer property -! list identifier. -! Outputs: -! driver - low-level driver identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_driver_f(prp_id, driver, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HID_T), INTENT(OUT) :: driver !low-level file driver identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - + INTERFACE + INTEGER FUNCTION h5pget_istore_k_c(prp_id, ik) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_ISTORE_K_C'::h5pget_istore_k_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: ik + END FUNCTION h5pget_istore_k_c + END INTERFACE + + hdferr = h5pget_istore_k_c(prp_id, ik) + END SUBROUTINE h5pget_istore_k_f + +!****s* H5P/h5pget_driver_f +! NAME +! h5pget_driver_f +! +! PURPOSE +! Returns low-lever driver identifier. +! +! INPUTS +! +! prp_id - file access or data transfer property +! list identifier. +! OUTPUTS +! +! driver - low-level driver identifier +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_driver_f(prp_id, driver, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(OUT) :: driver ! Low-level file driver identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_driver_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_driver_c(prp_id, driver) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_DRIVER_C'::h5pget_driver_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HID_T), INTENT(OUT) :: driver - END FUNCTION h5pget_driver_c - END INTERFACE - - hdferr = h5pget_driver_c(prp_id, driver) - END SUBROUTINE h5pget_driver_f - -!---------------------------------------------------------------------- -! Name: h5pset_fapl_stdio_f -! -! Purpose: Sets the standard I/O driver. -! -! Inputs: -! prp_id - file access property list identifier -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_fapl_stdio_f (prp_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - + INTERFACE + INTEGER FUNCTION h5pget_driver_c(prp_id, driver) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_DRIVER_C'::h5pget_driver_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(OUT) :: driver + END FUNCTION h5pget_driver_c + END INTERFACE + + hdferr = h5pget_driver_c(prp_id, driver) + END SUBROUTINE h5pget_driver_f + +!****s* H5P/h5pset_fapl_stdio_f +! NAME +! h5pset_fapl_stdio_f +! +! PURPOSE +! Sets the standard I/O driver. +! +! INPUTS +! +! prp_id - file access property list identifier +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_fapl_stdio_f (prp_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + ! INTEGER, EXTERNAL :: h5pset_fapl_stdio_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_fapl_stdio_c(prp_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_STDIO_C'::h5pset_fapl_stdio_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - END FUNCTION h5pset_fapl_stdio_c - END INTERFACE - - hdferr = h5pset_fapl_stdio_c(prp_id) - END SUBROUTINE h5pset_fapl_stdio_f - -!---------------------------------------------------------------------- -! Name: h5pget_stdio_f -! -! Purpose: NOT AVAILABLE -! -! Inputs: -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - + INTERFACE + INTEGER FUNCTION h5pset_fapl_stdio_c(prp_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_STDIO_C'::h5pset_fapl_stdio_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + END FUNCTION h5pset_fapl_stdio_c + END INTERFACE + + hdferr = h5pset_fapl_stdio_c(prp_id) + END SUBROUTINE h5pset_fapl_stdio_f + +!****s* H5P/h5pget_stdio_f +! NAME +! h5pget_stdio_f +! +! PURPOSE +! NOT AVAILABLE +! +! INPUTS +! +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE ! SUBROUTINE h5pget_stdio_f (prp_id, io, hdferr) ! ! IMPLICIT NONE @@ -1369,637 +1182,672 @@ !access property list is set to !the stdio driver ! INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_stdio_c ! hdferr = h5pget_stdio_c(prp_id, io) ! END SUBROUTINE h5pget_stdio_f -!---------------------------------------------------------------------- -! Name: h5pset_fapl_sec2_f -! -! Purpose: Sets the sec2 driver. -! -! Inputs: -! prp_id - file access property list identifier -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_fapl_sec2_f (prp_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code +!****s* H5P/h5pset_fapl_sec2_f +! NAME +! h5pset_fapl_sec2_f +! +! PURPOSE +! Sets the sec2 driver. +! +! INPUTS +! +! prp_id - file access property list identifier +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_fapl_sec2_f (prp_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_fapl_sec2_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_fapl_sec2_c(prp_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_SEC2_C'::h5pset_fapl_sec2_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - END FUNCTION h5pset_fapl_sec2_c - END INTERFACE - - hdferr = h5pset_fapl_sec2_c(prp_id) - END SUBROUTINE h5pset_fapl_sec2_f - -!---------------------------------------------------------------------- -! Name: h5pget_sec2_f -! -! Purpose: NOT AVAILABLE -! -! Inputs: -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - -! SUBROUTINE h5pget_sec2_f (prp_id, sec2, hdferr) + INTERFACE + INTEGER FUNCTION h5pset_fapl_sec2_c(prp_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_SEC2_C'::h5pset_fapl_sec2_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + END FUNCTION h5pset_fapl_sec2_c + END INTERFACE + + hdferr = h5pset_fapl_sec2_c(prp_id) + END SUBROUTINE h5pset_fapl_sec2_f + +!****s* H5P/h5pget_sec2_f +! NAME +! h5pget_sec2_f +! +! PURPOSE +! NOT AVAILABLE +! +! INPUTS +! +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE! SUBROUTINE h5pget_sec2_f (prp_id, sec2, hdferr) ! IMPLICIT NONE ! INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier ! INTEGER, INTENT(OUT) :: sec2 ! value indicates whether the file !driver uses the functions declared !in the unistd.h file ! INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_sec2_c ! hdferr = h5pget_sec2_c(prp_id, sec2) ! END SUBROUTINE h5pget_sec2_f -!---------------------------------------------------------------------- -! Name: h5pset_alignment_f -! -! Purpose: Sets alignment properties of a file access property list. -! -! Inputs: -! prp_id - file access property list identifier -! threshold - threshold value -! alignment - alignment value -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_alignment_f(prp_id, threshold, alignment, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HSIZE_T), INTENT(IN) :: threshold ! Threshold value - INTEGER(HSIZE_T), INTENT(IN) :: alignment ! alignment value - INTEGER, INTENT(OUT) :: hdferr ! Error code +!****s* H5P/h5pset_alignment_f +! NAME +! h5pset_alignment_f +! +! PURPOSE +! Sets alignment properties of a file access property list. +! +! INPUTS +! +! prp_id - file access property list identifier +! threshold - threshold value +! alignment - alignment value +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_alignment_f(prp_id, threshold, alignment, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HSIZE_T), INTENT(IN) :: threshold ! Threshold value + INTEGER(HSIZE_T), INTENT(IN) :: alignment ! alignment value + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_alignment_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_alignment_c(prp_id, threshold, alignment) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_ALIGNMENT_C'::h5pset_alignment_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HSIZE_T), INTENT(IN) :: threshold - INTEGER(HSIZE_T), INTENT(IN) :: alignment - END FUNCTION h5pset_alignment_c - END INTERFACE - - hdferr = h5pset_alignment_c(prp_id, threshold, alignment) - END SUBROUTINE h5pset_alignment_f - -!---------------------------------------------------------------------- -! Name: h5pget_alignment_f -! -! Purpose: Retrieves the current settings for alignment -! properties from a file access property list. -! -! Inputs: -! prp_id - file access property list identifier -! Outputs: -! threshold - threshold value -! alignment - alignment value -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_alignment_f(prp_id, threshold, alignment, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HSIZE_T), INTENT(OUT) :: threshold ! Threshold value - INTEGER(HSIZE_T), INTENT(OUT) :: alignment ! alignment value - INTEGER, INTENT(OUT) :: hdferr ! Error code - + INTERFACE + INTEGER FUNCTION h5pset_alignment_c(prp_id, threshold, alignment) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_ALIGNMENT_C'::h5pset_alignment_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(IN) :: threshold + INTEGER(HSIZE_T), INTENT(IN) :: alignment + END FUNCTION h5pset_alignment_c + END INTERFACE + + hdferr = h5pset_alignment_c(prp_id, threshold, alignment) + END SUBROUTINE h5pset_alignment_f + +!****s* H5P/h5pget_alignment_f +! NAME +! h5pget_alignment_f +! +! PURPOSE +! Retrieves the current settings for alignment +! properties from a file access property list. +! +! INPUTS +! prp_id - file access property list identifier +! +! OUTPUTS +! threshold - threshold value +! alignment - alignment value +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_alignment_f(prp_id, threshold, alignment, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HSIZE_T), INTENT(OUT) :: threshold ! Threshold value + INTEGER(HSIZE_T), INTENT(OUT) :: alignment ! alignment value + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_alignment_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_alignment_c(prp_id, threshold, alignment) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_ALIGNMENT_C'::h5pget_alignment_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HSIZE_T), INTENT(OUT) :: threshold - INTEGER(HSIZE_T), INTENT(OUT) :: alignment - END FUNCTION h5pget_alignment_c - END INTERFACE - - hdferr = h5pget_alignment_c(prp_id, threshold, alignment) - END SUBROUTINE h5pget_alignment_f - -!---------------------------------------------------------------------- -! Name: h5pset_fapl_core_f -! -! Purpose: Modifies the file access property list to use the -! H5FD_CORE driver. -! -! Inputs: prp_id - file access property list identifier -! increment - size, in bytes, of memory increments -! backing_store - boolean flag indicating whether to write -! the file contents to disk when the file is closed. -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_fapl_core_f(prp_id, increment, backing_store, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(SIZE_T), INTENT(IN) :: increment ! File block size in bytes. - LOGICAL, INTENT(IN) :: backing_store ! flag to indicate that - ! entire file contents are flushed to a file - ! with the same name as this core file. - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: backing_store_flag + INTERFACE + INTEGER FUNCTION h5pget_alignment_c(prp_id, threshold, alignment) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_ALIGNMENT_C'::h5pget_alignment_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(OUT) :: threshold + INTEGER(HSIZE_T), INTENT(OUT) :: alignment + END FUNCTION h5pget_alignment_c + END INTERFACE + + hdferr = h5pget_alignment_c(prp_id, threshold, alignment) + END SUBROUTINE h5pget_alignment_f + +!****s* H5P/h5pset_fapl_core_f +! NAME +! h5pset_fapl_core_f +! +! PURPOSE +! Modifies the file access property list to use the +! H5FD_CORE driver. +! +! INPUTS +! prp_id - file access property list identifier +! increment - size, in bytes, of memory increments +! backing_store - boolean flag indicating whether to write +! the file contents to disk when the file is closed. +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_fapl_core_f(prp_id, increment, backing_store, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(SIZE_T), INTENT(IN) :: increment ! File block size in bytes. + LOGICAL, INTENT(IN) :: backing_store ! Flag to indicate that + ! entire file contents are flushed to a file + ! with the same name as this core file. + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: backing_store_flag ! INTEGER, EXTERNAL :: h5pset_fapl_core_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_fapl_core_c(prp_id, increment, backing_store_flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_CORE_C'::h5pset_fapl_core_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(SIZE_T), INTENT(IN) :: increment - INTEGER :: backing_store_flag - END FUNCTION h5pset_fapl_core_c - END INTERFACE - backing_store_flag = 0 - if(backing_store) backing_store_flag = 1 - hdferr = h5pset_fapl_core_c(prp_id, increment, backing_store_flag) - END SUBROUTINE h5pset_fapl_core_f - -!---------------------------------------------------------------------- -! Name: h5pget_fapl_core_f -! -! Purpose: Queries core file driver properties. -! -! Inputs: -! prp_id - file access property list identifier -! Outputs: -! increment - size, in bytes, of memory increments -! backing_store - boolean flag indicating whether to write -! the file contents to disk when the file is closed. -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_fapl_core_f(prp_id, increment, backing_store, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(SIZE_T), INTENT(OUT) :: increment ! File block size in bytes. - LOGICAL, INTENT(OUT) :: backing_store ! flag to indicate that - ! entire file contents are flushed to a file - ! with the same name as this core file. - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: backing_store_flag + INTERFACE + INTEGER FUNCTION h5pset_fapl_core_c(prp_id, increment, backing_store_flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_CORE_C'::h5pset_fapl_core_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(SIZE_T), INTENT(IN) :: increment + INTEGER :: backing_store_flag + END FUNCTION h5pset_fapl_core_c + END INTERFACE + backing_store_flag = 0 + IF(backing_store) backing_store_flag = 1 + hdferr = h5pset_fapl_core_c(prp_id, increment, backing_store_flag) + END SUBROUTINE h5pset_fapl_core_f + +!****s* H5P/h5pget_fapl_core_f +! NAME +! h5pget_fapl_core_f +! +! PURPOSE +! Queries core file driver properties. +! +! INPUTS +! prp_id - file access property list identifier +! OUTPUTS +! +! increment - size, in bytes, of memory increments +! backing_store - boolean flag indicating whether to write +! the file contents to disk when the file is closed. +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_fapl_core_f(prp_id, increment, backing_store, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(SIZE_T), INTENT(OUT) :: increment ! File block size in bytes. + LOGICAL, INTENT(OUT) :: backing_store ! Flag to indicate that + ! entire file contents are flushed to a file + ! with the same name as this core file. + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: backing_store_flag ! INTEGER, EXTERNAL :: h5pget_fapl_core_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_fapl_core_c(prp_id, increment, backing_store_flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FAPL_CORE_C'::h5pget_fapl_core_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(SIZE_T), INTENT(OUT) :: increment - INTEGER :: backing_store_flag - END FUNCTION h5pget_fapl_core_c - END INTERFACE - - hdferr = h5pget_fapl_core_c(prp_id, increment, backing_store_flag) - backing_store =.FALSE. - IF (backing_store_flag .EQ. 1) backing_store =.TRUE. - END SUBROUTINE h5pget_fapl_core_f - -!---------------------------------------------------------------------- -! Name: h5pset_fapl_family_f -! -! Purpose: Sets the file access property list to use the family driver. -! -! Inputs: -! prp_id - file access property list identifier -! memb_size - size in bytes of each file member -! memb_plist - identifier of the file access property -! list to be used for each family member -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_fapl_family_f(prp_id, memb_size, memb_plist , hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HSIZE_T), INTENT(IN) :: memb_size ! Logical size, in bytes, - !of each family member - INTEGER(HID_T), INTENT(IN) :: memb_plist !Identifier of the file - !access property list for - !each member of the family - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pget_fapl_core_c(prp_id, increment, backing_store_flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FAPL_CORE_C'::h5pget_fapl_core_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(SIZE_T), INTENT(OUT) :: increment + INTEGER :: backing_store_flag + END FUNCTION h5pget_fapl_core_c + END INTERFACE + + hdferr = h5pget_fapl_core_c(prp_id, increment, backing_store_flag) + backing_store =.FALSE. + IF (backing_store_flag .EQ. 1) backing_store =.TRUE. + END SUBROUTINE h5pget_fapl_core_f + +!****s* H5P/ h5pset_fapl_family_f +! NAME +! h5pset_fapl_family_f +! +! PURPOSE +! Sets the file access property list to use the family driver. +! +! INPUTS +! prp_id - file access property list identifier +! memb_size - size in bytes of each file member +! memb_plist - identifier of the file access property +! list to be used for each family member +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_fapl_family_f(prp_id, memb_size, memb_plist , hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HSIZE_T), INTENT(IN) :: memb_size ! Logical size, in bytes, + ! of each family member + INTEGER(HID_T), INTENT(IN) :: memb_plist ! Identifier of the file + ! access property list for + ! each member of the family + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_fapl_family_f ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_fapl_family_c(prp_id, memb_size, memb_plist) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_FAMILY_C'::h5pset_fapl_family_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HSIZE_T), INTENT(IN) :: memb_size - INTEGER(HID_T), INTENT(IN) :: memb_plist - END FUNCTION h5pset_fapl_family_c - END INTERFACE - - hdferr = h5pset_fapl_family_c(prp_id, memb_size, memb_plist) - END SUBROUTINE h5pset_fapl_family_f - -!---------------------------------------------------------------------- -! Name: h5pget_fapl_family_f -! -! Purpose: Returns file access property list information. -! -! Inputs: -! prp_id - file access property list identifier -! Outputs: -! memb_size - size in bytes of each file member -! memb_plist - identifier of the file access property -! list to be used for each family member -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - + INTERFACE + INTEGER FUNCTION h5pset_fapl_family_c(prp_id, memb_size, memb_plist) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_FAMILY_C'::h5pset_fapl_family_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(IN) :: memb_size + INTEGER(HID_T), INTENT(IN) :: memb_plist + END FUNCTION h5pset_fapl_family_c + END INTERFACE - SUBROUTINE h5pget_fapl_family_f(prp_id, memb_size, memb_plist , hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HSIZE_T), INTENT(OUT) :: memb_size ! Logical size, in bytes, - !of each family member - INTEGER(HID_T), INTENT(OUT) :: memb_plist !Identifier of the file - !access property list for - !each member of the family - INTEGER, INTENT(OUT) :: hdferr ! Error code + hdferr = h5pset_fapl_family_c(prp_id, memb_size, memb_plist) + END SUBROUTINE h5pset_fapl_family_f + +!****s* H5P/h5pget_fapl_family_f +! NAME +! h5pget_fapl_family_f +! +! PURPOSE +! Returns file access property list information. +! +! INPUTS +! prp_id - file access property list identifier +! OUTPUTS +! memb_size - size in bytes of each file member +! memb_plist - identifier of the file access property +! list to be used for each family member +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_fapl_family_f(prp_id, memb_size, memb_plist , hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HSIZE_T), INTENT(OUT) :: memb_size ! Logical size, in bytes, + ! of each family member + INTEGER(HID_T), INTENT(OUT) :: memb_plist ! Identifier of the file + ! access property list for + ! each member of the family + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_fapl_family_f ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_fapl_family_c(prp_id, memb_size, memb_plist) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FAPL_FAMILY_C'::h5pget_fapl_family_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HSIZE_T), INTENT(OUT) :: memb_size - INTEGER(HID_T), INTENT(OUT) :: memb_plist - END FUNCTION h5pget_fapl_family_c - END INTERFACE - - hdferr = h5pget_fapl_family_c(prp_id, memb_size, memb_plist) - END SUBROUTINE h5pget_fapl_family_f - -!---------------------------------------------------------------------- -! Name: h5pset_cache_f -! -! Purpose: Sets the meta data cache and raw data chunk -! cache parameters -! -! Inputs: -! prp_id - file access property list identifier -! mdc_nelmts - number of elements (objects) in the meta -! data cache -! rdcc_nelmts - number of elements (objects) in the raw -! data chunk cache -! rdcc_nbytes - total size of the raw data chunk cache, in bytes -! rdcc_w0 - preemption policy (0 or 1) -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_cache_f(prp_id, mdc_nelmts,rdcc_nelmts, rdcc_nbytes, rdcc_w0, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: mdc_nelmts !Number of elements (objects) - ! in the meta data cache - INTEGER(SIZE_T), INTENT(IN) :: rdcc_nelmts !Number of elements (objects) - ! in the meta data cache - INTEGER(SIZE_T), INTENT(IN) :: rdcc_nbytes !Total size of the raw data - !chunk cache, in bytes - REAL, INTENT(IN) :: rdcc_w0 !Preemption policy - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pget_fapl_family_c(prp_id, memb_size, memb_plist) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FAPL_FAMILY_C'::h5pget_fapl_family_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(OUT) :: memb_size + INTEGER(HID_T), INTENT(OUT) :: memb_plist + END FUNCTION h5pget_fapl_family_c + END INTERFACE + + hdferr = h5pget_fapl_family_c(prp_id, memb_size, memb_plist) + END SUBROUTINE h5pget_fapl_family_f + +!****s* H5P/h5pset_cache_f +! NAME +! h5pset_cache_f +! +! PURPOSE +! Sets the meta data cache and raw data chunk +! cache parameters +! +! INPUTS +! +! prp_id - file access property list identifier +! mdc_nelmts - number of elements (objects) in the meta +! data cache +! rdcc_nelmts - number of elements (objects) in the raw +! data chunk cache +! rdcc_nbytes - total size of the raw data chunk cache, in bytes +! rdcc_w0 - preemption policy (0 or 1) +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_cache_f(prp_id, mdc_nelmts,rdcc_nelmts, rdcc_nbytes, rdcc_w0, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: mdc_nelmts ! Number of elements (objects) + ! in the meta data cache + INTEGER(SIZE_T), INTENT(IN) :: rdcc_nelmts ! Number of elements (objects) + ! in the meta data cache + INTEGER(SIZE_T), INTENT(IN) :: rdcc_nbytes ! Total size of the raw data + ! chunk cache, in bytes + REAL, INTENT(IN) :: rdcc_w0 ! Preemption policy + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_cache_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_cache_c(prp_id,mdc_nelmts,rdcc_nelmts,rdcc_nbytes,rdcc_w0) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_CACHE_C'::h5pset_cache_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: mdc_nelmts - INTEGER(SIZE_T), INTENT(IN) :: rdcc_nelmts - INTEGER(SIZE_T), INTENT(IN) :: rdcc_nbytes - REAL, INTENT(IN) :: rdcc_w0 - END FUNCTION h5pset_cache_c - END INTERFACE - - hdferr = h5pset_cache_c(prp_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0 ) - END SUBROUTINE h5pset_cache_f - -!---------------------------------------------------------------------- -! Name: h5pget_cache_f -! -! Purpose: Queries the meta data cache and raw data chunk cache -! parameters. -! -! Inputs: -! prp_id - file access property list identifier -! Outputs: -! mdc_nelmts - number of elements (objects) in the meta -! data cache -! rdcc_nelmts - number of elements (objects) in the raw -! data chunk cache -! rdcc_nbytes - total size of the raw data chunk cache, in bytes -! rdcc_w0 - preemption policy (0 or 1) -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Bug fix: type of the rdcc_nelmts parameter should be INTEGER -! instead of INTEGER(SIZE_T) October 10, 2003 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_cache_f(prp_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: mdc_nelmts !Number of elements (objects) - ! in the meta data cache - INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nelmts !Number of elements (objects) - ! in the meta data cache - INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nbytes !Total size of the raw data - !chunk cache, in bytes - REAL, INTENT(OUT) :: rdcc_w0 !Preemption policy - INTEGER, INTENT(OUT) :: hdferr ! Error code - + INTERFACE + INTEGER FUNCTION h5pset_cache_c(prp_id,mdc_nelmts,rdcc_nelmts,rdcc_nbytes,rdcc_w0) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_CACHE_C'::h5pset_cache_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: mdc_nelmts + INTEGER(SIZE_T), INTENT(IN) :: rdcc_nelmts + INTEGER(SIZE_T), INTENT(IN) :: rdcc_nbytes + REAL, INTENT(IN) :: rdcc_w0 + END FUNCTION h5pset_cache_c + END INTERFACE + hdferr = h5pset_cache_c(prp_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0 ) + END SUBROUTINE h5pset_cache_f + +!****s* H5P/h5pget_cache_f +! NAME +! h5pget_cache_f +! +! PURPOSE +! Queries the meta data cache and raw data chunk cache +! parameters. +! +! INPUTS +! prp_id - file access property list identifier +! +! OUTPUTS +! mdc_nelmts - number of elements (objects) in the meta +! data cache +! rdcc_nelmts - number of elements (objects) in the raw +! data chunk cache +! rdcc_nbytes - total size of the raw data chunk cache, in bytes +! rdcc_w0 - preemption policy (0 or 1) +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Bug fix: type of the rdcc_nelmts parameter should be INTEGER +! instead of INTEGER(SIZE_T) October 10, 2003 +! +! SOURCE + SUBROUTINE h5pget_cache_f(prp_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: mdc_nelmts ! Number of elements (objects) + ! in the meta data cache + INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nelmts ! Number of elements (objects) + ! in the meta data cache + INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nbytes ! Total size of the raw data + ! chunk cache, in bytes + REAL, INTENT(OUT) :: rdcc_w0 ! Preemption policy + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_cache_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_cache_c(prp_id,mdc_nelmts,rdcc_nelmts,rdcc_nbytes,rdcc_w0) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_CACHE_C'::h5pget_cache_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(OUT) :: mdc_nelmts - INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nelmts - INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nbytes - REAL, INTENT(OUT) :: rdcc_w0 - END FUNCTION h5pget_cache_c - END INTERFACE - - hdferr = h5pget_cache_c(prp_id, mdc_nelmts,rdcc_nelmts, rdcc_nbytes, rdcc_w0 ) - END SUBROUTINE h5pget_cache_f - -!---------------------------------------------------------------------- -! Name: h5pset_fapl_split_f -! -! Purpose: Emulates the old split file driver. -! -! Inputs: -! prp_id - file access property list identifier -! meta_ext - name of the extension for the metafile -! filename -! meta_plist - identifier of the meta file access property -! list -! raw_ext - name extension for the raw file filename -! raw_plist - identifier of the raw file access property list -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_fapl_split_f(prp_id, meta_ext, meta_plist, raw_ext, raw_plist, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - CHARACTER(LEN=*), INTENT(IN) :: meta_ext !Name of the extension for - !the metafile filename - INTEGER(HID_T), INTENT(IN) :: meta_plist ! Identifier of the meta file - ! access property list - CHARACTER(LEN=*), INTENT(IN) :: raw_ext !Name extension for the raw file filename - INTEGER(HID_T), INTENT(IN) :: raw_plist !Identifier of the raw file - !access property list - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: meta_len, raw_len + INTERFACE + INTEGER FUNCTION h5pget_cache_c(prp_id,mdc_nelmts,rdcc_nelmts,rdcc_nbytes,rdcc_w0) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_CACHE_C'::h5pget_cache_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: mdc_nelmts + INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nelmts + INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nbytes + REAL, INTENT(OUT) :: rdcc_w0 + END FUNCTION h5pget_cache_c + END INTERFACE + + hdferr = h5pget_cache_c(prp_id, mdc_nelmts,rdcc_nelmts, rdcc_nbytes, rdcc_w0 ) + END SUBROUTINE h5pget_cache_f + +!****s* H5P/h5pset_fapl_split_f +! NAME +! h5pset_fapl_split_f +! +! PURPOSE +! Emulates the old split file driver. +! +! INPUTS +! +! prp_id - file access property list identifier +! meta_ext - name of the extension for the metafile +! filename +! meta_plist - identifier of the meta file access property +! list +! raw_ext - name extension for the raw file filename +! raw_plist - identifier of the raw file access property list +! +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_fapl_split_f(prp_id, meta_ext, meta_plist, raw_ext, raw_plist, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: meta_ext ! Name of the extension for + ! the metafile filename + INTEGER(HID_T), INTENT(IN) :: meta_plist ! Identifier of the meta file + ! access property list + CHARACTER(LEN=*), INTENT(IN) :: raw_ext ! Name extension for the raw file filename + INTEGER(HID_T), INTENT(IN) :: raw_plist ! Identifier of the raw file + ! access property list + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: meta_len, raw_len ! INTEGER, EXTERNAL :: h5pset_fapl_split_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_fapl_split_c(prp_id,meta_len,meta_ext,meta_plist,raw_len,raw_ext,raw_plist) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_SPLIT_C'::h5pset_fapl_split_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: meta_ext - !DEC$ATTRIBUTES reference :: raw_ext - INTEGER(HID_T), INTENT(IN) :: prp_id - CHARACTER(LEN=*), INTENT(IN) :: meta_ext - INTEGER(HID_T), INTENT(IN) :: meta_plist - CHARACTER(LEN=*), INTENT(IN) :: raw_ext - INTEGER(HID_T), INTENT(IN) :: raw_plist - INTEGER :: meta_len, raw_len - END FUNCTION h5pset_fapl_split_c - END INTERFACE - - meta_len = LEN(meta_ext) - raw_len = LEN(raw_ext) - hdferr = h5pset_fapl_split_c(prp_id,meta_len,meta_ext,meta_plist,raw_len,raw_ext,raw_plist) - END SUBROUTINE h5pset_fapl_split_f - -!---------------------------------------------------------------------- -! Name: h5pget_split_f -! -! Purpose: NOT AVAILABLE -! -! Inputs: -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- + INTERFACE + INTEGER FUNCTION h5pset_fapl_split_c(prp_id,meta_len,meta_ext,meta_plist,raw_len,raw_ext,raw_plist) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_SPLIT_C'::h5pset_fapl_split_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: meta_ext + !DEC$ATTRIBUTES reference :: raw_ext + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: meta_ext + INTEGER(HID_T), INTENT(IN) :: meta_plist + CHARACTER(LEN=*), INTENT(IN) :: raw_ext + INTEGER(HID_T), INTENT(IN) :: raw_plist + INTEGER :: meta_len, raw_len + END FUNCTION h5pset_fapl_split_c + END INTERFACE + meta_len = LEN(meta_ext) + raw_len = LEN(raw_ext) + hdferr = h5pset_fapl_split_c(prp_id,meta_len,meta_ext,meta_plist,raw_len,raw_ext,raw_plist) + END SUBROUTINE h5pset_fapl_split_f + +!****s* H5P/h5pget_split_f +! NAME +! h5pget_split_f +! +! PURPOSE +! NOT AVAILABLE +! +! INPUTS +! +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE ! SUBROUTINE h5pget_split_f(prp_id, meta_ext_size, meta_ext, meta_plist,raw_ext_size,& ! raw_ext, raw_plist, hdferr) ! IMPLICIT NONE @@ -2019,3480 +1867,2848 @@ ! INTEGER(HID_T), INTENT(OUT) :: raw_plist !Identifier of the raw file !access property list ! INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_split_c ! hdferr = h5pget_split_c(prp_id, meta_ext_size, meta_ext, meta_plist, & ! raw_ext_size, raw_ext, raw_plist ) ! END SUBROUTINE h5pget_split_f -!---------------------------------------------------------------------- -! Name: h5pset_gc_references_f -! -! Purpose: Sets garbage collecting references flag. -! -! Inputs: -! prp_id - file access property list identifier -! gc_reference - flag for stting garbage collection on -! and off (1 or 0) -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pset_gc_references_f (prp_id, gc_reference, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: gc_reference !the flag for garbage collecting - ! references for the file - INTEGER, INTENT(OUT) :: hdferr ! Error code +!****s* H5P/h5pset_gc_references_f +! NAME +! h5pset_gc_references_f +! +! PURPOSE +! Sets garbage collecting references flag. +! +! INPUTS +! +! prp_id - file access property list identifier +! gc_reference - flag for stting garbage collection on +! and off (1 or 0) +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_gc_references_f (prp_id, gc_reference, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: gc_reference ! The flag for garbage collecting + ! references for the file + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_gc_references_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_gc_references_c(prp_id, gc_reference) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_GC_REFERENCES_C'::h5pset_gc_references_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: gc_reference - END FUNCTION h5pset_gc_references_c - END INTERFACE - - hdferr = h5pset_gc_references_c(prp_id, gc_reference) - END SUBROUTINE h5pset_gc_references_f - -!---------------------------------------------------------------------- -! Name: h5pget_gc_references_f -! -! Purpose: Returns garbage collecting references setting. -! -! Inputs: -! prp_id - file access property list identifier -! Outputs: -! gc_reference - flag for stting garbage collection on -! and off (1 or 0) -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- + INTERFACE + INTEGER FUNCTION h5pset_gc_references_c(prp_id, gc_reference) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_GC_REFERENCES_C'::h5pset_gc_references_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: gc_reference + END FUNCTION h5pset_gc_references_c + END INTERFACE - SUBROUTINE h5pget_gc_references_f (prp_id, gc_reference, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: gc_reference !the flag for garbage collecting - ! references for the file - INTEGER, INTENT(OUT) :: hdferr ! Error code + hdferr = h5pset_gc_references_c(prp_id, gc_reference) + END SUBROUTINE h5pset_gc_references_f + +!****s* H5P/h5pget_gc_references_f +! NAME +! h5pget_gc_references_f +! +! PURPOSE +! Returns garbage collecting references setting. +! +! INPUTS +! +! prp_id - file access property list identifier +! OUTPUTS +! +! gc_reference - flag for stting garbage collection on +! and off (1 or 0) +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_gc_references_f(prp_id, gc_reference, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: gc_reference ! The flag for garbage collecting + ! references for the file + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_gc_references_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_gc_references_c(prp_id, gc_reference) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_GC_REFERENCES_C'::h5pget_gc_references_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(OUT) :: gc_reference - END FUNCTION h5pget_gc_references_c - END INTERFACE - - hdferr = h5pget_gc_references_c(prp_id, gc_reference) - END SUBROUTINE h5pget_gc_references_f - -!---------------------------------------------------------------------- -! Name: h5pset_layout_f -! -! Purpose: Sets the type of storage used store the raw data -! for a dataset. -! -! Inputs: -! prp_id - data creation property list identifier -! layout - type of storage layout for raw data -! possible values are: -! H5D_COMPACT_F -! H5D_CONTIGUOUS_F -! H5D_CHUNKED_F -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_layout_f (prp_id, layout, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: layout !Type of storage layout for raw data - !possible values are: - !H5D_COMPACT_F - !H5D_CONTIGUOUS_F - !H5D_CHUNKED_F - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pget_gc_references_c(prp_id, gc_reference) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_GC_REFERENCES_C'::h5pget_gc_references_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: gc_reference + END FUNCTION h5pget_gc_references_c + END INTERFACE + + hdferr = h5pget_gc_references_c(prp_id, gc_reference) + END SUBROUTINE h5pget_gc_references_f + +!****s* H5P/h5pset_layout_f +! NAME +! h5pset_layout_f +! +! PURPOSE +! Sets the type of storage used store the raw data +! for a dataset. +! +! INPUTS +! +! prp_id - data creation property list identifier +! layout - type of storage layout for raw data +! possible values are: +! H5D_COMPACT_F +! H5D_CONTIGUOUS_F +! H5D_CHUNKED_F +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_layout_f (prp_id, layout, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: layout ! Type of storage layout for raw data + ! possible values are: + ! H5D_COMPACT_F + ! H5D_CONTIGUOUS_F + ! H5D_CHUNKED_F + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_layout_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_layout_c(prp_id, layout) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_LAYOUT_C'::h5pset_layout_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: layout - END FUNCTION h5pset_layout_c - END INTERFACE - - hdferr = h5pset_layout_c(prp_id, layout) - END SUBROUTINE h5pset_layout_f - -!---------------------------------------------------------------------- -! Name: h5pget_layout_f -! -! Purpose: Returns the layout of the raw data for a dataset. -! -! Inputs: -! prp_id - data creation property list identifier -! Outputs: -! layout - type of storage layout for raw data -! possible values are: -! H5D_COMPACT_F -! H5D_CONTIGUOUS_F -! H5D_CHUNKED_F -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_layout_f (prp_id, layout, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: layout !Type of storage layout for raw data - !possible values are: - !H5D_COMPACT_F(0) - !H5D_CONTIGUOUS_F(1) - !H5D_CHUNKED_F(2) - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pset_layout_c(prp_id, layout) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_LAYOUT_C'::h5pset_layout_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: layout + END FUNCTION h5pset_layout_c + END INTERFACE + + hdferr = h5pset_layout_c(prp_id, layout) + END SUBROUTINE h5pset_layout_f + +!****s* H5P/h5pget_layout_f +! NAME +! h5pget_layout_f +! +! PURPOSE +! Returns the layout of the raw data for a dataset. +! +! INPUTS +! +! prp_id - data creation property list identifier +! OUTPUTS +! +! layout - type of storage layout for raw data +! possible values are: +! H5D_COMPACT_F +! H5D_CONTIGUOUS_F +! H5D_CHUNKED_F +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_layout_f (prp_id, layout, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: layout ! Type of storage layout for raw data + ! possible values are: + ! H5D_COMPACT_F(0) + ! H5D_CONTIGUOUS_F(1) + ! H5D_CHUNKED_F(2) + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_layout_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_layout_c(prp_id, layout) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_LAYOUT_C'::h5pget_layout_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(OUT) :: layout - END FUNCTION h5pget_layout_c - END INTERFACE - - hdferr = h5pget_layout_c(prp_id, layout) - END SUBROUTINE h5pget_layout_f - -!---------------------------------------------------------------------- -! Name: h5pset_filter_f -! -! Purpose: Adds a filter to the filter pipeline. -! -! Inputs: -! prp_id - data creation or transfer property list -! identifier -! filter - filter to be added to the pipeline -! flags - bit vector specifying certain general -! properties of the filter -! cd_nelmts - number of elements in cd_values -! cd_values - auxiliary data for the filter -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! February, 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_filter_f(prp_id, filter, flags, cd_nelmts, cd_values, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: filter !Filter to be added to the pipeline. - INTEGER, INTENT(IN) :: flags !Bit vector specifying certain general - !properties of the filter. - INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts !Number of elements in cd_values. - INTEGER, DIMENSION(*), INTENT(IN) :: cd_values !Auxiliary data for the filter. - - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pget_layout_c(prp_id, layout) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_LAYOUT_C'::h5pget_layout_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: layout + END FUNCTION h5pget_layout_c + END INTERFACE + + hdferr = h5pget_layout_c(prp_id, layout) + END SUBROUTINE h5pget_layout_f + +!****s* H5P/h5pset_filter_f +! NAME +! h5pset_filter_f +! +! PURPOSE +! Adds a filter to the filter pipeline. +! +! INPUTS +! +! prp_id - data creation or transfer property list +! identifier +! filter - filter to be added to the pipeline +! flags - bit vector specifying certain general +! properties of the filter +! cd_nelmts - number of elements in cd_values +! cd_values - auxiliary data for the filter +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! February, 2003 +! +! SOURCE + SUBROUTINE h5pset_filter_f(prp_id, filter, flags, cd_nelmts, cd_values, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: filter ! Filter to be added to the pipeline. + INTEGER, INTENT(IN) :: flags ! Bit vector specifying certain general + ! properties of the filter. + INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts ! Number of elements in cd_values. + INTEGER, DIMENSION(*), INTENT(IN) :: cd_values ! Auxiliary data for the filter. + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_filter_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_filter_c(prp_id, filter, flags, cd_nelmts, cd_values) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FILTER_C'::h5pset_filter_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: filter - INTEGER, INTENT(IN) :: flags - INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts - INTEGER, DIMENSION(*), INTENT(IN) :: cd_values - END FUNCTION h5pset_filter_c - END INTERFACE - - hdferr = h5pset_filter_c(prp_id, filter, flags, cd_nelmts, cd_values ) - END SUBROUTINE h5pset_filter_f - -!---------------------------------------------------------------------- -! Name: h5pget_nfilters_f -! -! Purpose: Returns the number of filters in the pipeline. -! -! Inputs: -! prp_id - data creation or transfer property list -! identifier -! Outputs: -! nfilters - number of filters in the pipeline -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_nfilters_f (prp_id, nfilters, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: nfilters !the number of filters in the pipeline - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pset_filter_c(prp_id, filter, flags, cd_nelmts, cd_values) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FILTER_C'::h5pset_filter_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: filter + INTEGER, INTENT(IN) :: flags + INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts + INTEGER, DIMENSION(*), INTENT(IN) :: cd_values + END FUNCTION h5pset_filter_c + END INTERFACE + + hdferr = h5pset_filter_c(prp_id, filter, flags, cd_nelmts, cd_values ) + END SUBROUTINE h5pset_filter_f + +!****s* H5P/h5pget_nfilters_f +! NAME +! h5pget_nfilters_f +! +! PURPOSE +! Returns the number of filters in the pipeline. +! +! INPUTS +! +! prp_id - data creation or transfer property list +! identifier +! OUTPUTS +! +! nfilters - number of filters in the pipeline +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_nfilters_f (prp_id, nfilters, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: nfilters ! The number of filters in the pipeline + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_nfilters_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_nfilters_c(prp_id, nfilters) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_NFILTERS_C'::h5pget_nfilters_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(OUT) :: nfilters - END FUNCTION h5pget_nfilters_c - END INTERFACE - - hdferr = h5pget_nfilters_c(prp_id, nfilters) - END SUBROUTINE h5pget_nfilters_f - -!---------------------------------------------------------------------- -! Name: h5pget_filter_f -! -! Purpose: Returns information about a filter in a pipeline -! -! Inputs: -! prp_id - data creation or transfer property list -! identifier -! Outputs: -! identifier -! filter - filter to be added to the pipeline -! flags - bit vector specifying certain general -! properties of the filter -! cd_nelmts - number of elements in cd_values -! cd_values - auxiliary data for the filter -! namelen - number of characters in the name buffer -! name - buffer to retrieve filter name -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_filter_f(prp_id, filter_number, flags, cd_nelmts, cd_values, namelen, name, filter_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: filter_number !Sequence number within the filter - !pipeline of the filter for which - !information is sought - INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values !Auxiliary data for the filter. - INTEGER, INTENT(OUT) :: flags !Bit vector specifying certain general - !properties of the filter. - INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts !Number of elements in cd_values. - INTEGER(SIZE_T), INTENT(IN) :: namelen !Anticipated number of characters in name. - CHARACTER(LEN=*), INTENT(OUT) :: name !Name of the filter - INTEGER, INTENT(OUT) :: filter_id ! filter identification number - - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pget_nfilters_c(prp_id, nfilters) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_NFILTERS_C'::h5pget_nfilters_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: nfilters + END FUNCTION h5pget_nfilters_c + END INTERFACE + + hdferr = h5pget_nfilters_c(prp_id, nfilters) + END SUBROUTINE h5pget_nfilters_f + +!****s* H5P/h5pget_filter_f +! NAME +! h5pget_filter_f +! +! PURPOSE +! Returns information about a filter in a pipeline +! +! INPUTS +! +! prp_id - data creation or transfer property list +! identifier +! filter_number - sequence number within the filter +! pipeline of the filter for which +! information is sought +! OUTPUTS +! +! filter_id - filter identification number +! flags - bit vector specifying certain general +! properties of the filter +! cd_nelmts - number of elements in cd_values +! cd_values - auxiliary data for the filter +! namelen - number of characters in the name buffer +! name - buffer to retrieve filter name +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_filter_f(prp_id, filter_number, flags, cd_nelmts, cd_values, namelen, name, filter_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: filter_number ! Sequence number within the filter + ! pipeline of the filter for which + ! information is sought + INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values ! Auxiliary data for the filter. + INTEGER, INTENT(OUT) :: flags ! Bit vector specifying certain general + ! properties of the filter. + INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts ! Number of elements in cd_values. + INTEGER(SIZE_T), INTENT(IN) :: namelen ! Anticipated number of characters in name. + CHARACTER(LEN=*), INTENT(OUT) :: name ! Name of the filter + INTEGER, INTENT(OUT) :: filter_id ! Filter identification number + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_filter_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_filter_c(prp_id, filter_number, flags, cd_nelmts, & - cd_values, namelen, name, filter_id ) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILTER_C'::h5pget_filter_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: filter_number - INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values - INTEGER, INTENT(OUT) :: flags - INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts - INTEGER(SIZE_T), INTENT(IN) :: namelen - CHARACTER(LEN=*), INTENT(OUT) :: name - INTEGER, INTENT(OUT) :: filter_id - END FUNCTION h5pget_filter_c - END INTERFACE - - hdferr = h5pget_filter_c(prp_id, filter_number, flags, cd_nelmts, & - cd_values, namelen, name, filter_id ) - END SUBROUTINE h5pget_filter_f - -!---------------------------------------------------------------------- -! Name: h5pset_external_f -! -! Purpose: Adds an external file to the list of external files. -! -! Inputs: -! prp_id - dataset creation property list identifier -! name - name of external file -! offset - offset in bytes from the beginning of the -! file to the location in the file -! where the data starts -! bytes - size of the external file data. -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_external_f(prp_id, name, offset,bytes, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name !Name of an external file - INTEGER, INTENT(IN) :: offset !Offset, in bytes, from the beginning - !of the file to the location in the file - !where the data starts. - INTEGER(HSIZE_T), INTENT(IN) :: bytes ! Number of bytes reserved in the - !file for the data - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pget_filter_c(prp_id, filter_number, flags, cd_nelmts, & + cd_values, namelen, name, filter_id ) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILTER_C'::h5pget_filter_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: filter_number + INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values + INTEGER, INTENT(OUT) :: flags + INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts + INTEGER(SIZE_T), INTENT(IN) :: namelen + CHARACTER(LEN=*), INTENT(OUT) :: name + INTEGER, INTENT(OUT) :: filter_id + END FUNCTION h5pget_filter_c + END INTERFACE + + hdferr = h5pget_filter_c(prp_id, filter_number, flags, cd_nelmts, & + cd_values, namelen, name, filter_id ) + END SUBROUTINE h5pget_filter_f + +!****s* H5P/h5pset_external_f +! NAME +! h5pset_external_f +! +! PURPOSE +! Adds an external file to the list of external files. +! +! INPUTS +! +! prp_id - dataset creation property list identifier +! name - name of external file +! offset - offset in bytes from the beginning of the +! file to the location in the file +! where the data starts +! bytes - size of the external file data. +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_external_f(prp_id, name, offset,bytes, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of an external file + INTEGER, INTENT(IN) :: offset ! Offset, in bytes, from the beginning + ! of the file to the location in the file + ! where the data starts. + INTEGER(HSIZE_T), INTENT(IN) :: bytes ! Number of bytes reserved in the + ! file for the data + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** - INTEGER :: namelen + INTEGER :: namelen ! INTEGER, EXTERNAL :: h5pset_external_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_external_c(prp_id, name,namelen, offset, bytes) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_EXTERNAL_C'::h5pset_external_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: prp_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER :: namelen - INTEGER, INTENT(IN) :: offset - INTEGER(HSIZE_T), INTENT(IN) :: bytes - END FUNCTION h5pset_external_c - END INTERFACE - - namelen = LEN(name) - hdferr = h5pset_external_c(prp_id, name, namelen, offset, bytes) - END SUBROUTINE h5pset_external_f - -!---------------------------------------------------------------------- -! Name: h5pget_external_count_f -! -! Purpose: Returns the number of external files for a dataset. -! -! Inputs: -! prp_id - dataset creation property list identifier -! Outputs: -! count - number of external files for the -! specified dataset -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 + INTERFACE + INTEGER FUNCTION h5pset_external_c(prp_id, name,namelen, offset, bytes) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_EXTERNAL_C'::h5pset_external_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER, INTENT(IN) :: offset + INTEGER(HSIZE_T), INTENT(IN) :: bytes + END FUNCTION h5pset_external_c + END INTERFACE + + namelen = LEN(name) + hdferr = h5pset_external_c(prp_id, name, namelen, offset, bytes) + END SUBROUTINE h5pset_external_f + +!****s* H5P/h5pget_external_count_f +! NAME +! h5pget_external_count_f +! +! PURPOSE +! Returns the number of external files for a dataset. +! +! INPUTS +! +! prp_id - dataset creation property list identifier +! OUTPUTS +! +! count - number of external files for the +! specified dataset +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_external_count_f (prp_id, count, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: count ! Number of external files for the + ! Specified dataset + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** +! INTEGER, EXTERNAL :: h5pget_external_count_c +! MS FORTRAN needs explicit interface for C functions called here. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 + INTERFACE + INTEGER FUNCTION h5pget_external_count_c(prp_id, count) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_EXTERNAL_COUNT_C'::h5pget_external_count_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: count + END FUNCTION h5pget_external_count_c + END INTERFACE + + hdferr = h5pget_external_count_c(prp_id, count) + END SUBROUTINE h5pget_external_count_f + +!****s* H5P/h5pget_external_f +! NAME +! h5pget_external_f +! +! PURPOSE +! Returns information about an external file. +! +! INPUTS +! +! prp_id - dataset creation property list identifier +! OUTPUTS +! +! idx - external file index +! name_size - maximum size of name array +! name - name of the external file +! name - name of external file +! offset - offset in bytes from the beginning of the +! file to the location in the file +! where the data starts +! bytes - size of the external file data +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_external_f(prp_id, idx, name_size, name, offset,bytes, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: idx ! External file index. + INTEGER(SIZE_T), INTENT(IN) :: name_size ! Maximum length of name array + CHARACTER(LEN=*), INTENT(OUT) :: name ! Name of an external file + INTEGER, INTENT(OUT) :: offset ! Offset, in bytes, from the beginning + ! of the file to the location in the file + ! where the data starts. + INTEGER(HSIZE_T), INTENT(OUT) :: bytes ! Number of bytes reserved in the + ! file for the data + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + +! INTEGER, EXTERNAL :: h5pget_external_c +! MS FORTRAN needs explicit interface for C functions called here. ! -! Comment: -!---------------------------------------------------------------------- + INTERFACE + INTEGER FUNCTION h5pget_external_c(prp_id, idx, name_size, name, offset, bytes) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_EXTERNAL_C'::h5pget_external_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: idx + INTEGER(SIZE_T), INTENT(IN) :: name_size + CHARACTER(LEN=*), INTENT(OUT) :: name + INTEGER, INTENT(OUT) :: offset + INTEGER(HSIZE_T), INTENT(OUT) :: bytes + END FUNCTION h5pget_external_c + END INTERFACE + + hdferr = h5pget_external_c(prp_id, idx, name_size, name, offset, bytes) + END SUBROUTINE h5pget_external_f + +!****s* H5P/h5pset_btree_ratios_f +! NAME +! h5pset_btree_ratios_f +! +! PURPOSE +! Sets B-tree split ratios for a dataset transfer +! property list. +! +! INPUTS +! +! prp_id - the dataset transfer property list +! identifier +! left - the B-tree split ratio for left-most nodes +! middle - the B-tree split ratio for all other nodes +! right - the B-tree split ratio for right-most nodes +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pset_btree_ratios_f(prp_id, left, middle, right, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + REAL, INTENT(IN) :: left ! The B-tree split ratio for left-most nodes. + REAL, INTENT(IN) :: middle ! The B-tree split ratio for all other nodes + REAL, INTENT(IN) :: right ! The B-tree split ratio for right-most + ! nodes and lone nodes. + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** - SUBROUTINE h5pget_external_count_f (prp_id, count, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: count !number of external files for the - !specified dataset - INTEGER, INTENT(OUT) :: hdferr ! Error code -! INTEGER, EXTERNAL :: h5pget_external_count_c +! INTEGER, EXTERNAL :: h5pset_btree_ratios_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_external_count_c(prp_id, count) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_EXTERNAL_COUNT_C'::h5pget_external_count_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(OUT) :: count - END FUNCTION h5pget_external_count_c - END INTERFACE - - hdferr = h5pget_external_count_c(prp_id, count) - END SUBROUTINE h5pget_external_count_f - -!---------------------------------------------------------------------- -! Name: h5pget_external_f -! -! Purpose: Returns information about an external file. -! -! Inputs: -! prp_id - dataset creation property list identifier -! Outputs: -! idx - external file index -! name_size - maximum size of name array -! name - name of the external file -! name - name of external file -! offset - offset in bytes from the beginning of the -! file to the location in the file -! where the data starts -! bytes - size of the external file data -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 + INTERFACE + INTEGER FUNCTION h5pset_btree_ratios_c(prp_id, left, middle, right) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_BTREE_RATIOS_C'::h5pset_btree_ratios_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + REAL, INTENT(IN) :: left + REAL, INTENT(IN) :: middle + REAL, INTENT(IN) :: right + END FUNCTION h5pset_btree_ratios_c + END INTERFACE + + hdferr = h5pset_btree_ratios_c(prp_id, left, middle, right) + END SUBROUTINE h5pset_btree_ratios_f + +!****s* H5P/h5pget_btree_ratios_f +! NAME +! h5pget_btree_ratios_f +! +! PURPOSE +! Gets B-tree split ratios for a dataset transfer property list +! +! INPUTS +! +! prp_id - the dataset transfer property list +! identifier +! OUTPUTS +! +! left - the B-tree split ratio for left-most nodes +! middle - the B-tree split ratio for all other nodes +! right - the B-tree split ratio for right-most nodes +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! SOURCE + SUBROUTINE h5pget_btree_ratios_f(prp_id, left, middle, right, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + REAL, INTENT(OUT) :: left ! The B-tree split ratio for left-most nodes. + REAL, INTENT(OUT) :: middle ! The B-tree split ratio for all other nodes + REAL, INTENT(OUT) :: right ! The B-tree split ratio for right-most + ! nodes and lone nodes. + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + + +! INTEGER, EXTERNAL :: h5pget_btree_ratios_c +! MS FORTRAN needs explicit interface for C functions called here. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 + INTERFACE + INTEGER FUNCTION h5pget_btree_ratios_c(prp_id, left, middle, right) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_BTREE_RATIOS_C'::h5pget_btree_ratios_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + REAL, INTENT(OUT) :: left + REAL, INTENT(OUT) :: middle + REAL, INTENT(OUT) :: right + END FUNCTION h5pget_btree_ratios_c + END INTERFACE + + hdferr = h5pget_btree_ratios_c(prp_id, left, middle, right) + END SUBROUTINE h5pget_btree_ratios_f + +!****s* H5P/h5pget_fclose_degree_f +! NAME +! h5pget_fclose_degree_f +! +! PURPOSE +! Returns the degree for the file close behavior. +! +! INPUTS +! +! fapl_id - File access property list identifier +! OUTPUTS +! +! degree - Possible values are: +! H5F_CLOSE_DEFAULT_F +! H5F_CLOSE_WEAK_F +! H5F_CLOSE_SEMI_F +! H5F_CLOSE_STRONG_F +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! September 26, 2002 +! +! HISTORY +! +! +! SOURCE + SUBROUTINE h5pget_fclose_degree_f(fapl_id, degree, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: fapl_id ! File Access Property list identifier + INTEGER, INTENT(OUT) :: degree ! Possible values are: + ! H5F_CLOSE_DEFAULT_F + ! H5F_CLOSE_WEAK_F + ! H5F_CLOSE_SEMI_F + ! H5F_CLOSE_STRONG_F + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + +! INTEGER, EXTERNAL :: h5pget_fclose_degree_c +! MS FORTRAN needs explicit interface for C functions called here. ! -! Comment: -!---------------------------------------------------------------------- + INTERFACE + INTEGER FUNCTION h5pget_fclose_degree_c(fapl_id, degree) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FCLOSE_DEGREE_C'::h5pget_fclose_degree_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: fapl_id + INTEGER, INTENT(OUT) :: degree + END FUNCTION h5pget_fclose_degree_c + END INTERFACE + + hdferr = h5pget_fclose_degree_c(fapl_id, degree) + END SUBROUTINE h5pget_fclose_degree_f + +!****s* H5P/h5pset_fclose_degree_f +! NAME +! h5pset_fclose_degree_f +! +! PURPOSE +! Sets the degree for the file close behavior. +! +! INPUTS +! +! fapl_id - file access property list identifier +! degree - Possible values are: +! H5F_CLOSE_DEFAULT_F +! H5F_CLOSE_WEAK_F +! H5F_CLOSE_SEMI_F +! H5F_CLOSE_STRONG_F +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! September 26, 2002 +! +! SOURCE + SUBROUTINE h5pset_fclose_degree_f(fapl_id, degree, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: fapl_id ! File Access Property list identifier + INTEGER, INTENT(IN) :: degree ! Possible values are: + ! H5F_CLOSE_DEFAULT_F + ! H5F_CLOSE_WEAK_F + ! H5F_CLOSE_SEMI_F + ! H5F_CLOSE_STRONG_F + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTERFACE + INTEGER FUNCTION h5pset_fclose_degree_c(fapl_id, degree) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FCLOSE_DEGREE_C'::h5pset_fclose_degree_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: fapl_id + INTEGER, INTENT(IN) :: degree + END FUNCTION h5pset_fclose_degree_c + END INTERFACE - SUBROUTINE h5pget_external_f(prp_id, idx, name_size, name, offset,bytes, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: idx !External file index. - INTEGER(SIZE_T), INTENT(IN) :: name_size !Maximum length of name array - CHARACTER(LEN=*), INTENT(OUT) :: name !Name of an external file - INTEGER, INTENT(OUT) :: offset !Offset, in bytes, from the beginning - !of the file to the location in the file - !where the data starts. - INTEGER(HSIZE_T), INTENT(OUT) :: bytes ! Number of bytes reserved in the - !file for the data - INTEGER, INTENT(OUT) :: hdferr ! Error code + hdferr = h5pset_fclose_degree_c(fapl_id, degree) + END SUBROUTINE h5pset_fclose_degree_f + +!****s* H5P/h5pequal_f +! NAME +! h5pequal_f +! +! PURPOSE +! Checks if two property lists are eqaul +! +! INPUTS +! +! plist1_id - property list identifier +! plist2_id - property list identifier +! OUTPUTS +! +! flag - flag, possible values +! .TRUE. or .FALSE. +! hdferr: - error code +! Success: 0 +! Failure: -1, flag is set to .FALSE. +! +! AUTHOR +! Elena Pourmal +! September 30, 2002 +! +! SOURCE + SUBROUTINE h5pequal_f(plist1_id, plist2_id, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist1_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: plist2_id ! Property list identifier + LOGICAL, INTENT(OUT) :: flag ! Flag + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: c_flag + + INTERFACE + INTEGER FUNCTION h5pequal_c(plist1_id, plist2_id, c_flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PEQUAL_C'::h5pequal_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist1_id + INTEGER(HID_T), INTENT(IN) :: plist2_id + INTEGER, INTENT(OUT) :: c_flag + END FUNCTION h5pequal_c + END INTERFACE -! INTEGER, EXTERNAL :: h5pget_external_c -! MS FORTRAN needs explicit interface for C functions called here. + flag = .FALSE. + hdferr = h5pequal_c(plist1_id, plist2_id, c_flag) + IF (c_flag .GT. 0) flag = .TRUE. + END SUBROUTINE h5pequal_f + +!****s* H5P/h5pset_buffer_f +! NAME +! h5pset_buffer_f +! +! PURPOSE +! Sets sixe for conversion buffer +! +! INPUTS +! plist_id - data transfer property list identifier +! size - buffer size +! OUTPUTS +! +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 2, 2002 +! +! SOURCE + SUBROUTINE h5pset_buffer_f(plist_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! Data transfer property list identifier + INTEGER(HSIZE_T), INTENT(IN) :: size ! Buffer size in bytes; + ! buffer is allocated and freed by + ! the library. + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + + INTERFACE + INTEGER FUNCTION h5pset_buffer_c(plist_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_BUFFER_C'::h5pset_buffer_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER(HSIZE_T), INTENT(IN) :: size + END FUNCTION h5pset_buffer_c + END INTERFACE + + hdferr = h5pset_buffer_c(plist_id, size) + END SUBROUTINE h5pset_buffer_f + +!****s* H5P/h5pget_buffer_f +! NAME +! h5pget_buffer_f ! - INTERFACE - INTEGER FUNCTION h5pget_external_c(prp_id, idx, name_size, name, offset, bytes) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_EXTERNAL_C'::h5pget_external_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: idx - INTEGER(SIZE_T), INTENT(IN) :: name_size - CHARACTER(LEN=*), INTENT(OUT) :: name - INTEGER, INTENT(OUT) :: offset - INTEGER(HSIZE_T), INTENT(OUT) :: bytes - END FUNCTION h5pget_external_c - END INTERFACE - - hdferr = h5pget_external_c(prp_id, idx, name_size, name, offset, bytes) - END SUBROUTINE h5pget_external_f - -!---------------------------------------------------------------------- -! Name: h5pset_btree_ratios_f -! -! Purpose: Sets B-tree split ratios for a dataset transfer -! property list. -! -! Inputs: -! prp_id - the dataset transfer property list -! identifier -! left - the B-tree split ratio for left-most nodes -! middle - the B-tree split ratio for all other nodes -! right - the B-tree split ratio for right-most nodes -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Gets size for conversion buffer ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 +! INPUTS +! +! plist_id - data transfer property list identifier +! OUTPUTS +! +! size - buffer size +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 2, 2002 ! -! Comment: -!---------------------------------------------------------------------- +! SOURCE + SUBROUTINE h5pget_buffer_f(plist_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! Data transfer property list identifier + INTEGER(HSIZE_T), INTENT(OUT) :: size ! Buffer size in bytes; + ! buffer is allocated and freed by + ! the library. + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** - SUBROUTINE h5pset_btree_ratios_f(prp_id, left, middle, right, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - REAL, INTENT(IN) :: left !The B-tree split ratio for left-most nodes. - REAL, INTENT(IN) :: middle !The B-tree split ratio for all other nodes - REAL, INTENT(IN) :: right !The B-tree split ratio for right-most - !nodes and lone nodes. + INTERFACE + INTEGER FUNCTION h5pget_buffer_c(plist_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_BUFFER_C'::h5pget_buffer_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER(HSIZE_T), INTENT(OUT) :: size + END FUNCTION h5pget_buffer_c + END INTERFACE - INTEGER, INTENT(OUT) :: hdferr ! Error code + hdferr = h5pget_buffer_c(plist_id, size) + END SUBROUTINE h5pget_buffer_f + +!****s* H5P/h5pfill_value_defined_f +! NAME +! h5pfill_value_defined_f +! +! PURPOSE +! Check if fill value is defined. +! +! INPUTS +! +! plist_id - dataset creation property list identifier +! OUTPUTS +! +! flag - fill value status flag +! Possible values are: +! H5D_FILL_VALUE_ERROR_F +! H5D_FILL_VALUE_UNDEFINED_F +! H5D_FILL_VALUE_DEFAULT_F +! H5D_FILL_VALUE_USER_DEFINED_F +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 4, 2002 +! +! SOURCE + SUBROUTINE h5pfill_value_defined_f(plist_id, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property list identifier + INTEGER, INTENT(OUT) :: flag ! Fill value status flag + ! H5D_FILL_VALUE_ERROR_F + ! H5D_FILL_VALUE_UNDEFINED_F + ! H5D_FILL_VALUE_DEFAULT_F + ! H5D_FILL_VALUE_USER_DEFINED_F + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTERFACE + INTEGER FUNCTION h5pfill_value_defined_c(plist_id, flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PFILL_VALUE_DEFINED_C'::h5pfill_value_defined_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER, INTENT(OUT) :: flag + END FUNCTION h5pfill_value_defined_c + END INTERFACE -! INTEGER, EXTERNAL :: h5pset_btree_ratios_c -! MS FORTRAN needs explicit interface for C functions called here. + hdferr = h5pfill_value_defined_c(plist_id, flag) + END SUBROUTINE h5pfill_value_defined_f + +!****s* H5P/h5pset_alloc_time_f +! NAME +! h5pset_alloc_time_f +! +! PURPOSE +! Set space allocation time for dataset during creation. +! +! INPUTS +! +! plist_id - dataset creation property list identifier +! flag - allocation time flag: +! H5D_ALLOC_TIME_ERROR_F +! H5D_ALLOC_TIME_DEFAULT_F +! H5D_ALLOC_TIME_EARLY_F +! H5D_ALLOC_TIME_LATE_F +! H5D_ALLOC_TIME_INCR_F +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 4, 2002 +! +! SOURCE + SUBROUTINE h5pset_alloc_time_f(plist_id, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property list identifier + INTEGER, INTENT(IN) :: flag ! Allocation time flag: + ! H5D_ALLOC_TIME_ERROR_F + ! H5D_ALLOC_TIME_DEFAULT_F + ! H5D_ALLOC_TIME_EARLY_F + ! H5D_ALLOC_TIME_LATE_F + ! H5D_ALLOC_TIME_INCR_F + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + + INTERFACE + INTEGER FUNCTION h5pset_alloc_time_c(plist_id, flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_ALLOC_TIME_C'::h5pset_alloc_time_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER, INTENT(IN) :: flag + END FUNCTION h5pset_alloc_time_c + END INTERFACE + + hdferr = h5pset_alloc_time_c(plist_id, flag) + END SUBROUTINE h5pset_alloc_time_f + +!****s* H5P/h5pget_alloc_time_f +! NAME +! h5pget_alloc_time_f +! +! PURPOSE +! Get space allocation time for dataset during creation. +! +! INPUTS +! +! plist_id - dataset creation property list identifier +! OUTPUTS +! +! flag - allocation time flag: +! H5D_ALLOC_TIME_ERROR_F +! H5D_ALLOC_TIME_DEFAULT_F +! H5D_ALLOC_TIME_EARLY_F +! H5D_ALLOC_TIME_LATE_F +! H5D_ALLOC_TIME_INCR_F +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 4, 2002 +! +! SOURCE + SUBROUTINE h5pget_alloc_time_f(plist_id, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property list identifier + INTEGER, INTENT(OUT) :: flag ! Allocation time flag: + ! H5D_ALLOC_TIME_ERROR_F + ! H5D_ALLOC_TIME_DEFAULT_F + ! H5D_ALLOC_TIME_EARLY_F + ! H5D_ALLOC_TIME_LATE_F + ! H5D_ALLOC_TIME_INCR_F + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + + INTERFACE + INTEGER FUNCTION h5pget_alloc_time_c(plist_id, flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_ALLOC_TIME_C'::h5pget_alloc_time_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER, INTENT(OUT) :: flag + END FUNCTION h5pget_alloc_time_c + END INTERFACE + + hdferr = h5pget_alloc_time_c(plist_id, flag) + END SUBROUTINE h5pget_alloc_time_f + +!****s* H5P/h5pset_fill_time_f +! NAME +! h5pset_fill_time_f +! +! PURPOSE +! Set fill value writing time for dataset +! +! INPUTS +! +! plist_id - dataset creation property list identifier +! flag - fill time flag: +! H5D_FILL_TIME_ERROR_F +! H5D_FILL_TIME_ALLOC_F +! H5D_FILL_TIME_NEVER_F +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 4, 2002 +! +! SOURCE + SUBROUTINE h5pset_fill_time_f(plist_id, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property list identifier + INTEGER, INTENT(IN) :: flag ! Fill time flag: + ! H5D_FILL_TIME_ERROR_F + ! H5D_FILL_TIME_ALLOC_F + ! H5D_FILL_TIME_NEVER_F + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + + INTERFACE + INTEGER FUNCTION h5pset_fill_time_c(plist_id, flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FILL_TIME_C'::h5pset_fill_time_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER, INTENT(IN) :: flag + END FUNCTION h5pset_fill_time_c + END INTERFACE + + hdferr = h5pset_fill_time_c(plist_id, flag) + END SUBROUTINE h5pset_fill_time_f + +!****s* H5P/h5pget_fill_time_f +! NAME +! h5pget_fill_time_f +! +! PURPOSE +! Get fill value writing time for dataset +! +! INPUTS +! +! plist_id - dataset creation property list identifier +! OUTPUTS +! +! hdferr: - error code +! Success: 0 +! Failure: -1 +! OPTIONAL PARAMETERS +! +! flag - fill time flag: +! H5D_FILL_TIME_ERROR_F +! H5D_FILL_TIME_ALLOC_F +! H5D_FILL_TIME_NEVER_F +! AUTHOR +! Elena Pourmal +! October 4, 2002 +! +! SOURCE + SUBROUTINE h5pget_fill_time_f(plist_id, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property list identifier + INTEGER, INTENT(OUT) :: flag ! Fill time flag: + ! H5D_FILL_TIME_ERROR_F + ! H5D_FILL_TIME_ALLOC_F + ! H5D_FILL_TIME_NEVER_F + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + + INTERFACE + INTEGER FUNCTION h5pget_fill_time_c(plist_id, flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILL_TIME_C'::h5pget_fill_time_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER, INTENT(OUT) :: flag + END FUNCTION h5pget_fill_time_c + END INTERFACE + + hdferr = h5pget_fill_time_c(plist_id, flag) + END SUBROUTINE h5pget_fill_time_f + +!****s* H5P/ h5pset_meta_block_size_f +! NAME +! h5pset_meta_block_size_f +! +! PURPOSE +! Sets the minimum size of metadata block allocations +! +! INPUTS +! +! plist_id - file access property list identifier +! size - metatdata block size +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 7, 2002 +! +! SOURCE + SUBROUTINE h5pset_meta_block_size_f(plist_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier + INTEGER(HSIZE_T), INTENT(IN) :: size ! Block size in bytes; + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTERFACE + INTEGER FUNCTION h5pset_meta_block_size_c(plist_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_META_BLOCK_SIZE_C'::h5pset_meta_block_size_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER(HSIZE_T), INTENT(IN) :: size + END FUNCTION h5pset_meta_block_size_c + END INTERFACE + + hdferr = h5pset_meta_block_size_c(plist_id, size) + END SUBROUTINE h5pset_meta_block_size_f + +!****s* H5P/h5pget_meta_block_size_f +! NAME +! h5pget_meta_block_size_f +! +! PURPOSE +! Gets the minimum size of metadata block allocations +! +! INPUTS +! +! plist_id - file access property list identifier +! OUTPUTS +! +! size - metatdata block size +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 7, 2002 +! +! SOURCE + SUBROUTINE h5pget_meta_block_size_f(plist_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier + INTEGER(HSIZE_T), INTENT(OUT) :: size ! Block size in bytes; + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTERFACE + INTEGER FUNCTION h5pget_meta_block_size_c(plist_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_META_BLOCK_SIZE_C'::h5pget_meta_block_size_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER(HSIZE_T), INTENT(OUT) :: size + END FUNCTION h5pget_meta_block_size_c + END INTERFACE + + hdferr = h5pget_meta_block_size_c(plist_id, size) + END SUBROUTINE h5pget_meta_block_size_f + +!****s* H5P/h5pset_sieve_buf_size_f +! NAME +! h5pset_sieve_buf_size_f +! +! PURPOSE +! Sets the maximum size of the data sieve buffer +! +! INPUTS +! +! plist_id - file access property list identifier +! size - sieve buffer size +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 7, 2002 +! +! SOURCE + SUBROUTINE h5pset_sieve_buf_size_f(plist_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier + INTEGER(SIZE_T), INTENT(IN) :: size ! Buffer size in bytes; + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + + INTERFACE + INTEGER FUNCTION h5pset_sieve_buf_size_c(plist_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SIEVE_BUF_SIZE_C'::h5pset_sieve_buf_size_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER(SIZE_T), INTENT(IN) :: size + END FUNCTION h5pset_sieve_buf_size_c + END INTERFACE + + hdferr = h5pset_sieve_buf_size_c(plist_id, size) + END SUBROUTINE h5pset_sieve_buf_size_f + +!****s* H5P/h5pget_sieve_buf_size_f +! NAME +! h5pget_sieve_buf_size_f +! +! PURPOSE +! Gets the maximum size of the data sieve buffer +! +! INPUTS +! +! plist_id - file access property list identifier +! OUTPUTS +! +! size - sieve buffer size +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 7, 2002 +! +! SOURCE + SUBROUTINE h5pget_sieve_buf_size_f(plist_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier + INTEGER(SIZE_T), INTENT(OUT) :: size ! Buffer size in bytes + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + + INTERFACE + INTEGER FUNCTION h5pget_sieve_buf_size_c(plist_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_SIEVE_BUF_SIZE_C'::h5pget_sieve_buf_size_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER(SIZE_T), INTENT(OUT) :: size + END FUNCTION h5pget_sieve_buf_size_c + END INTERFACE + + hdferr = h5pget_sieve_buf_size_c(plist_id, size) + END SUBROUTINE h5pget_sieve_buf_size_f + +!****s* H5P/h5pset_small_data_block_size_f +! NAME +! h5pset_small_data_block_size_f +! +! PURPOSE +! Sets the minimum size of "small" raw data block +! +! INPUTS +! +! plist_id - file access property list identifier +! size - small raw data block size +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 7, 2002 +! +! SOURCE + SUBROUTINE h5pset_small_data_block_size_f(plist_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier + INTEGER(HSIZE_T), INTENT(IN) :: size ! Small raw data block size + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + + INTERFACE + INTEGER FUNCTION h5pset_small_data_block_size_c(plist_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SMALL_DATA_BLOCK_SIZE_C'::h5pset_small_data_block_size_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER(HSIZE_T), INTENT(IN) :: size + END FUNCTION h5pset_small_data_block_size_c + END INTERFACE + + hdferr = h5pset_small_data_block_size_c(plist_id, size) + END SUBROUTINE h5pset_small_data_block_size_f + +!****s* H5P/h5pget_small_data_block_size_f +! NAME +! h5pget_small_data_block_size_f ! - INTERFACE - INTEGER FUNCTION h5pset_btree_ratios_c(prp_id, left, middle, right) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_BTREE_RATIOS_C'::h5pset_btree_ratios_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - REAL, INTENT(IN) :: left - REAL, INTENT(IN) :: middle - REAL, INTENT(IN) :: right - END FUNCTION h5pset_btree_ratios_c - END INTERFACE - - hdferr = h5pset_btree_ratios_c(prp_id, left, middle, right) - END SUBROUTINE h5pset_btree_ratios_f - -!---------------------------------------------------------------------- -! Name: h5pget_btree_ratios_f -! -! Purpose: Gets B-tree split ratios for a dataset transfer property list -! -! Inputs: -! prp_id - the dataset transfer property list -! identifier -! Outputs: -! left - the B-tree split ratio for left-most nodes -! middle - the B-tree split ratio for all other nodes -! right - the B-tree split ratio for right-most nodes -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Gets the minimum size of "small" raw data block ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 14, 2001 +! INPUTS +! +! plist_id - file access property list identifier +! OUTPUTS +! +! size - small raw data block size +! hdferr - error code +! Success: 0 +! Failure: -1 ! -! Comment: -!---------------------------------------------------------------------- +! AUTHOR +! Elena Pourmal +! October 7, 2002 +! +! SOURCE + SUBROUTINE h5pget_small_data_block_size_f(plist_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier + INTEGER(HSIZE_T), INTENT(OUT) :: size ! Small raw data block size + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** - SUBROUTINE h5pget_btree_ratios_f(prp_id, left, middle, right, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - REAL, INTENT(OUT) :: left !The B-tree split ratio for left-most nodes. - REAL, INTENT(OUT) :: middle !The B-tree split ratio for all other nodes - REAL, INTENT(OUT) :: right !The B-tree split ratio for right-most - !nodes and lone nodes. + INTERFACE + INTEGER FUNCTION h5pget_small_data_block_size_c(plist_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_SMALL_DATA_BLOCK_SIZE_C'::h5pget_small_data_block_size_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER(HSIZE_T), INTENT(OUT) :: size + END FUNCTION h5pget_small_data_block_size_c + END INTERFACE + + hdferr = h5pget_small_data_block_size_c(plist_id, size) + END SUBROUTINE h5pget_small_data_block_size_f + +!****s* H5P/h5pset_hyper_vector_size_f +! NAME +! h5pset_hyper_vector_size_f +! +! PURPOSE +! Set the number of "I/O" vectors (vector size) +! +! INPUTS +! +! plist_id - dataset transfer property list identifier +! size - vector size +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 7, 2002 +! +! SOURCE + SUBROUTINE h5pset_hyper_vector_size_f(plist_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset transfer property list identifier + INTEGER(SIZE_T), INTENT(IN) :: size ! Vector size + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pset_hyper_vector_size_c(plist_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_HYPER_VECTOR_SIZE_C'::h5pset_hyper_vector_size_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER(SIZE_T), INTENT(IN) :: size + END FUNCTION h5pset_hyper_vector_size_c + END INTERFACE + + hdferr = h5pset_hyper_vector_size_c(plist_id, size) + END SUBROUTINE h5pset_hyper_vector_size_f + +!****s* H5P/ h5pget_hyper_vector_size_f +! NAME +! h5pget_hyper_vector_size_f +! +! PURPOSE +! Get the number of "I/O" vectors (vector size) +! +! INPUTS +! +! plist_id - dataset transfer property list identifier +! OUTPUTS +! +! size - vector size +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 7, 2002 +! +! SOURCE + SUBROUTINE h5pget_hyper_vector_size_f(plist_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset transfer property list identifier + INTEGER(SIZE_T), INTENT(OUT) :: size ! Vector size + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTERFACE + INTEGER FUNCTION h5pget_hyper_vector_size_c(plist_id, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_HYPER_VECTOR_SIZE_C'::h5pget_hyper_vector_size_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER(SIZE_T), INTENT(OUT) :: size + END FUNCTION h5pget_hyper_vector_size_c + END INTERFACE -! INTEGER, EXTERNAL :: h5pget_btree_ratios_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5pget_btree_ratios_c(prp_id, left, middle, right) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_BTREE_RATIOS_C'::h5pget_btree_ratios_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - REAL, INTENT(OUT) :: left - REAL, INTENT(OUT) :: middle - REAL, INTENT(OUT) :: right - END FUNCTION h5pget_btree_ratios_c - END INTERFACE - - hdferr = h5pget_btree_ratios_c(prp_id, left, middle, right) - END SUBROUTINE h5pget_btree_ratios_f - -!---------------------------------------------------------------------- -! Name: h5pget_fclose_degree_f -! -! Purpose: Returns the degree for the file close behavior. -! -! Inputs: -! fapl_id - file access property list identifier -! Outputs: -! degree - one of the following: -! Possible values are: -! H5F_CLOSE_DEFAULT_F -! H5F_CLOSE_WEAK_F -! H5F_CLOSE_SEMI_F -! H5F_CLOSE_STRONG_F -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! September 26, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_fclose_degree_f(fapl_id, degree, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: fapl_id ! File Access Property list identifier - INTEGER, INTENT(OUT) :: degree ! Possible values - ! are: - ! H5F_CLOSE_DEFAULT_F - ! H5F_CLOSE_WEAK_F - ! H5F_CLOSE_SEMI_F - ! H5F_CLOSE_STRONG_F - - INTEGER, INTENT(OUT) :: hdferr ! Error code + hdferr = h5pget_hyper_vector_size_c(plist_id, size) + END SUBROUTINE h5pget_hyper_vector_size_f + +!****s* H5P/h5pexist_f +! NAME +! h5pexist_f +! +! PURPOSE +! Queries whether a property name exists in a property list or class. +! +! INPUTS +! +! prp_id - property list identifier to query +! name - name of property to check for +! OUTPUTS +! +! flag - logical flag +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5pexist_f(prp_id, name, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + LOGICAL, INTENT(OUT) :: flag ! .TRUE. if exists, .FALSE. otherwise + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pexist_c(prp_id, name, name_len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PEXIST_C'::h5pexist_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + END FUNCTION h5pexist_c + END INTERFACE + flag = .FALSE. + name_len = LEN(name) + hdferr = h5pexist_c(prp_id, name , name_len) + IF (hdferr > 0) THEN + flag = .TRUE. + hdferr = 0 + ENDIF + END SUBROUTINE h5pexist_f + +!****s* H5P/h5pget_size_f +! +! NAME +! h5pget_size_f +! +! PURPOSE +! Queries the size of a property value in bytes. +! +! INPUTS +! +! prp_id - property list identifier to query +! name - name of property to query +! OUTPUTS +! +! size - size of property in bytes +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! HISTORY +! +! +! SOURCE + SUBROUTINE h5pget_size_f(prp_id, name, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to query + INTEGER(SIZE_T), INTENT(OUT) :: size ! Size in bytes + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pget_size_c(prp_id, name, name_len, size) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_SIZE_C'::h5pget_size_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER(SIZE_T), INTENT(OUT) :: size + END FUNCTION h5pget_size_c + END INTERFACE + name_len = LEN(name) + hdferr = h5pget_size_c(prp_id, name , name_len, size) + END SUBROUTINE h5pget_size_f + +!****s* H5P/h5pget_npros_f +! NAME +! h5pget_npros_f +! +! PURPOSE +! Queries number of properties in property list or class +! +! INPUTS +! +! prp_id - iproperty list identifier to query +! OUTPUTS +! +! nprops - number of properties in property object +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5pget_nprops_f(prp_id, nprops, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(SIZE_T), INTENT(OUT) :: nprops ! Number of properties + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** -! INTEGER, EXTERNAL :: h5pget_fclose_degree_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5pget_fclose_degree_c(fapl_id, degree) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FCLOSE_DEGREE_C'::h5pget_fclose_degree_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: fapl_id - INTEGER, INTENT(OUT) :: degree - END FUNCTION h5pget_fclose_degree_c - END INTERFACE - - hdferr = h5pget_fclose_degree_c(fapl_id, degree) - END SUBROUTINE h5pget_fclose_degree_f - -!---------------------------------------------------------------------- -! Name: h5pset_fclose_degree_f -! -! Purpose: Sets the degree for the file close behavior. -! -! Inputs: -! fapl_id - file access property list identifier -! degree - one of the following: -! Possible values are: -! H5F_CLOSE_DEFAULT_F -! H5F_CLOSE_WEAK_F -! H5F_CLOSE_SEMI_F -! H5F_CLOSE_STRONG_F -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! September 26, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_fclose_degree_f(fapl_id, degree, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: fapl_id ! File Access Property list identifier - INTEGER, INTENT(IN) :: degree ! Possible values - ! are: - ! H5F_CLOSE_DEFAULT_F - ! H5F_CLOSE_WEAK_F - ! H5F_CLOSE_SEMI_F - ! H5F_CLOSE_STRONG_F - - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pset_fclose_degree_c(fapl_id, degree) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FCLOSE_DEGREE_C'::h5pset_fclose_degree_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: fapl_id - INTEGER, INTENT(IN) :: degree - END FUNCTION h5pset_fclose_degree_c - END INTERFACE - - hdferr = h5pset_fclose_degree_c(fapl_id, degree) - END SUBROUTINE h5pset_fclose_degree_f - -!---------------------------------------------------------------------- -! Name: h5pequal_f -! -! Purpose: Checks if two property lists are eqaul -! -! Inputs: -! plist1_id - property list identifier -! plist2_id - property list identifier -! Outputs: -! flag - flag, possible values -! .TRUE. or .FALSE. -! hdferr: - error code -! Success: 0 -! Failure: -1, flag is set to .FALSE. -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! September 30, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pequal_f(plist1_id, plist2_id, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist1_id ! Property list identifier - INTEGER(HID_T), INTENT(IN) :: plist2_id ! Property list identifier - LOGICAL, INTENT(OUT) :: flag ! Flag - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: c_flag - - INTERFACE - INTEGER FUNCTION h5pequal_c(plist1_id, plist2_id, c_flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PEQUAL_C'::h5pequal_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist1_id - INTEGER(HID_T), INTENT(IN) :: plist2_id - INTEGER, INTENT(OUT) :: c_flag - END FUNCTION h5pequal_c - END INTERFACE - - flag = .FALSE. - hdferr = h5pequal_c(plist1_id, plist2_id, c_flag) - if (c_flag .GT. 0) flag = .TRUE. - END SUBROUTINE h5pequal_f - -!---------------------------------------------------------------------- -! Name: h5pset_buffer_f -! -! Purpose: Sets sixe for conversion buffer -! -! Inputs: -! plist_id - data transfer property list identifier -! size - buffer size -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 2, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_buffer_f(plist_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! Data transfer property list identifier - INTEGER(HSIZE_T), INTENT(IN) :: size ! Buffer size in bytes; - ! buffer is allocated and freed by - ! the library. - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pset_buffer_c(plist_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_BUFFER_C'::h5pset_buffer_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER(HSIZE_T), INTENT(IN) :: size - END FUNCTION h5pset_buffer_c - END INTERFACE - - hdferr = h5pset_buffer_c(plist_id, size) - END SUBROUTINE h5pset_buffer_f - -!---------------------------------------------------------------------- -! Name: h5pget_buffer_f -! -! Purpose: Gets size for conversion buffer -! -! Inputs: -! plist_id - data transfer property list identifier -! Outputs: -! size - buffer size -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 2, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_buffer_f(plist_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! Data transfer property list identifier - INTEGER(HSIZE_T), INTENT(OUT) :: size ! Buffer size in bytes; - ! buffer is allocated and freed by - ! the library. - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pget_buffer_c(plist_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_BUFFER_C'::h5pget_buffer_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER(HSIZE_T), INTENT(OUT) :: size - END FUNCTION h5pget_buffer_c - END INTERFACE - - hdferr = h5pget_buffer_c(plist_id, size) - END SUBROUTINE h5pget_buffer_f - -!---------------------------------------------------------------------- -! Name: h5pfill_value_defined_f -! -! Purpose: Check if fill value is defined. -! -! Inputs: -! plist_id - dataset creation property list identifier -! Outputs: -! flag - fill value status flag -! Possible values are: -! H5D_FILL_VALUE_ERROR_F -! H5D_FILL_VALUE_UNDEFINED_F -! H5D_FILL_VALUE_DEFAULT_F -! H5D_FILL_VALUE_USER_DEFINED_F -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 4, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pfill_value_defined_f(plist_id, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER, INTENT(OUT) :: flag - INTEGER, INTENT(OUT) :: hdferr - - INTERFACE - INTEGER FUNCTION h5pfill_value_defined_c(plist_id, flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PFILL_VALUE_DEFINED_C'::h5pfill_value_defined_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER, INTENT(OUT) :: flag - END FUNCTION h5pfill_value_defined_c - END INTERFACE - - hdferr = h5pfill_value_defined_c(plist_id, flag) - END SUBROUTINE h5pfill_value_defined_f - -!---------------------------------------------------------------------- -! Name: h5pset_alloc_time_f -! -! Purpose: Set space allocation time for dataset during creation. -! -! Inputs: -! plist_id - dataset creation property list identifier -! flag - allocation time flag -! Possible values are: -! H5D_ALLOC_TIME_ERROR_F -! H5D_ALLOC_TIME_DEFAULT_F -! H5D_ALLOC_TIME_EARLY_F -! H5D_ALLOC_TIME_LATE_F -! H5D_ALLOC_TIME_INCR_F -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 4, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_alloc_time_f(plist_id, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER, INTENT(IN) :: flag - INTEGER, INTENT(OUT) :: hdferr - - INTERFACE - INTEGER FUNCTION h5pset_alloc_time_c(plist_id, flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_ALLOC_TIME_C'::h5pset_alloc_time_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER, INTENT(IN) :: flag - END FUNCTION h5pset_alloc_time_c - END INTERFACE - - hdferr = h5pset_alloc_time_c(plist_id, flag) - END SUBROUTINE h5pset_alloc_time_f - -!---------------------------------------------------------------------- -! Name: h5pget_alloc_time_f -! -! Purpose: Get space allocation time for dataset during creation. -! -! Inputs: -! plist_id - dataset creation property list identifier -! Outputs: -! flag - allocation time flag -! Possible values are: -! H5D_ALLOC_TIME_ERROR_F -! H5D_ALLOC_TIME_DEFAULT_F -! H5D_ALLOC_TIME_EARLY_F -! H5D_ALLOC_TIME_LATE_F -! H5D_ALLOC_TIME_INCR_F -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 4, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_alloc_time_f(plist_id, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER, INTENT(OUT) :: flag - INTEGER, INTENT(OUT) :: hdferr - - INTERFACE - INTEGER FUNCTION h5pget_alloc_time_c(plist_id, flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_ALLOC_TIME_C'::h5pget_alloc_time_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER, INTENT(OUT) :: flag - END FUNCTION h5pget_alloc_time_c - END INTERFACE - - hdferr = h5pget_alloc_time_c(plist_id, flag) - END SUBROUTINE h5pget_alloc_time_f - -!---------------------------------------------------------------------- -! Name: h5pset_fill_time_f -! -! Purpose: Set fill value writing time for dataset -! -! Inputs: -! plist_id - dataset creation property list identifier -! flag - fill time flag -! Possible values are: -! H5D_FILL_TIME_ERROR_F -! H5D_FILL_TIME_ALLOC_F -! H5D_FILL_TIME_NEVER_F -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 4, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_fill_time_f(plist_id, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER, INTENT(IN) :: flag - INTEGER, INTENT(OUT) :: hdferr - - INTERFACE - INTEGER FUNCTION h5pset_fill_time_c(plist_id, flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FILL_TIME_C'::h5pset_fill_time_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER, INTENT(IN) :: flag - END FUNCTION h5pset_fill_time_c - END INTERFACE - - hdferr = h5pset_fill_time_c(plist_id, flag) - END SUBROUTINE h5pset_fill_time_f - -!---------------------------------------------------------------------- -! Name: h5pget_fill_time_f -! -! Purpose: Get fill value writing time for dataset -! -! Inputs: -! plist_id - dataset creation property list identifier -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! flag - fill time flag -! Possible values are: -! H5D_FILL_TIME_ERROR_F -! H5D_FILL_TIME_ALLOC_F -! H5D_FILL_TIME_NEVER_F -! NONE -! -! Programmer: Elena Pourmal -! October 4, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_fill_time_f(plist_id, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER, INTENT(OUT) :: flag - INTEGER, INTENT(OUT) :: hdferr - - INTERFACE - INTEGER FUNCTION h5pget_fill_time_c(plist_id, flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILL_TIME_C'::h5pget_fill_time_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER, INTENT(OUT) :: flag - END FUNCTION h5pget_fill_time_c - END INTERFACE - - hdferr = h5pget_fill_time_c(plist_id, flag) - END SUBROUTINE h5pget_fill_time_f - -!---------------------------------------------------------------------- -! Name: h5pset_meta_block_size_f -! -! Purpose: Sets the minimum size of metadata block allocations -! -! Inputs: -! plist_id - file access property list identifier -! size - metatdata block size -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 7, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_meta_block_size_f(plist_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier - INTEGER(HSIZE_T), INTENT(IN) :: size ! Block size in bytes; - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pset_meta_block_size_c(plist_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_META_BLOCK_SIZE_C'::h5pset_meta_block_size_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER(HSIZE_T), INTENT(IN) :: size - END FUNCTION h5pset_meta_block_size_c - END INTERFACE - - hdferr = h5pset_meta_block_size_c(plist_id, size) - END SUBROUTINE h5pset_meta_block_size_f - -!---------------------------------------------------------------------- -! Name: h5pget_meta_block_size_f -! -! Purpose: Gets the minimum size of metadata block allocations -! -! Inputs: -! plist_id - file access property list identifier -! Outputs: -! size - metatdata block size -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 7, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_meta_block_size_f(plist_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier - INTEGER(HSIZE_T), INTENT(OUT) :: size ! Block size in bytes; - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pget_meta_block_size_c(plist_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_META_BLOCK_SIZE_C'::h5pget_meta_block_size_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER(HSIZE_T), INTENT(OUT) :: size - END FUNCTION h5pget_meta_block_size_c - END INTERFACE - - hdferr = h5pget_meta_block_size_c(plist_id, size) - END SUBROUTINE h5pget_meta_block_size_f - -!---------------------------------------------------------------------- -! Name: h5pset_sieve_buf_size_f -! -! Purpose: Sets the maximum size of the data sieve buffer -! -! Inputs: -! plist_id - file access property list identifier -! size - sieve buffer size -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 7, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_sieve_buf_size_f(plist_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier - INTEGER(SIZE_T), INTENT(IN) :: size ! Buffer size in bytes; - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pset_sieve_buf_size_c(plist_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SIEVE_BUF_SIZE_C'::h5pset_sieve_buf_size_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER(SIZE_T), INTENT(IN) :: size - END FUNCTION h5pset_sieve_buf_size_c - END INTERFACE - - hdferr = h5pset_sieve_buf_size_c(plist_id, size) - END SUBROUTINE h5pset_sieve_buf_size_f - -!---------------------------------------------------------------------- -! Name: h5pget_sieve_buf_size_f -! -! Purpose: Gets the maximum size of the data sieve buffer -! -! Inputs: -! plist_id - file access property list identifier -! Outputs: -! size - sieve buffer size -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 7, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_sieve_buf_size_f(plist_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier - INTEGER(SIZE_T), INTENT(OUT) :: size ! Buffer size in bytes - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pget_sieve_buf_size_c(plist_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_SIEVE_BUF_SIZE_C'::h5pget_sieve_buf_size_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER(SIZE_T), INTENT(OUT) :: size - END FUNCTION h5pget_sieve_buf_size_c - END INTERFACE - - hdferr = h5pget_sieve_buf_size_c(plist_id, size) - END SUBROUTINE h5pget_sieve_buf_size_f - -!---------------------------------------------------------------------- -! Name: h5pset_small_data_block_size_f -! -! Purpose: Sets the minimum size of "small" raw data block -! -! Inputs: -! plist_id - file access property list identifier -! size - small raw data block size -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 7, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_small_data_block_size_f(plist_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier - INTEGER(HSIZE_T), INTENT(IN) :: size ! Small raw data block size - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pset_small_data_block_size_c(plist_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SMALL_DATA_BLOCK_SIZE_C'::h5pset_small_data_block_size_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER(HSIZE_T), INTENT(IN) :: size - END FUNCTION h5pset_small_data_block_size_c - END INTERFACE - - hdferr = h5pset_small_data_block_size_c(plist_id, size) - END SUBROUTINE h5pset_small_data_block_size_f - -!---------------------------------------------------------------------- -! Name: h5pget_small_data_block_size_f -! -! Purpose: Gets the minimum size of "small" raw data block -! -! Inputs: -! plist_id - file access property list identifier -! Outputs: -! size - small raw data block size -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 7, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_small_data_block_size_f(plist_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list identifier - INTEGER(HSIZE_T), INTENT(OUT) :: size ! Small raw data block size - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pget_small_data_block_size_c(plist_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_SMALL_DATA_BLOCK_SIZE_C'::h5pget_small_data_block_size_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER(HSIZE_T), INTENT(OUT) :: size - END FUNCTION h5pget_small_data_block_size_c - END INTERFACE - - hdferr = h5pget_small_data_block_size_c(plist_id, size) - END SUBROUTINE h5pget_small_data_block_size_f - -!---------------------------------------------------------------------- -! Name: h5pset_hyper_vector_size_f -! -! Purpose: Set the number of "I/O" vectors (vector size) -! -! Inputs: -! plist_id - dataset transfer property list identifier -! size - vector size -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 7, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_hyper_vector_size_f(plist_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset transfer property list identifier - INTEGER(SIZE_T), INTENT(IN) :: size ! Vector size - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pset_hyper_vector_size_c(plist_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_HYPER_VECTOR_SIZE_C'::h5pset_hyper_vector_size_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER(SIZE_T), INTENT(IN) :: size - END FUNCTION h5pset_hyper_vector_size_c - END INTERFACE - - hdferr = h5pset_hyper_vector_size_c(plist_id, size) - END SUBROUTINE h5pset_hyper_vector_size_f - -!---------------------------------------------------------------------- -! Name: h5pget_hyper_vector_size_f -! -! Purpose: Get the number of "I/O" vectors (vector size) -! -! Inputs: -! plist_id - dataset transfer property list identifier -! Outputs: -! size - vector size -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 7, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_hyper_vector_size_f(plist_id, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset transfer property list identifier - INTEGER(SIZE_T), INTENT(OUT) :: size ! Vector size - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pget_hyper_vector_size_c(plist_id, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_HYPER_VECTOR_SIZE_C'::h5pget_hyper_vector_size_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id - INTEGER(SIZE_T), INTENT(OUT) :: size - END FUNCTION h5pget_hyper_vector_size_c - END INTERFACE - - hdferr = h5pget_hyper_vector_size_c(plist_id, size) - END SUBROUTINE h5pget_hyper_vector_size_f - -!---------------------------------------------------------------------- -! Name: h5pset_integer -! -! Purpose: Sets a property list value -! -! Inputs: -! prp_id - iproperty list identifier to modify -! name - name of property to modify -! value - value to set property to -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_integer(prp_id, name, value, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify - INTEGER, INTENT(IN) :: value ! Property value - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5pset_integer_c(prp_id, name, name_len, value) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_INTEGER_C'::h5pset_integer_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: prp_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - INTEGER, INTENT(IN) :: value - END FUNCTION h5pset_integer_c - END INTERFACE - - name_len = LEN(name) - hdferr = h5pset_integer_c(prp_id, name , name_len, value) - END SUBROUTINE h5pset_integer - -!---------------------------------------------------------------------- -! Name: h5pset_real -! -! Purpose: Sets a property list value -! -! Inputs: -! prp_id - iproperty list identifier to modify -! name - name of property to modify -! value - value to set property to -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_real(prp_id, name, value, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify - REAL, INTENT(IN) :: value ! Property value - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5pset_real_c(prp_id, name, name_len, value) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_REAL_C'::h5pset_real_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: prp_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - REAL, INTENT(IN) :: value - END FUNCTION h5pset_real_c - END INTERFACE - - name_len = LEN(name) - hdferr = h5pset_real_c(prp_id, name , name_len, value) - END SUBROUTINE h5pset_real - - -!---------------------------------------------------------------------- -! Name: h5pset_char -! -! Purpose: Sets a property list value -! -! Inputs: -! prp_id - iproperty list identifier to modify -! name - name of property to modify -! value - value to set property to -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_char(prp_id, name, value, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify - CHARACTER(LEN=*), INTENT(IN) :: value ! Property value - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - INTEGER :: value_len - - INTERFACE - INTEGER FUNCTION h5psetc_c(prp_id, name, name_len, value, value_len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSETC_C'::h5psetc_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - !DEC$ATTRIBUTES reference :: value - INTEGER(HID_T), INTENT(IN) :: prp_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - CHARACTER(LEN=*), INTENT(IN) :: value - INTEGER, INTENT(IN) :: value_len - END FUNCTION h5psetc_c - END INTERFACE - - name_len = LEN(name) - value_len = LEN(value) - hdferr = h5psetc_c(prp_id, name , name_len, value, value_len) - END SUBROUTINE h5pset_char - -!---------------------------------------------------------------------- -! Name: h5pget_integer -! -! Purpose: Gets a property list value -! -! Inputs: -! prp_id - iproperty list identifier to modify -! name - name of property to modify -! Outputs: -! value - value of property -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_integer(prp_id, name, value, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify - INTEGER, INTENT(OUT) :: value ! Property value - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5pget_integer_c(prp_id, name, name_len, value) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_INTEGER_C'::h5pget_integer_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: prp_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - INTEGER, INTENT(OUT) :: value - END FUNCTION h5pget_integer_c - END INTERFACE - - name_len = LEN(name) - hdferr = h5pget_integer_c(prp_id, name , name_len, value) - END SUBROUTINE h5pget_integer - -!---------------------------------------------------------------------- -! Name: h5pget_real -! -! Purpose: Gets a property list value -! -! Inputs: -! prp_id - iproperty list identifier to modify -! name - name of property to modify -! Outputs: -! value - value of property -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_real(prp_id, name, value, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify - REAL, INTENT(OUT) :: value ! Property value - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5pget_real_c(prp_id, name, name_len, value) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_REAL_C'::h5pget_real_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: prp_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - REAL, INTENT(OUT) :: value - END FUNCTION h5pget_real_c - END INTERFACE - - name_len = LEN(name) - hdferr = h5pget_real_c(prp_id, name , name_len, value) - END SUBROUTINE h5pget_real - - -!---------------------------------------------------------------------- -! Name: h5pget_char -! -! Purpose: Gets a property list value -! -! Inputs: -! prp_id - iproperty list identifier to modify -! name - name of property to modify -! Outputs: -! value - value of property -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_char(prp_id, name, value, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify - CHARACTER(LEN=*), INTENT(OUT) :: value ! Property value - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - INTEGER :: value_len - - INTERFACE - INTEGER FUNCTION h5pgetc_c(prp_id, name, name_len, value, value_len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGETC_C'::h5pgetc_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - !DEC$ATTRIBUTES reference :: value - INTEGER(HID_T), INTENT(IN) :: prp_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - CHARACTER(LEN=*), INTENT(OUT) :: value - INTEGER, INTENT(IN) :: value_len - END FUNCTION h5pgetc_c - END INTERFACE - - name_len = LEN(name) - value_len = LEN(value) - hdferr = h5pgetc_c(prp_id, name , name_len, value, value_len) - END SUBROUTINE h5pget_char - -!---------------------------------------------------------------------- -! Name: h5pexist_f -! -! Purpose: Queries whether a property name exists in a property list or class. -! -! Inputs: -! prp_id - iproperty list identifier to query -! name - name of property to check for -! Outputs: -! flag - logical flag -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pexist_f(prp_id, name, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify - LOGICAL, INTENT(OUT) :: flag ! .TRUE. if exists, .FALSE. - ! otherwise - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5pexist_c(prp_id, name, name_len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PEXIST_C'::h5pexist_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: prp_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - END FUNCTION h5pexist_c - END INTERFACE - flag = .FALSE. - name_len = LEN(name) - hdferr = h5pexist_c(prp_id, name , name_len) - if (hdferr > 0) then - flag = .TRUE. - hdferr = 0 - endif - END SUBROUTINE h5pexist_f - -!---------------------------------------------------------------------- -! Name: h5pget_size_f -! -! Purpose: Queries the size of a property value in bytes. -! -! Inputs: -! prp_id - property list identifier to query -! name - name of property to query -! Outputs: -! size - size of property in bytes -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_size_f(prp_id, name, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to query - INTEGER(SIZE_T), INTENT(OUT) :: size ! Size in bytes - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5pget_size_c(prp_id, name, name_len, size) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_SIZE_C'::h5pget_size_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: prp_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - INTEGER(SIZE_T), INTENT(OUT) :: size - END FUNCTION h5pget_size_c - END INTERFACE - name_len = LEN(name) - hdferr = h5pget_size_c(prp_id, name , name_len, size) - END SUBROUTINE h5pget_size_f - -!---------------------------------------------------------------------- -! Name: h5pget_npros_f -! -! Purpose: Queries number of properties in property list or class -! -! Inputs: -! prp_id - iproperty list identifier to query -! Outputs: -! nprops - number of properties in property object -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_nprops_f(prp_id, nprops, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(SIZE_T), INTENT(OUT) :: nprops ! iNumber of properties - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pget_nprops_c(prp_id, nprops) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_NPROPS_C'::h5pget_nprops_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(SIZE_T), INTENT(OUT) :: nprops - END FUNCTION h5pget_nprops_c - END INTERFACE - hdferr = h5pget_nprops_c(prp_id, nprops) - END SUBROUTINE h5pget_nprops_f - -!---------------------------------------------------------------------- -! Name: h5pget_class_name_f -! -! Purpose: Queries the name of a class. -! -! Inputs: -! prp_id - property list identifier to query -! Outputs: -! name - name of a class -! size - Actual length of the class name -! If provided buffer "name" is smaller, -! than name will be truncated to fit into -! provided user buffer -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: Returned the size of name as an argument -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_class_name_f(prp_id, name, size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - CHARACTER(LEN=*), INTENT(OUT) :: name ! Buffer to retireve class name - - INTEGER, INTENT(OUT) :: size ! Actual length of the class name - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5pget_class_name_c(prp_id, name, name_len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_CLASS_NAME_C'::h5pget_class_name_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: prp_id - CHARACTER(LEN=*), INTENT(INOUT) :: name - INTEGER, INTENT(IN) :: name_len - END FUNCTION h5pget_class_name_c - END INTERFACE - - name_len = LEN(name) - size = h5pget_class_name_c(prp_id, name, name_len) - - hdferr = 0 - IF(size.LT.0) hdferr = -1 - - END SUBROUTINE h5pget_class_name_f - -!---------------------------------------------------------------------- -! Name: h5pget_class_parent_f -! -! Purpose: Retrieves the parent class of a genric property class. -! -! Inputs: -! prp_id - property list identifier to query -! Outputs: -! parent_id - identifier of the parent class -! hdferr: - error code -! -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_class_parent_f(prp_id, parent_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HID_T), INTENT(OUT) :: parent_id ! Parent class property list - ! identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pget_class_parent_c(prp_id, parent_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_CLASS_PARENT_C'::h5pget_class_parent_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HID_T), INTENT(OUT) :: parent_id - END FUNCTION h5pget_class_parent_c - END INTERFACE - hdferr = h5pget_class_parent_c(prp_id, parent_id) - END SUBROUTINE h5pget_class_parent_f - -!---------------------------------------------------------------------- -! Name: h5pisa_class_f -! -! Purpose: Determines whether a property list is a member of a class. -! -! Inputs: -! plist - property list identifier -! pclass - identifier of the property class -! Outputs: -! flag - .TRUE. if a member, .FALSE. otherwise -! hdferr: - error code -! -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pisa_class_f(plist, pclass, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier - INTEGER(HID_T), INTENT(IN) :: pclass ! Class identifier - LOGICAL, INTENT(OUT) :: flag ! logical flag - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pisa_class_c(plist, pclass) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PISA_CLASS_C'::h5pisa_class_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist - INTEGER(HID_T), INTENT(IN) :: pclass - END FUNCTION h5pisa_class_c - END INTERFACE - flag = .FALSE. - hdferr = h5pisa_class_c(plist, pclass) - if (hdferr .gt. 0) then - flag = .TRUE. - hdferr = 0 - endif - END SUBROUTINE h5pisa_class_f - -!---------------------------------------------------------------------- -! Name: h5pcopy_prop_f -! -! Purpose: Copies a property from one list or class to another. -! -! Inputs: -! dst_id - Identifier of the destination property list -! src_id - Identifier of the source property list -! name - name of the property to copy -! Outputs: -! hdferr: - error code -! -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pcopy_prop_f(dst_id, src_id, name, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dst_id ! Destination property list - ! identifier - INTEGER(HID_T), INTENT(IN) :: src_id ! Source property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Property name - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5pcopy_prop_c(dst_id, src_id, name, name_len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PCOPY_PROP_C'::h5pcopy_prop_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: dst_id - INTEGER(HID_T), INTENT(IN) :: src_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - END FUNCTION h5pcopy_prop_c - END INTERFACE - name_len = LEN(name) - hdferr = h5pcopy_prop_c(dst_id, src_id, name , name_len) - END SUBROUTINE h5pcopy_prop_f - -!---------------------------------------------------------------------- -! Name: h5premove_f -! -! Purpose: Removes a property from a property list. - -! -! Inputs: -! plid - Property list identofoer -! name - name of the property to remove -! Outputs: -! hdferr: - error code -! -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5premove_f(plid, name, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plid ! property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! name of property to remove - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5premove_c(plid, name, name_len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PREMOVE_C'::h5premove_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: plid - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - END FUNCTION h5premove_c - END INTERFACE - name_len = LEN(name) - hdferr = h5premove_c(plid, name , name_len) - END SUBROUTINE h5premove_f - -!---------------------------------------------------------------------- -! Name: h5punregister_f -! -! Purpose: Removes a property from a property list class. - -! -! Inputs: -! class - Property list class identifier -! name - name of the property to remove -! Outputs: -! hdferr: - error code -! -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5punregister_f(class, name, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: class ! property list class identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! name of property to remove - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5punregister_c(class, name, name_len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PUNREGISTER_C'::h5punregister_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: class - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - END FUNCTION h5punregister_c - END INTERFACE - name_len = LEN(name) - hdferr = h5punregister_c(class, name , name_len) - END SUBROUTINE h5punregister_f - -!---------------------------------------------------------------------- -! Name: h5pclose_class_f -! -! Purpose: Closes an existing property list class. - -! -! Inputs: -! class - Property list class identifier -! Outputs: -! hdferr: - error code -! -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pclose_class_f(class, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: class ! property list class identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTERFACE - INTEGER FUNCTION h5pclose_class_c(class) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PCLOSE_CLASS_C'::h5pclose_class_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: class - END FUNCTION h5pclose_class_c - END INTERFACE - hdferr = h5pclose_class_c(class) - END SUBROUTINE h5pclose_class_f - -!---------------------------------------------------------------------- -! Name: h5pcreate_class_f -! -! Purpose: Create a new property list class - -! -! Inputs: -! parent - Property list identifier of the parent class -! Possible values include: -! H5P_ROOT_F -! H5P_FILE_CREATE_F -! H5P_FILE_ACCESS_F -! H5P_DATASET_CREATE_F -! H5P_DATASET_XFER_F -! H5P_FILE_MOUNT_F -! name - name of the class we are creating -! Outputs: -! class - porperty list class identifier -! hdferr: - error code -! -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 9, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pcreate_class_f(parent, name, class, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: parent ! parent property list class - ! identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! name of property tocreate - INTEGER(HID_T), INTENT(OUT) :: class ! property list class identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5pcreate_class_c(parent, name, name_len,& - class) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PCREATE_CLASS_C'::h5pcreate_class_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: parent - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - INTEGER(HID_T), INTENT(OUT) :: class - END FUNCTION h5pcreate_class_c - END INTERFACE - name_len = LEN(name) - hdferr = h5pcreate_class_c(parent, name , name_len, & - class) - END SUBROUTINE h5pcreate_class_f - -!---------------------------------------------------------------------- -! Name: h5pregister_integer -! -! Purpose: Registers a permanent property with a property list class. -! -! Inputs: -! class - property list class to register -! permanent property within -! name - name of property to register -! size - size of property in bytes -! value - default value for property in newly -! created property lists -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 10, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pregister_integer(class, name, size, value, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register - INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value - INTEGER, INTENT(IN) :: value ! Property value - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5pregister_integer_c(class, name, name_len, size, value) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PREGISTER_INTEGER_C'::h5pregister_integer_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: class - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - INTEGER(SIZE_T), INTENT(IN) :: size - INTEGER, INTENT(IN) :: value - END FUNCTION h5pregister_integer_c - END INTERFACE - - name_len = LEN(name) - hdferr = h5pregister_integer_c(class, name , name_len, size, value) - END SUBROUTINE h5pregister_integer - -!---------------------------------------------------------------------- -! Name: h5pregister_real -! -! Purpose: Registers a permanent property with a property list class. -! -! Inputs: -! class - property list class to register -! permanent property within -! name - name of property to register -! size - size of property in bytes -! value - default value for property in newly -! created property lists -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 10, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pregister_real(class, name, size, value, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register - INTEGER(SIZE_T), INTENT(IN) :: size ! size of the property value - REAL, INTENT(IN) :: value ! Property value - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5pregister_real_c(class, name, name_len, size, value) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PREGISTER_REAL_C'::h5pregister_real_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: class - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - INTEGER(SIZE_T), INTENT(IN) :: size - REAL, INTENT(IN) :: value - END FUNCTION h5pregister_real_c - END INTERFACE - - name_len = LEN(name) - hdferr = h5pregister_real_c(class, name , name_len, size, value) - END SUBROUTINE h5pregister_real - -!---------------------------------------------------------------------- -! Name: h5pregister_char -! -! Purpose: Registers a permanent property with a property list class. -! -! Inputs: -! class - property list class to register -! permanent property within -! name - name of property to register -! size - size of property in bytes -! value - default value for property in newly -! created property lists -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 10, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pregister_char(class, name, size, value, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register - INTEGER(SIZE_T), INTENT(IN) :: size ! size of the property value - CHARACTER(LEN=*), INTENT(IN) :: value ! Property value - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - INTEGER :: value_len - - INTERFACE - INTEGER FUNCTION h5pregisterc_c(class, name, name_len, size, value, & - value_len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PREGISTERC_C'::h5pregisterc_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - !DEC$ATTRIBUTES reference :: value - INTEGER(HID_T), INTENT(IN) :: class - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - INTEGER(SIZE_T), INTENT(IN) :: size - CHARACTER(LEN=*), INTENT(IN) :: value - INTEGER, INTENT(IN) :: value_len - END FUNCTION h5pregisterc_c - END INTERFACE - - name_len = LEN(name) - value_len = LEN(value) - hdferr = h5pregisterc_c(class, name , name_len, size, value, value_len) - END SUBROUTINE h5pregister_char - -!---------------------------------------------------------------------- -! Name: h5pinsert_integer -! -! Purpose: Registers a temporary property with a property list class. -! -! Inputs: -! plist - property list identifier -! name - name of property to insert -! size - size of property in bytes -! value - initial value for the property -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 10, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pinsert_integer(plist, name, size, value, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert - INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value - INTEGER, INTENT(IN) :: value ! Property value - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5pinsert_integer_c(plist, name, name_len, size, value) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PINSERT_INTEGER_C'::h5pinsert_integer_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: plist - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - INTEGER(SIZE_T), INTENT(IN) :: size - INTEGER, INTENT(IN) :: value - END FUNCTION h5pinsert_integer_c - END INTERFACE - - name_len = LEN(name) - hdferr = h5pinsert_integer_c(plist, name , name_len, size, value) - END SUBROUTINE h5pinsert_integer - -!---------------------------------------------------------------------- -! Name: h5pinsert_real -! -! Purpose: Registers a temporary property with a property list class. -! -! Inputs: -! plist - property list identifier -! permanent property within -! name - name of property to insert -! size - size of property in bytes -! value - initial value for the property -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 10, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pinsert_real(plist, name, size, value, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert - INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value - REAL, INTENT(IN) :: value ! Property value - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - - INTERFACE - INTEGER FUNCTION h5pinsert_real_c(plist, name, name_len, size, value) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PINSERT_REAL_C'::h5pinsert_real_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: plist - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - INTEGER(SIZE_T), INTENT(IN) :: size - REAL, INTENT(IN) :: value - END FUNCTION h5pinsert_real_c - END INTERFACE - - name_len = LEN(name) - hdferr = h5pinsert_real_c(plist, name , name_len, size, value) - END SUBROUTINE h5pinsert_real - - -!---------------------------------------------------------------------- -! Name: h5pinsert_char -! -! Purpose: Registers a temporary property with a property list class. -! -! Inputs: -! plist - property list identifier -! permanent property within -! name - name of property to insert -! size - size of property in bytes -! value - initial value for the property -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! October 10, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pinsert_char(plist, name, size, value, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert - INTEGER(SIZE_T), INTENT(IN) :: size ! Size of property value - CHARACTER(LEN=*), INTENT(IN) :: value ! Property value - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: name_len - INTEGER :: value_len - - INTERFACE - INTEGER FUNCTION h5pinsertc_c(plist, name, name_len, size, value, value_len) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PINSERTC_C'::h5pinsertc_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - !DEC$ATTRIBUTES reference :: value - INTEGER(HID_T), INTENT(IN) :: plist - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER, INTENT(IN) :: name_len - INTEGER(SIZE_T), INTENT(IN) :: size - CHARACTER(LEN=*), INTENT(IN) :: value - INTEGER, INTENT(IN) :: value_len - END FUNCTION h5pinsertc_c - END INTERFACE - - name_len = LEN(name) - value_len = LEN(value) - hdferr = h5pinsertc_c(plist, name , name_len, size, value, value_len) - END SUBROUTINE h5pinsert_char - -!---------------------------------------------------------------------- -! Name: h5pset_shuffle_f -! -! Purpose: Sets shuffling filter -! -! Inputs: -! prp_id - dataset creation property list identifier -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! March 12, 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pset_shuffle_f(prp_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pget_nprops_c(prp_id, nprops) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_NPROPS_C'::h5pget_nprops_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(SIZE_T), INTENT(OUT) :: nprops + END FUNCTION h5pget_nprops_c + END INTERFACE + hdferr = h5pget_nprops_c(prp_id, nprops) + END SUBROUTINE h5pget_nprops_f + +!****s* H5P/h5pget_class_name_f +! NAME +! h5pget_class_name_f +! +! PURPOSE +! Queries the name of a class. +! +! INPUTS +! +! prp_id - property list identifier to query +! OUTPUTS +! +! name - name of a class +! size - Actual length of the class name +! NOTE: If provided buffer "name" is smaller, +! than name will be truncated to fit into +! provided user buffer +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! HISTORY +! Returned the size of name as an argument +! +! SOURCE + SUBROUTINE h5pget_class_name_f(prp_id, name, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(OUT) :: name ! Buffer to retireve class name + INTEGER, INTENT(OUT) :: size ! Actual length of the class name + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pget_class_name_c(prp_id, name, name_len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_CLASS_NAME_C'::h5pget_class_name_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(INOUT) :: name + INTEGER, INTENT(IN) :: name_len + END FUNCTION h5pget_class_name_c + END INTERFACE + + name_len = LEN(name) + size = h5pget_class_name_c(prp_id, name, name_len) + + hdferr = 0 + IF(size.LT.0) hdferr = -1 + + END SUBROUTINE h5pget_class_name_f + +!****s* H5P/h5pget_class_parent_f +! NAME +! h5pget_class_parent_f +! +! PURPOSE +! Retrieves the parent class of a genric property class. +! +! INPUTS +! +! prp_id - property list identifier to query +! OUTPUTS +! +! parent_id - identifier of the parent class +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5pget_class_parent_f(prp_id, parent_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(OUT) :: parent_id ! Parent class property list + ! identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** -! INTEGER, EXTERNAL :: h5pset_shuffle_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5pset_shuffle_c(prp_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SHUFFLE_C'::h5pset_shuffle_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - END FUNCTION h5pset_shuffle_c - END INTERFACE - hdferr = h5pset_shuffle_c(prp_id) + INTERFACE + INTEGER FUNCTION h5pget_class_parent_c(prp_id, parent_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_CLASS_PARENT_C'::h5pget_class_parent_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(OUT) :: parent_id + END FUNCTION h5pget_class_parent_c + END INTERFACE + hdferr = h5pget_class_parent_c(prp_id, parent_id) + END SUBROUTINE h5pget_class_parent_f + +!****s* H5P/h5pisa_class_f +! NAME +! h5pisa_class_f +! +! PURPOSE +! Determines whether a property list is a member of a class. +! +! INPUTS +! +! plist - property list identifier +! pclass - identifier of the property class +! OUTPUTS +! +! flag - .TRUE. if a member, .FALSE. otherwise +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5pisa_class_f(plist, pclass, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: pclass ! Class identifier + LOGICAL, INTENT(OUT) :: flag ! logical flag + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTERFACE + INTEGER FUNCTION h5pisa_class_c(plist, pclass) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PISA_CLASS_C'::h5pisa_class_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: plist + INTEGER(HID_T), INTENT(IN) :: pclass + END FUNCTION h5pisa_class_c + END INTERFACE + flag = .FALSE. + hdferr = h5pisa_class_c(plist, pclass) + IF (hdferr .GT. 0) THEN + flag = .TRUE. + hdferr = 0 + ENDIF + END SUBROUTINE h5pisa_class_f + +!****s* H5P/h5pcopy_prop_f +! NAME +! h5pcopy_prop_f +! +! PURPOSE +! Copies a property from one list or class to another. +! +! INPUTS +! +! dst_id - Identifier of the destination property list +! src_id - Identifier of the source property list +! name - name of the property to copy +! OUTPUTS +! +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5pcopy_prop_f(dst_id, src_id, name, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dst_id ! Destination property list + ! identifier + INTEGER(HID_T), INTENT(IN) :: src_id ! Source property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Property name + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pcopy_prop_c(dst_id, src_id, name, name_len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PCOPY_PROP_C'::h5pcopy_prop_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: dst_id + INTEGER(HID_T), INTENT(IN) :: src_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + END FUNCTION h5pcopy_prop_c + END INTERFACE + name_len = LEN(name) + hdferr = h5pcopy_prop_c(dst_id, src_id, name , name_len) + END SUBROUTINE h5pcopy_prop_f + +!****s* H5P/h5premove_f +! NAME +! h5premove_f +! +! PURPOSE +! Removes a property from a property list. + +! +! INPUTS +! +! plid - Property list identofoer +! name - name of the property to remove +! OUTPUTS +! +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5premove_f(plid, name, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plid ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to remove + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5premove_c(plid, name, name_len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PREMOVE_C'::h5premove_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: plid + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + END FUNCTION h5premove_c + END INTERFACE + name_len = LEN(name) + hdferr = h5premove_c(plid, name , name_len) + END SUBROUTINE h5premove_f + +!****s* H5P/h5punregister_f +! NAME +! h5punregister_f +! +! PURPOSE +! Removes a property from a property list class. +! +! INPUTS +! +! class - Property list class identifier +! name - name of the property to remove +! OUTPUTS +! +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5punregister_f(class, name, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: class ! property list class identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! name of property to remove + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: name_len - END SUBROUTINE h5pset_shuffle_f + INTERFACE + INTEGER FUNCTION h5punregister_c(class, name, name_len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PUNREGISTER_C'::h5punregister_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: class + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + END FUNCTION h5punregister_c + END INTERFACE + name_len = LEN(name) + hdferr = h5punregister_c(class, name , name_len) + END SUBROUTINE h5punregister_f + +!****s* H5P/h5pclose_class_f +! NAME +! h5pclose_class_f +! +! PURPOSE +! Closes an existing property list class. +! +! INPUTS +! +! class - Property list class identifier +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5pclose_class_f(class, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTERFACE + INTEGER FUNCTION h5pclose_class_c(class) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PCLOSE_CLASS_C'::h5pclose_class_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: class + END FUNCTION h5pclose_class_c + END INTERFACE + hdferr = h5pclose_class_c(class) + END SUBROUTINE h5pclose_class_f -!---------------------------------------------------------------------- -! Name: h5pset_edc_check_f -! -! Purpose: Enables/disables error detecting +!****s* H5P/h5pset_shuffle_f +! NAME +! h5pset_shuffle_f ! -! Inputs: -! prp_id - dataset creation property list identifier -! flag - EDC flag; possible values: -! H5Z_DISABLE_EDC_F -! H5Z_ENABLE_EDC_F -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Sets shuffling filter ! -! Programmer: Elena Pourmal -! March 13, 2003 +! INPUTS +! prp_id - dataset creation property list identifier +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! Elena Pourmal +! March 12, 2003 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE + SUBROUTINE h5pset_shuffle_f(prp_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** - SUBROUTINE h5pset_edc_check_f(prp_id, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: flag ! Checksum filter flag - INTEGER, INTENT(OUT) :: hdferr ! Error code +! INTEGER, EXTERNAL :: h5pset_shuffle_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_shuffle_c(prp_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SHUFFLE_C'::h5pset_shuffle_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + END FUNCTION h5pset_shuffle_c + END INTERFACE + hdferr = h5pset_shuffle_c(prp_id) + + END SUBROUTINE h5pset_shuffle_f + +!****s* H5P/h5pset_edc_check_f +! NAME +! h5pset_edc_check_f +! +! PURPOSE +! Enables/disables error detecting +! +! INPUTS +! +! prp_id - dataset creation property list identifier +! flag - EDC flag; possible values: +! H5Z_DISABLE_EDC_F +! H5Z_ENABLE_EDC_F +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! March 13, 2003 +! +! SOURCE + SUBROUTINE h5pset_edc_check_f(prp_id, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: flag ! Checksum filter flag + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_edc_check_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_edc_check_c(prp_id, flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_EDC_CHECK_C'::h5pset_edc_check_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: flag - END FUNCTION h5pset_edc_check_c - END INTERFACE - hdferr = h5pset_edc_check_c(prp_id, flag) - - END SUBROUTINE h5pset_edc_check_f - -!---------------------------------------------------------------------- -! Name: h5pget_edc_check_f -! -! Purpose: Queries error detecting -! -! Inputs: -! prp_id - dataset creation property list identifier -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! March 13, 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pget_edc_check_f(prp_id, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset transfer property list identifier - INTEGER, INTENT(OUT) :: flag ! Checksum filter flag - ! May have one of the following values: - ! H5Z_ERROR_EDC_F - ! H5Z_DISABLE_EDC_F - ! H5Z_ENABLE_EDC_F - ! H5Z_NO_EDC_F - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pset_edc_check_c(prp_id, flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_EDC_CHECK_C'::h5pset_edc_check_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: flag + END FUNCTION h5pset_edc_check_c + END INTERFACE + hdferr = h5pset_edc_check_c(prp_id, flag) + + END SUBROUTINE h5pset_edc_check_f + +!****s* H5P/h5pget_edc_check_f +! NAME +! h5pget_edc_check_f +! +! PURPOSE +! Queries error detecting +! +! INPUTS +! +! prp_id - dataset creation property list identifier +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! March 13, 2003 +! +! SOURCE + SUBROUTINE h5pget_edc_check_f(prp_id, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset transfer property list identifier + INTEGER, INTENT(OUT) :: flag ! Checksum filter flag + ! May have one of the following values: + ! H5Z_ERROR_EDC_F + ! H5Z_DISABLE_EDC_F + ! H5Z_ENABLE_EDC_F + ! H5Z_NO_EDC_F + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_edc_check_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_edc_check_c(prp_id, flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_EDC_CHECK_C'::h5pget_edc_check_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(OUT) :: flag - END FUNCTION h5pget_edc_check_c - END INTERFACE - hdferr = h5pget_edc_check_c(prp_id, flag) - - END SUBROUTINE h5pget_edc_check_f -!---------------------------------------------------------------------- -! Name: h5pset_fletcher32_f -! -! Purpose: Sets Fletcher32 checksum of EDC for a dataset creation -! property list. -! -! Inputs: -! prp_id - dataset creation property list identifier -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! March 13, 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pset_fletcher32_f(prp_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pget_edc_check_c(prp_id, flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_EDC_CHECK_C'::h5pget_edc_check_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: flag + END FUNCTION h5pget_edc_check_c + END INTERFACE + hdferr = h5pget_edc_check_c(prp_id, flag) + + END SUBROUTINE h5pget_edc_check_f + +!****s* H5P/h5pset_fletcher32_f +! NAME +! h5pset_fletcher32_f +! +! PURPOSE +! Sets Fletcher32 checksum of EDC for a dataset creation +! property list. +! +! INPUTS +! +! prp_id - dataset creation property list identifier +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! March 13, 2003 +! +! SOURCE + SUBROUTINE h5pset_fletcher32_f(prp_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_fletcher32_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_fletcher32_c(prp_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FLETCHER32_C'::h5pset_fletcher32_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - END FUNCTION h5pset_fletcher32_c - END INTERFACE - hdferr = h5pset_fletcher32_c(prp_id) + INTERFACE + INTEGER FUNCTION h5pset_fletcher32_c(prp_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FLETCHER32_C'::h5pset_fletcher32_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + END FUNCTION h5pset_fletcher32_c + END INTERFACE + hdferr = h5pset_fletcher32_c(prp_id) - END SUBROUTINE h5pset_fletcher32_f + END SUBROUTINE h5pset_fletcher32_f -!---------------------------------------------------------------------- -! Name: h5pset_family_offset_f +!****s* H5P/ h5pset_family_offset_f +! NAME +! h5pset_family_offset_f ! -! Purpose: Sets offset for family file driver. +! PURPOSE +! Sets offset for family file driver. ! -! Inputs: -! prp_id - file creation property list identifier -! offset - file offset -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! prp_id - file creation property list identifier +! offset - file offset +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 ! -! Programmer: Elena Pourmal -! 19 March 2003 +! AUTHOR +! Elena Pourmal +! 19 March 2003 ! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pset_family_offset_f(prp_id, offset, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HSIZE_T), INTENT(IN) :: offset ! Offset in bytes - INTEGER, INTENT(OUT) :: hdferr ! Error code +! SOURCE + SUBROUTINE h5pset_family_offset_f(prp_id, offset, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HSIZE_T), INTENT(IN) :: offset ! Offset in bytes + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pset_family_offset_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_family_offset_c(prp_id, offset) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAMILY_OFFSET_C'::h5pset_family_offset_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER(HSIZE_T), INTENT(IN) :: offset - END FUNCTION h5pset_family_offset_c - END INTERFACE - hdferr = h5pset_family_offset_c(prp_id, offset) - - END SUBROUTINE h5pset_family_offset_f - -!---------------------------------------------------------------------- -! Name: h5pset_fapl_multi_l -! -! Purpose: Sets up use of the multi-file driver. -! -! Inputs: -! prp_id - file creation property list identifier -! mem_map - mapping array -! memb_fapl - property list for each memory usage type -! memb_name - names of member file -! relax - flag -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! 20 March 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pset_fapl_multi_l(prp_id, memb_map, memb_fapl, memb_name, memb_addr, relax, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier - INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_map - INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_fapl - CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_name - !INTEGER(HADDR_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_addr - REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_addr - LOGICAL, INTENT(IN) :: relax - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm - INTEGER :: maxlen - INTEGER :: flag - INTEGER :: i + INTERFACE + INTEGER FUNCTION h5pset_family_offset_c(prp_id, offset) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAMILY_OFFSET_C'::h5pset_family_offset_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(IN) :: offset + END FUNCTION h5pset_family_offset_c + END INTERFACE + hdferr = h5pset_family_offset_c(prp_id, offset) + + END SUBROUTINE h5pset_family_offset_f + +!****s* H5P/h5pset_fapl_multi_l +! NAME +! h5pset_fapl_multi_l +! +! PURPOSE +! Sets up use of the multi-file driver. +! +! INPUTS +! +! prp_id - file creation property list identifier +! mem_map - mapping array +! memb_fapl - property list for each memory usage type +! memb_name - names of member file +! relax - flag +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! 20 March 2003 +! +! SOURCE + SUBROUTINE h5pset_fapl_multi_l(prp_id, memb_map, memb_fapl, memb_name, memb_addr, relax, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_map ! Mapping array + INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_fapl ! Property list for each memory usage type + CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_name ! Names of member file + REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_addr + LOGICAL, INTENT(IN) :: relax ! Flag + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm + INTEGER :: maxlen + INTEGER :: flag + INTEGER :: i ! INTEGER, EXTERNAL :: h5pset_fapl_multi_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, & - maxlen, memb_addr, flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_MULTI_C'::h5pset_fapl_multi_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: memb_name - INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier - INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_map - INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_fapl - CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_name - REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_addr - !INTEGER(HADDR_T), DIMENSION(H5FD_MEM_NTYPES_F), INTENT(IN) :: memb_addr - INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm - INTEGER :: maxlen - INTEGER, INTENT(IN) :: flag - END FUNCTION h5pset_fapl_multi_c - END INTERFACE - maxlen = LEN(memb_name(1)) - do i=0, H5FD_MEM_NTYPES_F-1 - lenm(i) = LEN_TRIM(memb_name(i)) - enddo - flag = 0 - if (relax) flag = 1 - hdferr = h5pset_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, maxlen, memb_addr, flag) - - END SUBROUTINE h5pset_fapl_multi_l -!---------------------------------------------------------------------- -! Name: h5pset_fapl_multi_s -! -! Purpose: Sets up use of the multi-file driver. -! -! Inputs: -! prp_id - file creation property list identifier -! relax - flag -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! 31 March 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pset_fapl_multi_s(prp_id, relax, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier - LOGICAL, INTENT(IN) :: relax - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: flag + INTERFACE + INTEGER FUNCTION h5pset_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, & + maxlen, memb_addr, flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_MULTI_C'::h5pset_fapl_multi_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: memb_name + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_map + INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_fapl + CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_name + REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_addr + !INTEGER(HADDR_T), DIMENSION(H5FD_MEM_NTYPES_F), INTENT(IN) :: memb_addr + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm + INTEGER :: maxlen + INTEGER, INTENT(IN) :: flag + END FUNCTION h5pset_fapl_multi_c + END INTERFACE + maxlen = LEN(memb_name(1)) + DO i=0, H5FD_MEM_NTYPES_F-1 + lenm(i) = LEN_TRIM(memb_name(i)) + ENDDO + flag = 0 + IF (relax) flag = 1 + hdferr = h5pset_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, maxlen, memb_addr, flag) + + END SUBROUTINE h5pset_fapl_multi_l +!****s* H5P/h5pset_fapl_multi_s +! NAME +! h5pset_fapl_multi_s +! +! PURPOSE +! Sets up use of the multi-file driver. +! +! INPUTS +! +! prp_id - file creation property list identifier +! relax - flag +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! 31 March 2003 +! +! SOURCE + SUBROUTINE h5pset_fapl_multi_s(prp_id, relax, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + LOGICAL, INTENT(IN) :: relax + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: flag ! INTEGER, EXTERNAL :: h5pset_fapl_multi_sc ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_fapl_multi_sc(prp_id,flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_MULTI_SC'::h5pset_fapl_multi_sc - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier - INTEGER, INTENT(IN) :: flag - END FUNCTION h5pset_fapl_multi_sc - END INTERFACE - flag = 0 - if (relax) flag = 1 - hdferr = h5pset_fapl_multi_sc(prp_id, flag) - - END SUBROUTINE h5pset_fapl_multi_s -!---------------------------------------------------------------------- -! Name: h5pget_fapl_multi_f -! -! Purpose: Sets up use of the multi-file driver. -! -! Inputs: -! prp_id - file creation property list identifier -! Outputs: -! mem_map - mapping array -! memb_fapl - property list for each memory usage type -! memb_name - names of member file -! relax - flag -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! maxlen_out - maximum length for memb_name array element -! -! Programmer: Elena Pourmal -! 24 March 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pget_fapl_multi_f(prp_id, memb_map, memb_fapl, memb_name, memb_addr, relax, hdferr, maxlen_out) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier - INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_map - INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_fapl - CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_name - !INTEGER(HADDR_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_addr - REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_addr - INTEGER, OPTIONAL, INTENT(OUT) :: maxlen_out - LOGICAL, INTENT(OUT) :: relax - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm - INTEGER :: maxlen - INTEGER :: c_maxlen_out - INTEGER :: flag - INTEGER :: i + INTERFACE + INTEGER FUNCTION h5pset_fapl_multi_sc(prp_id,flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_MULTI_SC'::h5pset_fapl_multi_sc + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, INTENT(IN) :: flag + END FUNCTION h5pset_fapl_multi_sc + END INTERFACE + flag = 0 + IF (relax) flag = 1 + hdferr = h5pset_fapl_multi_sc(prp_id, flag) + + END SUBROUTINE h5pset_fapl_multi_s +!****s* H5P/h5pget_fapl_multi_f +! NAME +! h5pget_fapl_multi_f +! +! PURPOSE +! Sets up use of the multi-file driver. +! +! INPUTS +! +! prp_id - file creation property list identifier +! OUTPUTS +! +! mem_map - mapping array +! memb_fapl - property list for each memory usage type +! memb_name - names of member file +! relax - flag +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! OPTIONAL PARAMETERS +! maxlen_out - maximum length for memb_name array element +! +! AUTHOR +! Elena Pourmal +! 24 March 2003 +! +! SOURCE + SUBROUTINE h5pget_fapl_multi_f(prp_id, memb_map, memb_fapl, memb_name, memb_addr, relax, hdferr, maxlen_out) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_map + INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_fapl + CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_name + !INTEGER(HADDR_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_addr + REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_addr + INTEGER, OPTIONAL, INTENT(OUT) :: maxlen_out + LOGICAL, INTENT(OUT) :: relax + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm + INTEGER :: maxlen + INTEGER :: c_maxlen_out + INTEGER :: flag + INTEGER :: i ! INTEGER, EXTERNAL :: h5pget_fapl_multi_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, & - maxlen, memb_addr, flag, c_maxlen_out) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FAPL_MULTI_C'::h5pget_fapl_multi_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: memb_name - INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier - INTEGER, DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_map - INTEGER(HID_T), DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_fapl - CHARACTER(LEN=*), DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_name - REAL, DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_addr - INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm - INTEGER :: maxlen - INTEGER :: c_maxlen_out - INTEGER, INTENT(OUT) :: flag - END FUNCTION h5pget_fapl_multi_c - END INTERFACE - maxlen = LEN(memb_name(0)) - do i=0, H5FD_MEM_NTYPES_F-1 - lenm(i) = LEN_TRIM(memb_name(i)) - enddo - hdferr = h5pget_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, maxlen, memb_addr, flag, c_maxlen_out) - relax = .TRUE. - if(flag .eq. 0) relax = .FALSE. - if(present(maxlen_out)) maxlen_out = c_maxlen_out - END SUBROUTINE h5pget_fapl_multi_f -!---------------------------------------------------------------------- -! Name: h5pset_szip_f -! -! Purpose: Sets up use of szip compression -! -! Inputs: -! prp_id - dataset creation property list identifier -! options_mask -! pixels_per_block - szip parameters -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! April 10 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pset_szip_f(prp_id, options_mask, pixels_per_block, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property - ! list identifier - INTEGER, INTENT(IN) :: options_mask - INTEGER, INTENT(IN) :: pixels_per_block - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5pset_szip_c + INTERFACE + INTEGER FUNCTION h5pget_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, & + maxlen, memb_addr, flag, c_maxlen_out) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FAPL_MULTI_C'::h5pget_fapl_multi_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: memb_name + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_map + INTEGER(HID_T), DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_fapl + CHARACTER(LEN=*), DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_name + REAL, DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_addr + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm + INTEGER :: maxlen + INTEGER :: c_maxlen_out + INTEGER, INTENT(OUT) :: flag + END FUNCTION h5pget_fapl_multi_c + END INTERFACE + maxlen = LEN(memb_name(0)) + DO i=0, H5FD_MEM_NTYPES_F-1 + lenm(i) = LEN_TRIM(memb_name(i)) + ENDDO + hdferr = h5pget_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, maxlen, memb_addr, flag, c_maxlen_out) + relax = .TRUE. + IF(flag .EQ. 0) relax = .FALSE. + IF(PRESENT(maxlen_out)) maxlen_out = c_maxlen_out + END SUBROUTINE h5pget_fapl_multi_f +!****s* H5P/h5pset_szip_f +! NAME +! h5pset_szip_f +! +! PURPOSE +! Sets up use of szip compression +! +! INPUTS +! +! prp_id - dataset creation property list identifier +! options_mask - A bit-mask conveying the desired SZIP options. +! Current valid values in Fortran are: +! H5_SZIP_EC_OM_F +! H5_SZIP_NN_OM_F +! pixels_per_block - szip parameters +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! April 10 2003 +! +! SOURCE + SUBROUTINE h5pset_szip_f(prp_id, options_mask, pixels_per_block, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property + ! list identifier + INTEGER, INTENT(IN) :: options_mask ! A bit-mask conveying the desired + ! SZIP options + ! Current valid values in Fortran are: + ! H5_SZIP_EC_OM_F + ! H5_SZIP_NN_OM_F + INTEGER, INTENT(IN) :: pixels_per_block ! The number of pixels or data elements + ! in each data block + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + +! INTEGER, EXTERNAL :: h5pset_szip_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pset_szip_c(prp_id, options_mask, pixels_per_block) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SZIP_C'::h5pset_szip_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier - INTEGER, INTENT(IN) :: options_mask - INTEGER, INTENT(IN) :: pixels_per_block - END FUNCTION h5pset_szip_c - END INTERFACE - hdferr = h5pset_szip_c(prp_id, options_mask, pixels_per_block) - - END SUBROUTINE h5pset_szip_f - -!---------------------------------------------------------------------- -! Name: h5pall_filters_avail_f -! -! Purpose: Checks if all filters set in the dataset creation -! property list are available -! -! Inputs: -! prp_id - data creation property list identifier -! Outputs: -! flag - .TRUE. if all filters are available -! .FALSE. otherwise -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! April 10 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5pall_filters_avail_f(prp_id, flag, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property - ! list identifier - LOGICAL, INTENT(OUT) :: flag - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: status + INTERFACE + INTEGER FUNCTION h5pset_szip_c(prp_id, options_mask, pixels_per_block) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SZIP_C'::h5pset_szip_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, INTENT(IN) :: options_mask + INTEGER, INTENT(IN) :: pixels_per_block + END FUNCTION h5pset_szip_c + END INTERFACE + hdferr = h5pset_szip_c(prp_id, options_mask, pixels_per_block) + + END SUBROUTINE h5pset_szip_f + +!****s* H5P/h5pall_filters_avail_f +! NAME +! h5pall_filters_avail_f +! +! PURPOSE +! Checks if all filters set in the dataset creation +! property list are available +! +! INPUTS +! +! prp_id - data creation property list identifier +! OUTPUTS +! +! flag - .TRUE. if all filters are available +! .FALSE. otherwise +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! April 10 2003 +! +! SOURCE + SUBROUTINE h5pall_filters_avail_f(prp_id, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property + ! list identifier + LOGICAL, INTENT(OUT) :: flag ! .TRUE. if all filters are available + ! .FALSE. otherwise + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** + INTEGER :: status ! INTEGER, EXTERNAL :: h5pall_filters_avail_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pall_filters_avail_c(prp_id, status) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PALL_FILTERS_AVAIL_C'::h5pall_filters_avail_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier - INTEGER, INTENT(OUT) :: status - END FUNCTION h5pall_filters_avail_c - END INTERFACE - flag = .TRUE. - hdferr = h5pall_filters_avail_c(prp_id, status) - if (status .eq. 0 ) flag = .FALSE. - - END SUBROUTINE h5pall_filters_avail_f - -!---------------------------------------------------------------------- -! Name: h5pget_filter_by_id_f -! -! Purpose: Returns information about a filter in a pipeline -! -! Inputs: -! prp_id - data creation or transfer property list -! identifier -! Outputs: -! filter_id - filter identifier -! flags - bit vector specifying certain general -! properties of the filter -! cd_nelmts - number of elements in cd_values -! cd_values - auxiliary data for the filter -! namelen - number of characters in the name buffer -! name - buffer to retrieve filter name -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! April 10 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_filter_by_id_f(prp_id, filter_id, flags, cd_nelmts, cd_values, namelen, name, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - - INTEGER, INTENT(IN) :: filter_id ! Filter identifier - INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts !Number of elements in cd_values. - INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values !Auxiliary data for the filter. - INTEGER, INTENT(OUT) :: flags !Bit vector specifying certain general - !properties of the filter. - INTEGER(SIZE_T), INTENT(IN) :: namelen !Anticipated number of characters in name. - CHARACTER(LEN=*), INTENT(OUT) :: name !Name of the filter - - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pall_filters_avail_c(prp_id, status) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PALL_FILTERS_AVAIL_C'::h5pall_filters_avail_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, INTENT(OUT) :: status + END FUNCTION h5pall_filters_avail_c + END INTERFACE + flag = .TRUE. + hdferr = h5pall_filters_avail_c(prp_id, status) + IF (status .EQ. 0 ) flag = .FALSE. + + END SUBROUTINE h5pall_filters_avail_f + +!****s* H5P/h5pget_filter_by_id_f +! NAME +! h5pget_filter_by_id_f +! +! PURPOSE +! Returns information about a filter in a pipeline +! +! INPUTS +! +! prp_id - data creation or transfer property list +! identifier +! OUTPUTS +! +! filter_id - filter identifier +! flags - bit vector specifying certain general +! properties of the filter +! cd_nelmts - number of elements in cd_values +! cd_values - auxiliary data for the filter +! namelen - number of characters in the name buffer +! name - buffer to retrieve filter name +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! April 10 2003 +! +! SOURCE + SUBROUTINE h5pget_filter_by_id_f(prp_id, filter_id, flags, cd_nelmts, cd_values, namelen, name, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: filter_id ! Filter identifier + INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts ! Number of elements in cd_values. + INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values ! Auxiliary data for the filter. + INTEGER, INTENT(OUT) :: flags ! Bit vector specifying certain general + ! properties of the filter. + INTEGER(SIZE_T), INTENT(IN) :: namelen ! Anticipated number of characters in name. + CHARACTER(LEN=*), INTENT(OUT) :: name ! Name of the filter + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pget_filter_by_id_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pget_filter_by_id_c(prp_id, filter_id, flags, cd_nelmts, & - cd_values, namelen, name) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILTER_BY_ID_C'::h5pget_filter_by_id_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: filter_id - INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values - INTEGER, INTENT(OUT) :: flags - INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts - INTEGER(SIZE_T), INTENT(IN) :: namelen - CHARACTER(LEN=*), INTENT(OUT) :: name - END FUNCTION h5pget_filter_by_id_c - END INTERFACE - - hdferr = h5pget_filter_by_id_c(prp_id, filter_id, flags, cd_nelmts, & - cd_values, namelen, name) - END SUBROUTINE h5pget_filter_by_id_f - -!---------------------------------------------------------------------- -! Name: h5pmodify_filter_f -! -! Purpose: Adds a filter to the filter pipeline. -! -! Inputs: -! prp_id - data creation or transfer property list -! identifier -! filter - filter to be modified -! flags - bit vector specifying certain general -! properties of the filter -! cd_nelmts - number of elements in cd_values -! cd_values - auxiliary data for the filter -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! April 10 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pmodify_filter_f(prp_id, filter, flags, cd_nelmts, cd_values, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(IN) :: filter !Filter to be modified - INTEGER, INTENT(IN) :: flags !Bit vector specifying certain general - !properties of the filter. - INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts !Number of elements in cd_values. - INTEGER, DIMENSION(*), INTENT(IN) :: cd_values !Auxiliary data for the filter. - - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pget_filter_by_id_c(prp_id, filter_id, flags, cd_nelmts, & + cd_values, namelen, name) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILTER_BY_ID_C'::h5pget_filter_by_id_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: filter_id + INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values + INTEGER, INTENT(OUT) :: flags + INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts + INTEGER(SIZE_T), INTENT(IN) :: namelen + CHARACTER(LEN=*), INTENT(OUT) :: name + END FUNCTION h5pget_filter_by_id_c + END INTERFACE + + hdferr = h5pget_filter_by_id_c(prp_id, filter_id, flags, cd_nelmts, & + cd_values, namelen, name) + END SUBROUTINE h5pget_filter_by_id_f + +!****s* H5P/h5pmodify_filter_f +! NAME +! h5pmodify_filter_f +! +! PURPOSE +! Adds a filter to the filter pipeline. +! +! INPUTS +! +! prp_id - data creation or transfer property list +! identifier +! filter - filter to be modified +! flags - bit vector specifying certain general +! properties of the filter +! cd_nelmts - number of elements in cd_values +! cd_values - auxiliary data for the filter +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! April 10 2003 +! +! SOURCE + SUBROUTINE h5pmodify_filter_f(prp_id, filter, flags, cd_nelmts, cd_values, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: filter ! Filter to be modified + INTEGER, INTENT(IN) :: flags ! Bit vector specifying certain general + ! properties of the filter + INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts ! Number of elements in cd_values + INTEGER, DIMENSION(*), INTENT(IN) :: cd_values ! Auxiliary data for the filter + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5pmodify_filter_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5pmodify_filter_c(prp_id, filter, flags, cd_nelmts, cd_values) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PMODIFY_FILTER_C'::h5pmodify_filter_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: filter - INTEGER, INTENT(IN) :: flags - INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts - INTEGER, DIMENSION(*), INTENT(IN) :: cd_values - END FUNCTION h5pmodify_filter_c - END INTERFACE - - hdferr = h5pmodify_filter_c(prp_id, filter, flags, cd_nelmts, cd_values ) - END SUBROUTINE h5pmodify_filter_f - -!---------------------------------------------------------------------- -! Name: h5premove_filter_f -! -! Purpose: Delete one or more filters from the filter pipeline. -! -! Inputs: -! prp_id - data creation or transfer property list -! identifier -! filter - filter to be removed -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Quincey Koziol -! January 27 2004 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5premove_filter_f(prp_id, filter, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property list - ! identifier - INTEGER, INTENT(IN) :: filter ! Filter to be removed - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTERFACE + INTEGER FUNCTION h5pmodify_filter_c(prp_id, filter, flags, cd_nelmts, cd_values) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PMODIFY_FILTER_C'::h5pmodify_filter_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: filter + INTEGER, INTENT(IN) :: flags + INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts + INTEGER, DIMENSION(*), INTENT(IN) :: cd_values + END FUNCTION h5pmodify_filter_c + END INTERFACE + + hdferr = h5pmodify_filter_c(prp_id, filter, flags, cd_nelmts, cd_values ) + END SUBROUTINE h5pmodify_filter_f + +!****s* H5P/h5premove_filter_f +! NAME +! h5premove_filter_f +! +! PURPOSE +! Delete one or more filters from the filter pipeline. +! +! INPUTS +! +! prp_id - data creation or transfer property list +! identifier +! filter - filter to be removed +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Quincey Koziol +! January 27 2004 +! +! SOURCE + SUBROUTINE h5premove_filter_f(prp_id, filter, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property list + ! identifier + INTEGER, INTENT(IN) :: filter ! Filter to be removed + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! INTEGER, EXTERNAL :: h5premove_filter_c ! MS FORTRAN needs explicit interface for C functions called here. ! - INTERFACE - INTEGER FUNCTION h5premove_filter_c(prp_id, filter) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PREMOVE_FILTER_C'::h5premove_filter_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER, INTENT(IN) :: filter - END FUNCTION h5premove_filter_c - END INTERFACE - - hdferr = h5premove_filter_c(prp_id, filter) - END SUBROUTINE h5premove_filter_f - -!---------------------------------------------------------------------- -! Name: H5Pget_attr_phase_change_f -! -! Purpose: Retrieves attribute storage phase change thresholds -! -! Inputs: -! ocpl_id - Object (dataset or group) creation property list identifier -! Outputs: -! max_compact - Maximum number of attributes to be stored in compact storage -! (Default: 8) -! min_dense - Minimum number of attributes to be stored in dense storage -! (Default: 6) -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: M.S. Breitenfeld -! January, 2008 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - + INTERFACE + INTEGER FUNCTION h5premove_filter_c(prp_id, filter) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PREMOVE_FILTER_C'::h5premove_filter_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: filter + END FUNCTION h5premove_filter_c + END INTERFACE + + hdferr = h5premove_filter_c(prp_id, filter) + END SUBROUTINE h5premove_filter_f + +!****s* H5P/H5Pget_attr_phase_change_f +! NAME +! H5Pget_attr_phase_change_f +! +! PURPOSE +! Retrieves attribute storage phase change thresholds +! +! INPUTS +! +! ocpl_id - Object (dataset or group) creation property list identifier +! OUTPUTS +! +! max_compact - Maximum number of attributes to be stored in compact storage +! (Default: 8) +! min_dense - Minimum number of attributes to be stored in dense storage +! (Default: 6) +! hdferr - Error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 +! +! SOURCE SUBROUTINE h5pget_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: ocpl_id ! Object (dataset or group) creation property list identifier - INTEGER, INTENT(OUT) :: max_compact ! Maximum number of attributes to be stored in compact storage - !(Default: 8) - INTEGER, INTENT(OUT) :: min_dense ! Minimum number of attributes to be stored in dense storage - ! (Default: 6) - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(OUT) :: max_compact ! Maximum number of attributes to be stored in compact storage + ! (Default: 8) + INTEGER, INTENT(OUT) :: min_dense ! Minimum number of attributes to be stored in dense storage + ! (Default: 6) + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -5512,35 +4728,35 @@ hdferr = h5pget_attr_phase_change_c(ocpl_id, max_compact, min_dense) END SUBROUTINE h5pget_attr_phase_change_f -!---------------------------------------------------------------------- -! Name: H5Pset_attr_creation_order_f +!****s* H5P/H5Pset_attr_creation_order_f +! NAME +! H5Pset_attr_creation_order_f ! -! Purpose: Sets tracking and indexing of attribute creation order +! PURPOSE +! Sets tracking and indexing of attribute creation order ! -! Inputs: -! ocpl_id - Object creation property list identifier -! crt_order_flags - Flags specifying whether to track and index attribute creation order -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! ocpl_id - Object creation property list identifier +! crt_order_flags - Flags specifying whether to track and index attribute creation order +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! January, 2008 +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5pset_attr_creation_order_f(ocpl_id, crt_order_flags , hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: ocpl_id ! Object (dataset or group) creation property list identifier + INTEGER(HID_T), INTENT(IN) :: ocpl_id ! Object (dataset or group) creation property list identifier INTEGER, INTENT(IN) :: crt_order_flags ! Flags specifying whether to track and index attribute creation order - - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -5559,36 +4775,36 @@ hdferr = H5Pset_attr_creation_order_c(ocpl_id, crt_order_flags) END SUBROUTINE h5pset_attr_creation_order_f - -!---------------------------------------------------------------------- -! Name: H5Pset_shared_mesg_nindexes_f +!****s* H5P/H5Pset_shared_mesg_nindexes_f +! NAME +! H5Pset_shared_mesg_nindexes_f ! -! Purpose: Sets number of shared object header message indexes +! PURPOSE +! Sets number of shared object header message indexes ! -! Inputs: -! plist_id - file creation property list -! nindexes - Number of shared object header message indexes to be available in files created with this property list -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! plist_id - file creation property list +! nindexes - Number of shared object header message indexes to be available in files created with this property list +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! January, 2008 +! hdferr - error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5pset_shared_mesg_nindexes_f( plist_id, nindexes, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! file creation property list - INTEGER, INTENT(IN) :: nindexes ! Number of shared object header message indexes + INTEGER(HID_T), INTENT(IN) :: plist_id ! File creation property list + INTEGER, INTENT(IN) :: nindexes ! Number of shared object header message indexes ! available in files created WITH this property list INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -5598,7 +4814,7 @@ !DEC$IF DEFINED(HDF5F90_WINDOWS) !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SHARED_MESG_NINDEXES_C'::h5pset_shared_mesg_nindexes_c !DEC$ENDIF - + INTEGER(HID_T), INTENT(IN) :: plist_id INTEGER, INTENT(IN) :: nindexes @@ -5609,39 +4825,40 @@ END SUBROUTINE h5pset_shared_mesg_nindexes_f -!---------------------------------------------------------------------- -! Name: H5Pset_shared_mesg_index_f +!****s* H5P/H5Pset_shared_mesg_index_f +! NAME +! H5Pset_shared_mesg_index_f ! -! Purpose: Configures the specified shared object header message index +! PURPOSE +! Configures the specified shared object header message index ! -! Inputs: -! fcpl_id - File creation property list identifier. -! index_num - Index being configured. -! mesg_type_flags - Types of messages that should be stored in this index. -! min_mesg_size - Minimum message size. +! INPUTS +! +! fcpl_id - File creation property list identifier. +! index_num - Index being configured. +! mesg_type_flags - Types of messages that should be stored in this index. +! min_mesg_size - Minimum message size. ! -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! January, 2008 +! hdferr - error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5pset_shared_mesg_index_f(fcpl_id, index_num, mesg_type_flags, min_mesg_size, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: fcpl_id ! file creation property list - INTEGER, INTENT(IN) :: index_num ! Index being configured. + INTEGER(HID_T), INTENT(IN) :: fcpl_id ! file creation property list + INTEGER, INTENT(IN) :: index_num ! Index being configured. INTEGER, INTENT(IN) :: mesg_type_flags ! Types of messages that should be stored in this index. - INTEGER, INTENT(IN) :: min_mesg_size ! Minimum message size. - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(IN) :: min_mesg_size ! Minimum message size. + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -5652,8 +4869,8 @@ !DEC$IF DEFINED(HDF5F90_WINDOWS) !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_SHARED_MESG_INDEX_C'::h5pset_shared_mesg_index_c !DEC$ENDIF - - INTEGER(HID_T), INTENT(IN) :: fcpl_id + + INTEGER(HID_T), INTENT(IN) :: fcpl_id INTEGER, INTENT(IN) :: index_num INTEGER, INTENT(IN) :: mesg_type_flags INTEGER, INTENT(IN) :: min_mesg_size @@ -5665,35 +4882,36 @@ END SUBROUTINE h5pset_shared_mesg_index_f -!---------------------------------------------------------------------- -! Name: H5Pget_attr_creation_order_f +!****s* H5P/H5Pget_attr_creation_order_f +! NAME +! H5Pget_attr_creation_order_f ! -! Purpose: Retrieves tracking and indexing settings for attribute creation order +! PURPOSE +! Retrieves tracking and indexing settings for attribute creation order ! -! Inputs: -! ocpl_id - Object (group or dataset) creation property list identifier +! INPUTS ! -! Outputs: -! crt_order_flags - Flags specifying whether to track and index attribute creation order -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! ocpl_id - Object (group or dataset) creation property list identifier ! -! Programmer: M.S. Breitenfeld -! February, 2008 +! OUTPUTS ! -! Modifications: +! crt_order_flags - Flags specifying whether to track and index attribute creation order +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Comment: -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! February, 2008 +! +! SOURCE SUBROUTINE h5pget_attr_creation_order_f(ocpl_id, crt_order_flags, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: ocpl_id ! Object (group or dataset) creation property list identifier - INTEGER, INTENT(OUT) :: crt_order_flags ! Flags specifying whether to track and index attribute creation order + INTEGER(HID_T), INTENT(IN) :: ocpl_id ! Object (group or dataset) creation property list identifier + INTEGER, INTENT(OUT) :: crt_order_flags ! Flags specifying whether to track and index attribute creation order INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -5714,42 +4932,43 @@ END SUBROUTINE h5pget_attr_creation_order_f -!---------------------------------------------------------------------- -! Name: H5Pset_libver_bounds_f +!****s* H5P/H5Pset_libver_bounds_f +! NAME +! H5Pset_libver_bounds_f ! -! Purpose: Sets bounds on library versions, and indirectly format versions, to be used when creating objects. +! PURPOSE +! Sets bounds on library versions, and indirectly format versions, to be used when creating objects. ! -! Inputs: -! fapl_id - File access property list identifier -! low - The earliest version of the library that will be used for writing objects. -! high - The latest version of the library that will be used for writing objects. +! INPUTS ! -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! fapl_id - File access property list identifier +! low - The earliest version of the library that will be used for writing objects. +! high - The latest version of the library that will be used for writing objects. ! -! Programmer: M.S. Breitenfeld -! February 18, 2008 +! OUTPUTS ! -! Modifications: +! hdferr - error code +! Success: 0 +! Failure: -1 ! -! Comment: -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! February 18, 2008 +! +! SOURCE SUBROUTINE h5pset_libver_bounds_f(fapl_id, low, high, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: fapl_id ! File access property list identifier - INTEGER, INTENT(IN) :: low ! The earliest version of the library that will be used for writing objects. - ! Currently, low must be one of two pre-defined values: - ! HDF_LIBVER_EARLIEST_F - ! HDF_LIBVER_LATEST_F - INTEGER, INTENT(IN) :: high ! The latest version of the library that will be used for writing objects. - ! Currently, low must set to the pre-defined value: - ! HDF_LIBVER_LATEST_F - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(IN) :: low ! The earliest version of the library that will be used for writing objects. + ! Currently, low must be one of two pre-defined values: + ! HDF_LIBVER_EARLIEST_F + ! HDF_LIBVER_LATEST_F + INTEGER, INTENT(IN) :: high ! The latest version of the library that will be used for writing objects. + ! Currently, low must set to the pre-defined value: + ! HDF_LIBVER_LATEST_F + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -5771,35 +4990,36 @@ END SUBROUTINE h5pset_libver_bounds_f -!---------------------------------------------------------------------- -! Name: H5Pset_link_creation_order_f +!****s* H5P/H5Pset_link_creation_order_f +! NAME +! H5Pset_link_creation_order_f ! -! Purpose: Sets creation order tracking and indexing for links in a group. +! PURPOSE +! Sets creation order tracking and indexing for links in a group. ! -! Inputs: -! gcpl_id - Group creation property list identifier -! crt_order_flags - Creation order flag(s) +! INPUTS ! -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! gcpl_id - Group creation property list identifier +! crt_order_flags - Creation order flag(s) ! -! Programmer: M.S. Breitenfeld -! February 18, 2008 +! OUTPUTS ! -! Modifications: +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Comment: -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! February 18, 2008 +! +! SOURCE SUBROUTINE h5pset_link_creation_order_f(gcpl_id, crt_order_flags, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: gcpl_id ! File access property list identifier + INTEGER(HID_T), INTENT(IN) :: gcpl_id ! File access property list identifier INTEGER, INTENT(IN) :: crt_order_flags ! Creation order flag(s) INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -5820,36 +5040,37 @@ END SUBROUTINE h5pset_link_creation_order_f -!---------------------------------------------------------------------- -! Name: H5Pget_link_phase_change_f -! -! Purpose: Queries the settings for conversion between compact and dense groups. -! -! Inputs: -! gcpl_id - Group creation property list identifier -! Outputs: -! max_compact - Maximum number of attributes to be stored in compact storage -! min_dense - Minimum number of attributes to be stored in dense storage -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: M.S. Breitenfeld -! February 20, 2008 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - +!****s* H5P/H5Pget_link_phase_change_f +! NAME +! H5Pget_link_phase_change_f +! +! PURPOSE +! Queries the settings for conversion between compact and dense groups. +! +! INPUTS +! +! gcpl_id - Group creation property list identifier +! OUTPUTS +! +! max_compact - Maximum number of attributes to be stored in compact storage +! min_dense - Minimum number of attributes to be stored in dense storage +! hdferr - Error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! M. Scot Breitenfeld +! February 20, 2008 +! +! SOURCE SUBROUTINE h5pget_link_phase_change_f(gcpl_id, max_compact, min_dense, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier - INTEGER, INTENT(OUT) :: max_compact ! Maximum number of attributes to be stored in compact storage - INTEGER, INTENT(OUT) :: min_dense ! Minimum number of attributes to be stored in dense storage - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(OUT) :: max_compact ! Maximum number of attributes to be stored in compact storage + INTEGER, INTENT(OUT) :: min_dense ! Minimum number of attributes to be stored in dense storage + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -5869,36 +5090,37 @@ hdferr = h5pget_link_phase_change_c(gcpl_id, max_compact, min_dense) END SUBROUTINE h5pget_link_phase_change_f -!---------------------------------------------------------------------- -! Name: H5Pget_obj_track_times_f +!****s* H5P/H5Pget_obj_track_times_f +! NAME +! H5Pget_obj_track_times_f ! -! Purpose: Returns whether times are tracked for an object. +! PURPOSE +! Returns whether times are tracked for an object. ! -! Inputs: -! plist_id - property list id -! flag - object timestamp setting -! .TRUE.,.FALSE. -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! plist_id - property list id +! flag - object timestamp setting +! .TRUE.,.FALSE. +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! February 22, 2008 +! hdferr - error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! February 22, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5pget_obj_track_times_f(plist_id, flag, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property - ! list identifier + INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property + ! list identifier LOGICAL, INTENT(OUT) :: flag ! Object timestamp setting INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** INTEGER :: status ! ! MS FORTRAN needs explicit interface for C functions called here. @@ -5909,7 +5131,7 @@ !DEC$IF DEFINED(HDF5F90_WINDOWS) !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_OBJ_TRACK_TIMES_C'::h5pget_obj_track_times_c !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id ! File creation property list identifier + INTEGER(HID_T), INTENT(IN) :: plist_id ! File creation property list identifier INTEGER, INTENT(OUT) :: status END FUNCTION h5pget_obj_track_times_c END INTERFACE @@ -5919,50 +5141,52 @@ END SUBROUTINE h5pget_obj_track_times_f -!---------------------------------------------------------------------- -! Name: H5Pset_obj_track_times_f -! -! Purpose: Set whether the birth, access, modification & change times for -! an object are stored. -! -! Birth time is the time the object was created. Access time is -! the last time that metadata or raw data was read from this -! object. Modification time is the last time the data for -! this object was changed (either writing raw data to a dataset -! or inserting/modifying/deleting a link in a group). Change -! time is the last time the metadata for this object was written -! (adding/modifying/deleting an attribute on an object, extending -! the size of a dataset, etc). -! -! If these times are not tracked, they will be reported as -! 12:00 AM UDT, Jan. 1, 1970 (i.e. 0 seconds past the UNIX -! epoch) when queried. -! -! Inputs: -! plist_id - property list id -! flag - object timestamp setting -! .TRUE.,.FALSE. -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: M.S. Breitenfeld -! February 22, 2008 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - +!****s* H5P/H5Pset_obj_track_times_f +! NAME +! H5Pset_obj_track_times_f +! +! PURPOSE +! Set whether the birth, access, modification & change times for +! an object are stored. +! +! Birth time is the time the object was created. Access time is +! the last time that metadata or raw data was read from this +! object. Modification time is the last time the data for +! this object was changed (either writing raw data to a dataset +! or inserting/modifying/deleting a link in a group). Change +! time is the last time the metadata for this object was written +! (adding/modifying/deleting an attribute on an object, extending +! the size of a dataset, etc). +! +! If these times are not tracked, they will be reported as +! 12:00 AM UDT, Jan. 1, 1970 (i.e. 0 seconds past the UNIX +! epoch) when queried. +! +! INPUTS +! +! plist_id - property list id +! flag - object timestamp setting +! .TRUE.,.FALSE. +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! M. Scot Breitenfeld +! February 22, 2008 +! +! +! SOURCE SUBROUTINE h5pset_obj_track_times_f(plist_id, flag, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property ! list identifier LOGICAL, INTENT(IN) :: flag ! Object timestamp setting INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** INTEGER :: status ! ! MS FORTRAN needs explicit interface for C functions called here. @@ -5973,7 +5197,7 @@ !DEC$IF DEFINED(HDF5F90_WINDOWS) !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_OBJ_TRACK_TIMES_C'::h5pset_obj_track_times_c !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: plist_id ! File creation property list identifier + INTEGER(HID_T), INTENT(IN) :: plist_id ! File creation property list identifier INTEGER, INTENT(IN) :: status END FUNCTION h5pset_obj_track_times_c END INTERFACE @@ -5985,38 +5209,41 @@ END SUBROUTINE h5pset_obj_track_times_f -!---------------------------------------------------------------------- -! Name: H5Pset_create_inter_group_f +!****s* H5P/H5Pset_create_inter_group_f +! NAME +! H5Pset_create_inter_group_f ! -! Purpose: Specifies in property list whether to create missing intermediate groups. +! PURPOSE +! Specifies in property list whether to create missing intermediate groups. ! -! Inputs: -! lcpl_id - Link creation property list identifier -! crt_intermed_group - crt_intermed_group specifying whether -! to create intermediate groups upon the creation -! of an object -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! lcpl_id - Link creation property list identifier +! crt_intermed_group - crt_intermed_group specifying whether +! to create intermediate groups upon the creation +! of an object +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! February 22, 2008 +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! February 22, 2008 ! -! Comment: The long subroutine name (>31) on older f90 compilers causes problems +! HISTORY +! The long subroutine name (>31) on older f90 compilers causes problems ! so had to shorten the name -!-------------------------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5pset_create_inter_group_f(lcpl_id, crt_intermed_group, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: lcpl_id ! Link creation property list identifier + INTEGER(HID_T), INTENT(IN) :: lcpl_id ! Link creation property list identifier INTEGER, INTENT(IN) :: crt_intermed_group ! specifying whether to create intermediate groups ! upon the creation of an object INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6035,35 +5262,36 @@ END SUBROUTINE h5pset_create_inter_group_f -!---------------------------------------------------------------------- -! Name: H5Pget_link_creation_order_f +!****s* H5P/H5Pget_link_creation_order_f +! NAME +! H5Pget_link_creation_order_f ! -! Purpose: Queries whether link creation order is tracked and/or indexed in a group. +! PURPOSE +! Queries whether link creation order is tracked and/or indexed in a group. ! -! Inputs: -! gcpl_id - Group creation property list identifier +! INPUTS ! -! Outputs: -! crt_order_flags - Creation order flag(s) -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! gcpl_id - Group creation property list identifier ! -! Programmer: M.S. Breitenfeld -! March 3, 2008 +! OUTPUTS ! -! Modifications: +! crt_order_flags - Creation order flag(s) +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Comment: -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! March 3, 2008 +! +! SOURCE SUBROUTINE h5pget_link_creation_order_f(gcpl_id, crt_order_flags, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier INTEGER, INTENT(OUT) :: crt_order_flags ! Creation order flag(s) INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6084,40 +5312,39 @@ END SUBROUTINE h5pget_link_creation_order_f -!---------------------------------------------------------------------- -! Name: H5Pset_char_encoding +!****s* H5P/H5Pset_char_encoding_f +! NAME +! H5Pset_char_encoding_f ! -! Purpose: Sets the character encoding used to encode a string. +! PURPOSE +! Sets the character encoding used to encode a string. ! -! Inputs: -! plist_id - Property list identifier -! encoding - Valid values for encoding are: -! H5T_CSET_ASCII_F -> US ASCII -! H5T_CSET_UTF8_F -> UTF-8 Unicode encoding +! INPUTS ! -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! plist_id - Property list identifier +! encoding - Valid values for encoding are: +! H5T_CSET_ASCII_F -> US ASCII +! H5T_CSET_UTF8_F -> UTF-8 Unicode encoding ! -! Programmer: M.S. Breitenfeld -! March 3, 2008 +! OUTPUTS +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! March 3, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5pset_char_encoding_f(plist_id, encoding, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: plist_id ! Property list identifier - - INTEGER, INTENT(IN) :: encoding ! String encoding character set: -! H5T_CSET_ASCII_F -> US ASCII -! H5T_CSET_UTF8_F -> UTF-8 Unicode encoding - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(IN) :: encoding ! String encoding character set: + ! H5T_CSET_ASCII_F -> US ASCII + ! H5T_CSET_UTF8_F -> UTF-8 Unicode encoding + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6138,40 +5365,41 @@ END SUBROUTINE h5pset_char_encoding_f -!---------------------------------------------------------------------- -! Name: H5Pget_char_encoding +!****s* H5P/H5Pget_char_encoding_f +! NAME +! H5Pget_char_encoding_f ! -! Purpose: Retrieves the character encoding used to create a string +! PURPOSE +! Retrieves the character encoding used to create a string ! -! Inputs: -! plist_id - Property list identifier +! INPUTS ! -! Outputs: -! encoding - Valid values for encoding are: -! H5T_CSET_ASCII_F -> US ASCII -! H5T_CSET_UTF8_F -> UTF-8 Unicode encoding -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! plist_id - Property list identifier ! -! Programmer: M.S. Breitenfeld -! March 3, 2008 +! OUTPUTS ! -! Modifications: +! encoding - Valid values for encoding are: +! H5T_CSET_ASCII_F -> US ASCII +! H5T_CSET_UTF8_F -> UTF-8 Unicode encoding +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Comment: -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! March 3, 2008 +! +! SOURCE SUBROUTINE h5pget_char_encoding_f(plist_id, encoding, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: plist_id ! Property list identifier - INTEGER, INTENT(OUT) :: encoding ! Valid values for encoding are: -! H5T_CSET_ASCII_F -> US ASCII -! H5T_CSET_UTF8_F -> UTF-8 Unicode encoding + INTEGER, INTENT(OUT) :: encoding ! Valid values for encoding are: + ! H5T_CSET_ASCII_F -> US ASCII + ! H5T_CSET_UTF8_F -> UTF-8 Unicode encoding INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6192,29 +5420,31 @@ END SUBROUTINE h5pget_char_encoding_f -!---------------------------------------------------------------------- -! Name: h5pset_copy_object_f +!****s* H5P/h5pset_copy_object_f +! NAME +! h5pset_copy_object_f ! -! Purpose: Sets properties to be used when an object is copied. +! PURPOSE +! Sets properties to be used when an object is copied. ! -! Inputs: -! ocp_plist_id - Object copy property list identifier -! copy_options - Copy option(s) to be set -! Outputs: -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! ocp_plist_id - Object copy property list identifier +! copy_options - Copy option(s) to be set +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 ! -! Programmer: M.S. Breitenfeld -! March 3, 2008 +! AUTHOR +! M. Scot Breitenfeld +! March 3, 2008 ! -! Modifications: +! HISTORY ! -! Comment: -!---------------------------------------------------------------------- - +! +! SOURCE SUBROUTINE h5pset_copy_object_f(ocp_plist_id, copy_options, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: ocp_plist_id ! Object copy property list identifier @@ -6226,6 +5456,7 @@ ! H5O_COPY_WITHOUT_ATTR_FLAG_F INTEGER, INTENT(OUT) :: hdferr ! Error code ! 0 on success and -1 on failure +!***** ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6242,39 +5473,43 @@ hdferr = h5pset_copy_object_c(ocp_plist_id, copy_options) END SUBROUTINE h5pset_copy_object_f -!---------------------------------------------------------------------- -! Name: h5pget_copy_object_f +!****s* H5P/h5pget_copy_object_f +! NAME +! h5pget_copy_object_f ! -! Purpose: Retrieves the properties to be used when an object is copied. +! PURPOSE +! Retrieves the properties to be used when an object is copied. ! -! Inputs: -! ocp_plist_id - Object copy property list identifier -! Outputs: -! copy_options - Copy option(s) to be get -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! ocp_plist_id - Object copy property list identifier +! OUTPUTS +! +! copy_options - Copy option(s) to be get +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Programmer: M.S. Breitenfeld -! March 3, 2008 +! AUTHOR +! M. Scot Breitenfeld +! March 3, 2008 ! -! Modifications: +! HISTORY ! -! Comment: -!---------------------------------------------------------------------- - +! +! SOURCE SUBROUTINE h5pget_copy_object_f(ocp_plist_id, copy_options, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: ocp_plist_id ! Object copy property list identifier - INTEGER, INTENT(OUT) :: copy_options ! valid copy options returned are: - ! H5O_COPY_SHALLOW_HIERARCHY_F - ! H5O_COPY_EXPAND_SOFT_LINK_F - ! H5O_COPY_EXPAND_EXT_LINK_F - ! H5O_COPY_EXPAND_REFERENCE_F - ! H5O_COPY_WITHOUT_ATTR_FLAG_F - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(OUT) :: copy_options ! Valid copy options returned are: + ! H5O_COPY_SHALLOW_HIERARCHY_F + ! H5O_COPY_EXPAND_SOFT_LINK_F + ! H5O_COPY_EXPAND_EXT_LINK_F + ! H5O_COPY_EXPAND_REFERENCE_F + ! H5O_COPY_WITHOUT_ATTR_FLAG_F + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6291,41 +5526,43 @@ hdferr = h5pget_copy_object_c(ocp_plist_id, copy_options) END SUBROUTINE h5pget_copy_object_f -!---------------------------------------------------------------------- -! Name: h5pget_data_transform_f -! -! Purpose: Retrieves a data transform expression. -! -! Inputs: -! plist_id - Identifier of the property list or class -! Outputs: -! expression - buffer to hold transform expression -! hdferr - error code -! Success: Actual lenght of the expression -! If provided buffer "expression" is -! smaller, than expression will be -! truncated to fit into -! provided user buffer -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: M.S. Breitenfeld -! March 19, 2008 -! -! Modifications: -! -! Comment: Should hdferr return just 0 or 1 and add another arguement for the size? -!---------------------------------------------------------------------- - - SUBROUTINE h5pget_data_transform_f(plist_id, expression, hdferr, size) +!****s* H5P/h5pget_data_transform_f +! NAME +! h5pget_data_transform_f +! +! PURPOSE +! Retrieves a data transform expression. +! +! INPUTS +! +! plist_id - Identifier of the property list or class +! OUTPUTS +! +! expression - buffer to hold transform expression +! hdferr - Error code +! Success: Actual lenght of the expression +! If provided buffer "expression" is +! smaller, than expression will be +! truncated to fit into +! provided user buffer +! Failure: -1 +! +! AUTHOR +! M. Scot Breitenfeld +! March 19, 2008 +! +! HISTORY +! +! Should hdferr return just 0 or 1 and add another arguement for the size? +! SOURCE +SUBROUTINE h5pget_data_transform_f(plist_id, expression, hdferr, size) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! Identifier of the property list or class - CHARACTER(LEN=*), INTENT(OUT) :: expression ! Buffer to hold transform expression - - INTEGER(SIZE_T), INTENT(OUT), OPTIONAL :: size ! registered size of the transform expression - - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), INTENT(IN) :: plist_id ! Identifier of the property list or class + CHARACTER(LEN=*), INTENT(OUT) :: expression ! Buffer to hold transform expression + INTEGER(SIZE_T), INTENT(OUT), OPTIONAL :: size ! Registered size of the transform expression + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** INTEGER :: expression_len INTEGER(SIZE_T) :: size_default @@ -6339,8 +5576,8 @@ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_DATA_TRANSFORM_C'::h5pget_data_transform_c !DEC$ENDIF !DEC$ATTRIBUTES reference :: expression - INTEGER(HID_T), INTENT(IN) :: plist_id - CHARACTER(LEN=*), INTENT(OUT) :: expression + INTEGER(HID_T), INTENT(IN) :: plist_id + CHARACTER(LEN=*), INTENT(OUT) :: expression INTEGER(SIZE_T) :: size_default INTEGER :: expression_len END FUNCTION h5pget_data_transform_c @@ -6355,34 +5592,35 @@ END SUBROUTINE h5pget_data_transform_f -!---------------------------------------------------------------------- -! Name: h5pset_data_transform_f -! -! Purpose: Sets a data transform expression. +!****s* H5P/h5pset_data_transform_f +! NAME +! h5pset_data_transform_f ! -! Inputs: -! plist_id - Identifier of the property list or class -! expression - buffer to hold transform expression -! Outputs: -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Sets a data transform expression. ! -! Programmer: M.S. Breitenfeld -! March 19, 2008 +! INPUTS +! +! plist_id - Identifier of the property list or class +! expression - Buffer to hold transform expression +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! March 19, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5pset_data_transform_f(plist_id, expression, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: plist_id ! Identifier of the property list or class - CHARACTER(LEN=*), INTENT(IN) :: expression ! Buffer to hold transform expression - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), INTENT(IN) :: plist_id ! Identifier of the property list or class + CHARACTER(LEN=*), INTENT(IN) :: expression ! Buffer to hold transform expression + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** INTEGER :: expression_len ! MS FORTRAN needs explicit interface for C functions called here. @@ -6394,7 +5632,7 @@ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_DATA_TRANSFORM_C'::h5pset_data_transform_c !DEC$ENDIF !DEC$ATTRIBUTES reference :: expression - INTEGER(HID_T), INTENT(IN) :: plist_id + INTEGER(HID_T), INTENT(IN) :: plist_id CHARACTER(LEN=*), INTENT(IN) :: expression INTEGER :: expression_len END FUNCTION h5pset_data_transform_c @@ -6405,34 +5643,35 @@ END SUBROUTINE h5pset_data_transform_f -!---------------------------------------------------------------------- -! Name: H5Pget_local_heap_size_hint_f +!****s* H5P/H5Pget_local_heap_size_hint_f +! NAME +! H5Pget_local_heap_size_hint_f ! -! Purpose: Queries the local heap size hint for original-style groups. +! PURPOSE +! Queries the local heap size hint for original-style groups. ! -! Inputs: -! gcpl_id - Group creation property list identifier -! Outputs: -! size_hint - Hint for size of local heap -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! gcpl_id - Group creation property list identifier +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! March 21, 2008 +! size_hint - Hint for size of local heap +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! March 21, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5pget_local_heap_size_hint_f(gcpl_id, size_hint, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier + INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier INTEGER(SIZE_T), INTENT(OUT) :: size_hint ! Hint for size of local heap - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6451,36 +5690,40 @@ END SUBROUTINE h5pget_local_heap_size_hint_f -!---------------------------------------------------------------------- -! Name: H5Pget_est_link_info_f +!****s* H5P/H5Pget_est_link_info_f +! NAME +! H5Pget_est_link_info_f ! -! Purpose: Queries data required to estimate required local heap or object header size. +! PURPOSE +! Queries data required to estimate required local heap or object header size. ! -! Inputs: -! gcpl_id - Group creation property list identifier -! Outputs: -! est_num_entries - Estimated number of links to be inserted into group -! est_name_len - Estimated average length of link names -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! gcpl_id - Group creation property list identifier +! OUTPUTS +! +! est_num_entries - Estimated number of links to be inserted into group +! est_name_len - Estimated average length of link names +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Programmer: M.S. Breitenfeld -! March 21, 2008 +! AUTHOR +! M. Scot Breitenfeld +! March 21, 2008 ! -! Modifications: +! HISTORY ! -! Comment: -!---------------------------------------------------------------------- - +! +! SOURCE SUBROUTINE h5pget_est_link_info_f(gcpl_id, est_num_entries, est_name_len, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier + INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier INTEGER, INTENT(OUT) :: est_num_entries ! Estimated number of links to be inserted into group INTEGER, INTENT(OUT) :: est_name_len ! Estimated average length of link names - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6490,7 +5733,7 @@ !DEC$IF DEFINED(HDF5F90_WINDOWS) !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_EST_LINK_INFO_C'::h5pget_est_link_info_c !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: gcpl_id + INTEGER(HID_T), INTENT(IN) :: gcpl_id INTEGER, INTENT(OUT) :: est_num_entries INTEGER, INTENT(OUT) :: est_name_len END FUNCTION h5pget_est_link_info_c @@ -6500,34 +5743,35 @@ END SUBROUTINE h5pget_est_link_info_f -!---------------------------------------------------------------------- -! Name: H5Pset_local_heap_size_hint_f +!****s* H5P/H5Pset_local_heap_size_hint_f +! NAME +! H5Pset_local_heap_size_hint_f ! -! Purpose: Sets the local heap size hint for original-style groups. +! PURPOSE +! Sets the local heap size hint for original-style groups. ! -! Inputs: -! gcpl_id - Group creation property list identifier -! size_hint - Hint for size of local heap -! Outputs: -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! gcpl_id - Group creation property list identifier +! size_hint - Hint for size of local heap +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! March 21, 2008 +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! March 21, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5pset_local_heap_size_hint_f(gcpl_id, size_hint, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier + INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier INTEGER(SIZE_T), INTENT(IN) :: size_hint ! Hint for size of local heap - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6546,36 +5790,37 @@ END SUBROUTINE h5pset_local_heap_size_hint_f -!---------------------------------------------------------------------- -! Name: h5pset_est_link_info_f +!****s* H5P/h5pset_est_link_info_f +! NAME +! h5pset_est_link_info_f ! -! Purpose: Sets estimated number of links and length of link names in a group. +! PURPOSE +! Sets estimated number of links and length of link names in a group. ! -! Inputs: -! gcpl_id - Group creation property list identifier -! est_num_entries - Estimated number of links to be inserted into group -! est_name_len - Estimated average length of link names -! Outputs: -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! gcpl_id - Group creation property list identifier +! est_num_entries - Estimated number of links to be inserted into group +! est_name_len - Estimated average length of link names +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! March 21, 2008 +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! March 21, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5pset_est_link_info_f(gcpl_id, est_num_entries, est_name_len, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier + INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier INTEGER, INTENT(IN) :: est_num_entries ! Estimated number of links to be inserted into group INTEGER, INTENT(IN) :: est_name_len ! Estimated average length of link names - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6585,7 +5830,7 @@ !DEC$IF DEFINED(HDF5F90_WINDOWS) !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_EST_LINK_INFO_C'::h5pset_est_link_info_c !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: gcpl_id + INTEGER(HID_T), INTENT(IN) :: gcpl_id INTEGER, INTENT(IN) :: est_num_entries INTEGER, INTENT(IN) :: est_name_len END FUNCTION h5pset_est_link_info_c @@ -6595,36 +5840,37 @@ END SUBROUTINE h5pset_est_link_info_f -!---------------------------------------------------------------------- -! Name: h5pset_link_phase_change_f +!****s* H5P/h5pset_link_phase_change_f +! NAME +! h5pset_link_phase_change_f ! -! Purpose: Sets the parameters for conversion between compact and dense groups. +! PURPOSE +! Sets the parameters for conversion between compact and dense groups. ! -! Inputs: -! gcpl_id - Group creation property list identifier -! max_compact - Maximum number of attributes to be stored in compact storage -! min_dense - Minimum number of attributes to be stored in dense storage -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! gcpl_id - Group creation property list identifier +! max_compact - Maximum number of attributes to be stored in compact storage +! min_dense - Minimum number of attributes to be stored in dense storage +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! March 21, 2008 +! hdferr - error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! March 21, 2008 ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_link_phase_change_f(gcpl_id, max_compact, min_dense, hdferr) +! SOURCE +SUBROUTINE h5pset_link_phase_change_f(gcpl_id, max_compact, min_dense, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier - INTEGER, INTENT(IN) :: max_compact ! Maximum number of attributes to be stored in compact storage - INTEGER, INTENT(IN) :: min_dense ! Minimum number of attributes to be stored in dense storage - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(IN) :: max_compact ! Maximum number of attributes to be stored in compact storage + INTEGER, INTENT(IN) :: min_dense ! Minimum number of attributes to be stored in dense storage + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6644,38 +5890,39 @@ hdferr = h5pset_link_phase_change_c(gcpl_id, max_compact, min_dense) END SUBROUTINE h5pset_link_phase_change_f -!---------------------------------------------------------------------- -! Name: h5pset_fapl_direct_f -! -! Purpose: Sets up use of the direct I/O driver. -! -! Inputs: -! fapl_id - File access property list identifier -! alignment - Required memory alignment boundary -! block_size - File system block size -! cbuf_size - Copy buffer size -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: M.S. Breitenfeld -! March 21, 2008 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_fapl_direct_f(fapl_id, alignment, block_size, cbuf_size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: fapl_id ! File access property list identifier - INTEGER(SIZE_T), INTENT(IN) :: alignment ! Required memory alignment boundary! - INTEGER(SIZE_T), INTENT(IN) :: block_size ! File system block size - INTEGER(SIZE_T), INTENT(IN) :: cbuf_size ! Copy buffer size - INTEGER, INTENT(OUT) :: hdferr ! Error code +!****s* H5P/h5pset_fapl_direct_f +! NAME +! h5pset_fapl_direct_f +! +! PURPOSE +! Sets up use of the direct I/O driver. +! +! INPUTS +! +! fapl_id - File access property list identifier +! alignment - Required memory alignment boundary +! block_size - File system block size +! cbuf_size - Copy buffer size +! OUTPUTS +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! M. Scot Breitenfeld +! March 21, 2008 +! +! SOURCE +SUBROUTINE h5pset_fapl_direct_f(fapl_id, alignment, block_size, cbuf_size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: fapl_id ! File access property list identifier + INTEGER(SIZE_T), INTENT(IN) :: alignment ! Required memory alignment boundary! + INTEGER(SIZE_T), INTENT(IN) :: block_size ! File system block size + INTEGER(SIZE_T), INTENT(IN) :: cbuf_size ! Copy buffer size + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6685,7 +5932,7 @@ !DEC$IF DEFINED(HDF5F90_WINDOWS) !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_DIRECT_C'::h5pset_fapl_direct_c !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: fapl_id + INTEGER(HID_T), INTENT(IN) :: fapl_id INTEGER(SIZE_T), INTENT(IN) :: alignment INTEGER(SIZE_T), INTENT(IN) :: block_size INTEGER(SIZE_T), INTENT(IN) :: cbuf_size @@ -6695,38 +5942,39 @@ hdferr = H5Pset_fapl_direct_c(fapl_id, alignment, block_size, cbuf_size) END SUBROUTINE h5pset_fapl_direct_f -!---------------------------------------------------------------------- -! Name: h5pget_fapl_direct_f +!****s* H5P/h5pget_fapl_direct_f +! NAME +! h5pget_fapl_direct_f ! -! Purpose: Gets up use of the direct I/O driver. +! PURPOSE +! Gets up use of the direct I/O driver. ! -! Inputs: -! fapl_id - File access property list identifier -! Outputs: -! alignment - Required memory alignment boundary -! block_size - File system block size -! cbuf_size - Copy buffer size -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! fapl_id - File access property list identifier +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! March 21, 2008 +! alignment - Required memory alignment boundary +! block_size - File system block size +! cbuf_size - Copy buffer size +! hdferr - error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! March 21, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5pget_fapl_direct_f(fapl_id, alignment, block_size, cbuf_size, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: fapl_id ! File access property list identifier - INTEGER(SIZE_T), INTENT(OUT) :: alignment ! Required memory alignment boundary! - INTEGER(SIZE_T), INTENT(OUT) :: block_size ! File system block size - INTEGER(SIZE_T), INTENT(OUT) :: cbuf_size ! Copy buffer size - INTEGER, INTENT(OUT) :: hdferr ! Error code + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: fapl_id ! File access property list identifier + INTEGER(SIZE_T), INTENT(OUT) :: alignment ! Required memory alignment boundary! + INTEGER(SIZE_T), INTENT(OUT) :: block_size ! File system block size + INTEGER(SIZE_T), INTENT(OUT) :: cbuf_size ! Copy buffer size + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6736,7 +5984,7 @@ !DEC$IF DEFINED(HDF5F90_WINDOWS) !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FAPL_DIRECT_C'::h5pget_fapl_direct_c !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: fapl_id + INTEGER(HID_T), INTENT(IN) :: fapl_id INTEGER(SIZE_T), INTENT(OUT) :: alignment INTEGER(SIZE_T), INTENT(OUT) :: block_size INTEGER(SIZE_T), INTENT(OUT) :: cbuf_size @@ -6746,40 +5994,41 @@ hdferr = H5Pget_fapl_direct_c(fapl_id, alignment, block_size, cbuf_size) END SUBROUTINE h5pget_fapl_direct_f -!---------------------------------------------------------------------- -! Name: H5Pset_attr_phase_change_f -! -! Purpose: Sets attribute storage phase change thresholds. -! -! Inputs: -! ocpl_id - Object (dataset or group) creation property list identifier -! Outputs: -! max_compact - Maximum number of attributes to be stored in compact storage -! (Default: 8) -! min_dense - Minimum number of attributes to be stored in dense storage -! (Default: 6) -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: M.S. Breitenfeld -! January, 2008 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) +!****s* H5P/H5Pset_attr_phase_change_f +! NAME +! H5Pset_attr_phase_change_f +! +! PURPOSE +! Sets attribute storage phase change thresholds. +! +! INPUTS +! +! ocpl_id - Object (dataset or group) creation property list identifier +! OUTPUTS +! +! max_compact - Maximum number of attributes to be stored in compact storage +! (Default: 8) +! min_dense - Minimum number of attributes to be stored in dense storage +! (Default: 6) +! hdferr - Error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! M. Scot Breitenfeld +! January, 2008 +! +! SOURCE +SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: ocpl_id ! Object (dataset or group) creation property list identifier - INTEGER, INTENT(IN) :: max_compact ! Maximum number of attributes to be stored in compact storage - !(Default: 8) - INTEGER, INTENT(IN) :: min_dense ! Minimum number of attributes to be stored in dense storage - ! (Default: 6) - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(IN) :: max_compact ! Maximum number of attributes to be stored in compact storage + !(Default: 8) + INTEGER, INTENT(IN) :: min_dense ! Minimum number of attributes to be stored in dense storage + ! (Default: 6) + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6801,33 +6050,36 @@ END SUBROUTINE h5pset_attr_phase_change_f -!---------------------------------------------------------------------- -! Name: H5Pset_nbit_f +!****s* H5P/H5Pset_nbit_f +! NAME +! H5Pset_nbit_f ! -! Purpose: Sets up the use of the N-Bit filter. +! PURPOSE +! Sets up the use of the N-Bit filter. ! -! Inputs: -! plist_id - Dataset creation property list identifier. -! Outputs: -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! plist_id - Dataset creation property list identifier. +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! March 21, 2008 +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! March 21, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! +! +! SOURCE SUBROUTINE h5pset_nbit_f(plist_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property list identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! MS FORTRAN needs explicit interface for C functions called here. ! INTERFACE @@ -6844,37 +6096,40 @@ END SUBROUTINE h5pset_nbit_f -!---------------------------------------------------------------------- -! Name: h5pset_scaleoffset_f +!****s* H5P/h5pset_scaleoffset_f +! NAME +! h5pset_scaleoffset_f ! -! Purpose: Sets up the use of the Scale-Offset filter. +! PURPOSE +! Sets up the use of the Scale-Offset filter. ! -! Inputs: -! plist_id - Dataset creation property list identifier. -! scale_type - Flag indicating compression method. -! scale_factor - Parameter related to scale. -! Outputs: -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! +! plist_id - Dataset creation property list identifier. +! scale_type - Flag indicating compression method. +! scale_factor - Parameter related to scale. +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! March 21, 2008 +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! March 21, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! +! +! SOURCE SUBROUTINE h5pset_scaleoffset_f(plist_id, scale_type, scale_factor, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property list identifier - INTEGER, INTENT(IN) :: scale_type ! Flag indicating compression method. - INTEGER, INTENT(IN) :: scale_factor ! parameter related to scale. + INTEGER, INTENT(IN) :: scale_type ! Flag indicating compression method. + INTEGER, INTENT(IN) :: scale_factor ! Parameter related to scale. INTEGER, INTENT(OUT) :: hdferr ! Error code - + ! 0 on success and -1 on failure +!***** ! MS FORTRAN needs explicit interface for C functions called here. ! INTERFACE @@ -6893,35 +6148,39 @@ END SUBROUTINE h5pset_scaleoffset_f -!---------------------------------------------------------------------- -! Name: h5pset_nlinks_f +!****s* H5P/h5pset_nlinks_f +! NAME +! h5pset_nlinks_f ! -! Purpose: Sets maximum number of soft or user-defined link traversals. +! PURPOSE +! Sets maximum number of soft or user-defined link traversals. ! -! Inputs: -! lapl_id - File access property list identifier -! nlinks - Maximum number of links to traverse +! INPUTS +! +! lapl_id - File access property list identifier +! nlinks - Maximum number of links to traverse ! -! Outputs: -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! March 24, 2008 +! hdferr - Error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! March 24, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! +! +! SOURCE SUBROUTINE h5pset_nlinks_f(lapl_id, nlinks, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: lapl_id ! File access property list identifier INTEGER(SIZE_T), INTENT(IN) :: nlinks ! Maximum number of links to traverse - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! MS FORTRAN needs explicit interface for C functions called here. ! @@ -6940,36 +6199,36 @@ END SUBROUTINE h5pset_nlinks_f -!---------------------------------------------------------------------- -! Name: h5pget_nlinks_f +!****s* H5P/h5pget_nlinks_f +! NAME +! h5pget_nlinks_f ! -! Purpose: Gets maximum number of soft or user-defined link traversals. +! PURPOSE +! Gets maximum number of soft or user-defined link traversals. ! -! Inputs: -! lapl_id - File access property list identifier -! nlinks - Maximum number of links to traverse +! INPUTS +! +! lapl_id - File access property list identifier +! nlinks - Maximum number of links to traverse ! -! Outputs: -! hdferr - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! OUTPUTS ! -! Programmer: M.S. Breitenfeld -! March 24, 2008 +! hdferr - error code +! Success: 0 +! Failure: -1 ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! March 24, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5pget_nlinks_f(lapl_id, nlinks, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: lapl_id ! File access property list identifier + INTEGER(HID_T), INTENT(IN) :: lapl_id ! File access property list identifier INTEGER(SIZE_T), INTENT(OUT) :: nlinks ! Maximum number of links to traverse - INTEGER, INTENT(OUT) :: hdferr ! Error code - + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** ! MS FORTRAN needs explicit interface for C functions called here. ! INTERFACE @@ -6987,38 +6246,41 @@ END SUBROUTINE h5pget_nlinks_f -!---------------------------------------------------------------------- -! Name: H5Pget_create_inter_group_f -! -! Purpose: Determines whether property is set to enable creating missing intermediate groups. -! -! Inputs: -! lcpl_id - Link creation property list identifier -! crt_intermed_group - Specifying whether to create intermediate groups upon -! the creation of an object -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: M.S. Breitenfeld -! April 4, 2008 -! -! Modifications: -! -! Comment: The long subroutine name (>31) on older f90 compilers causes problems -! so had to shorten the name -!-------------------------------------------------------------------------------------- - +!****s* H5P/H5Pget_create_inter_group_f +! NAME +! H5Pget_create_inter_group_f +! +! PURPOSE +! Determines whether property is set to enable creating missing intermediate groups. +! +! INPUTS +! +! lcpl_id - Link creation property list identifier +! crt_intermed_group - Specifying whether to create intermediate groups upon +! the creation of an object +! OUTPUTS +! +! hdferr - Error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! M. Scot Breitenfeld +! April 4, 2008 +! +! HISTORY +! +! The long subroutine name (>31) on older f90 compilers causes problems +! so the name was shortened +! SOURCE SUBROUTINE h5pget_create_inter_group_f(lcpl_id, crt_intermed_group, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: lcpl_id ! Link creation property list identifier INTEGER, INTENT(IN) :: crt_intermed_group ! Flag specifying whether to create intermediate groups ! upon creation of an object - INTEGER, INTENT(OUT) :: hdferr ! Error code - + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +!***** INTERFACE INTEGER FUNCTION h5pget_create_inter_group_c(lcpl_id, crt_intermed_group) USE H5GLOBAL @@ -7034,56 +6296,59 @@ END SUBROUTINE h5pget_create_inter_group_f -!---------------------------------------------------------------------- -! Name: H5Pset_chunk_cache_f -! -! Purpose: Set the number of objects in the meta data cache and the -! maximum number of chunks and bytes in the raw data chunk cache. -! Once set, these values will override the values in the file access -! property list. Each of these values can be individually unset -! (or not set at all) by passing the macros: -! H5D_CHUNK_CACHE_NSLOTS_DFLT_F, -! H5D_CHUNK_CACHE_NBYTES_DFLT_F, and/or -! H5D_CHUNK_CACHE_W0_DFLT_F -! as appropriate. -! -! The RDCC_W0 value should be between 0 and 1 inclusive and -! indicates how much chunks that have been fully read or fully -! written are favored for preemption. A value of zero means -! fully read or written chunks are treated no differently than -! other chunks (the preemption is strictly LRU) while a value -! of one means fully read chunks are always preempted before -! other chunks. -! -! Inputs: -! dapl_id - Dataset access property list identifier. -! rdcc_nslots - The number of chunk slots in the raw data chunk cache for this dataset. -! rdcc_nbytes - The total size of the raw data chunk cache for this dataset. -! rdcc_w0 - The chunk preemption policy for this dataset. -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: M.S. Breitenfeld -! April 13, 2009 -! -! Modifications: -!-------------------------------------------------------------------------------------- - +!****s* H5P/H5Pset_chunk_cache_f +! NAME +! H5Pset_chunk_cache_f +! +! PURPOSE +! Set the number of objects in the meta data cache and the +! maximum number of chunks and bytes in the raw data chunk cache. +! Once set, these values will override the values in the file access +! property list. Each of these values can be individually unset +! (or not set at all) by passing the macros: +! H5D_CHUNK_CACHE_NSLOTS_DFLT_F, +! H5D_CHUNK_CACHE_NBYTES_DFLT_F, and/or +! H5D_CHUNK_CACHE_W0_DFLT_F +! as appropriate. +! +! The RDCC_W0 value should be between 0 and 1 inclusive and +! indicates how much chunks that have been fully read or fully +! written are favored for preemption. A value of zero means +! fully read or written chunks are treated no differently than +! other chunks (the preemption is strictly LRU) while a value +! of one means fully read chunks are always preempted before +! other chunks. +! +! INPUTS +! +! dapl_id - Dataset access property list identifier. +! rdcc_nslots - The number of chunk slots in the raw data chunk cache for this dataset. +! rdcc_nbytes - The total size of the raw data chunk cache for this dataset. +! rdcc_w0 - The chunk preemption policy for this dataset. +! OUTPUTS +! +! hdferr - Error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! M. Scot Breitenfeld +! April 13, 2009 +! +! HISTORY +! +! SOURCE SUBROUTINE h5pset_chunk_cache_f(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dapl_id ! Dataset access property list identifier. - INTEGER(SIZE_T), INTENT(IN) :: rdcc_nslots ! The number of chunk slots in the raw data + INTEGER(SIZE_T), INTENT(IN) :: rdcc_nslots ! The number of chunk slots in the raw data ! chunk cache for this dataset. - INTEGER(SIZE_T), INTENT(IN) :: rdcc_nbytes ! The total size of the raw data chunk cache + INTEGER(SIZE_T), INTENT(IN) :: rdcc_nbytes ! The total size of the raw data chunk cache ! for this dataset. REAL, INTENT(IN) :: rdcc_w0 ! The chunk preemption policy for this dataset. INTEGER, INTENT(OUT) :: hdferr ! Error code ! 0 on success and -1 on failure - +!***** INTERFACE INTEGER FUNCTION h5pset_chunk_cache_c(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0) @@ -7102,43 +6367,47 @@ END SUBROUTINE h5pset_chunk_cache_f -!---------------------------------------------------------------------- -! Name: H5Pget_chunk_cache_f -! -! Purpose: Retrieves the maximum possible number of elements in the meta -! data cache and the maximum possible number of elements and -! bytes and the RDCC_W0 value in the raw data chunk cache. Any -! (or all) arguments may be null pointers in which case the -! corresponding datum is not returned. If these properties have -! not been set on this property list, the default values for a -! file access property list are returned. -! -! Inputs: -! dapl_id - Dataset access property list identifier. -! Outputs: -! rdcc_nslots - Number of chunk slots in the raw data chunk cache hash table. -! rdcc_nbytes - Total size of the raw data chunk cache, in bytes. -! rdcc_w0 - Preemption policy. -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: M.S. Breitenfeld -! April 13, 2009 -! -! Modifications: -!-------------------------------------------------------------------------------------- - +!****s* H5P/H5Pget_chunk_cache_f +! NAME +! H5Pget_chunk_cache_f +! +! PURPOSE +! Retrieves the maximum possible number of elements in the meta +! data cache and the maximum possible number of elements and +! bytes and the RDCC_W0 value in the raw data chunk cache. Any +! (or all) arguments may be null pointers in which case the +! corresponding datum is not returned. If these properties have +! not been set on this property list, the default values for a +! file access property list are returned. +! +! INPUTS +! +! dapl_id - Dataset access property list identifier. +! OUTPUTS +! +! rdcc_nslots - Number of chunk slots in the raw data chunk cache hash table. +! rdcc_nbytes - Total size of the raw data chunk cache, in bytes. +! rdcc_w0 - Preemption policy. +! hdferr - Error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! M. Scot Breitenfeld +! April 13, 2009 +! +! HISTORY +! +! SOURCE SUBROUTINE h5pget_chunk_cache_f(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dapl_id ! Dataset access property list identifier. + INTEGER(HID_T), INTENT(IN) :: dapl_id ! Dataset access property list identifier. INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nslots ! Number of chunk slots in the raw data chunk cache hash table. - INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nbytes ! Total size of the raw data chunk cache, in bytes. - REAL, INTENT(OUT) :: rdcc_w0 ! Preemption policy. - INTEGER, INTENT(OUT) :: hdferr ! error code - + INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nbytes ! Total size of the raw data chunk cache, in bytes. + REAL, INTENT(OUT) :: rdcc_w0 ! Preemption policy. + INTEGER, INTENT(OUT) :: hdferr ! Error code: + ! 0 on success and -1 on failure +!***** INTERFACE INTEGER FUNCTION h5pget_chunk_cache_c(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0) USE H5GLOBAL diff --git a/fortran/src/H5Pff_F03.f90 b/fortran/src/H5Pff_F03.f90 new file mode 100644 index 0000000..1970feb --- /dev/null +++ b/fortran/src/H5Pff_F03.f90 @@ -0,0 +1,1353 @@ +!****h* ROBODoc/H5P (F03) +! +! NAME +! H5P_PROVISIONAL +! +! PURPOSE +! This file contains Fortran 90 and Fortran 2003 interfaces for H5P functions. +! It contains the same functions as H5Pff_DEPRECIATE.f90 but includes the +! Fortran 2003 functions and the interface listings. This file will be compiled +! instead of H5Pff_DEPRECIATE.f90 if Fortran 2003 functions are enabled. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! *** IMPORTANT *** +! If you add a new H5P function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** + +MODULE H5P_PROVISIONAL + + USE H5GLOBAL + + INTERFACE h5pset_fill_value_f + MODULE PROCEDURE h5pset_fill_value_integer + MODULE PROCEDURE h5pset_fill_value_real + MODULE PROCEDURE h5pset_fill_value_char + + ! Recommended procedure: + MODULE PROCEDURE h5pset_fill_value_ptr + + END INTERFACE + + INTERFACE h5pget_fill_value_f + MODULE PROCEDURE h5pget_fill_value_integer + MODULE PROCEDURE h5pget_fill_value_real + MODULE PROCEDURE h5pget_fill_value_char + + ! Recommended procedure: + MODULE PROCEDURE h5pget_fill_value_ptr + + END INTERFACE + + INTERFACE h5pset_f + MODULE PROCEDURE h5pset_integer + MODULE PROCEDURE h5pset_real + MODULE PROCEDURE h5pset_char + ! Recommended procedure: + MODULE PROCEDURE h5pset_ptr + + END INTERFACE + + INTERFACE h5pget_f + MODULE PROCEDURE h5pget_integer + MODULE PROCEDURE h5pget_real + MODULE PROCEDURE h5pget_char + ! Recommended procedure: + MODULE PROCEDURE h5pget_ptr + END INTERFACE + + INTERFACE h5pregister_f + MODULE PROCEDURE h5pregister_integer + MODULE PROCEDURE h5pregister_real + MODULE PROCEDURE h5pregister_char + ! Recommended procedure: + MODULE PROCEDURE h5pregister_ptr + END INTERFACE + + INTERFACE h5pinsert_f + MODULE PROCEDURE h5pinsert_integer + MODULE PROCEDURE h5pinsert_real + MODULE PROCEDURE h5pinsert_char + ! Recommended procedure: + MODULE PROCEDURE h5pinsert_ptr + END INTERFACE + + INTERFACE + INTEGER FUNCTION h5pget_fill_value_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + USE, INTRINSIC :: ISO_C_BINDING + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILL_VALUE_C'::h5pget_fill_value_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + TYPE(C_PTR), VALUE :: fillvalue ! Fillvalue + END FUNCTION h5pget_fill_value_c + END INTERFACE + + INTERFACE + INTEGER FUNCTION h5pset_fill_value_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + USE, INTRINSIC :: ISO_C_BINDING + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FILL_VALUE_C'::h5pset_fill_value_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + TYPE(C_PTR), VALUE :: fillvalue ! Fillvalue + END FUNCTION h5pset_fill_value_c + END INTERFACE + + INTERFACE + INTEGER FUNCTION h5pset_c(prp_id, name, name_len, value) + USE H5GLOBAL + USE, INTRINSIC :: ISO_C_BINDING + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_C'::h5pset_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + INTEGER :: name_len + TYPE(C_PTR), VALUE :: value ! Property value + END FUNCTION h5pset_c + END INTERFACE + + INTERFACE + INTEGER FUNCTION h5pget_c(prp_id, name, name_len, value) + USE ISO_C_BINDING + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_C'::h5pget_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + INTEGER :: name_len + TYPE(C_PTR), VALUE :: value ! Property value + END FUNCTION h5pget_c + END INTERFACE + + INTERFACE + INTEGER FUNCTION h5pregister_c(class, name, name_len, size, value) + USE iso_c_binding + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PREGISTER_C'::h5pregister_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: class + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER(SIZE_T), INTENT(IN) :: size + TYPE(C_PTR), INTENT(IN), VALUE :: value + END FUNCTION h5pregister_c + END INTERFACE + + INTERFACE + INTEGER FUNCTION h5pinsert_c(plist, name, name_len, size, value) + USE iso_c_binding + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PINSERT_C'::h5pinsert_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: plist + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER(SIZE_T), INTENT(IN) :: size + TYPE(c_ptr), INTENT(IN), value :: value + END FUNCTION h5pinsert_c + END INTERFACE + +CONTAINS + +! +!****s* H5P (F03)/h5pset(get)fill_value_f +! +! NAME +! h5pset(get)fill_value_f +! +! PURPOSE +! Sets(gets) fill value for a dataset creation property list +! +! INPUTS +! prp_id - dataset creation property list identifier +! type_id - datatype identifier for fill value +! fillvalue - fill value +! OUTPUTS +! type_id - datatype identifier for fill value +! fillvalue - fill value +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Added the recommended way of passing fillvalue +! and that is by passing the C address, all other +! ways are obsolete and should be avoided. June, 2008 MSB +! +! NOTES +! h5pset(get)fill_value_f function is overloaded to support +! INTEGER, REAL, DOUBLE PRECISION and CHARACTER dtatypes. +! +! SOURCE + SUBROUTINE h5pset_fill_value_integer(prp_id, type_id, fillvalue, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + INTEGER, INTENT(IN), TARGET :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + TYPE(C_PTR) :: f_ptr ! C address + + f_ptr = C_LOC(fillvalue) + + hdferr = h5pset_fill_value_c(prp_id, type_id, f_ptr) + + END SUBROUTINE h5pset_fill_value_integer + + SUBROUTINE h5pget_fill_value_integer(prp_id, type_id, fillvalue, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + INTEGER, INTENT(OUT), TARGET :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr ! C address + + f_ptr = C_LOC(fillvalue) + + hdferr = h5pget_fill_value_c(prp_id, type_id, f_ptr) + + END SUBROUTINE h5pget_fill_value_integer + + + SUBROUTINE h5pset_fill_value_real(prp_id, type_id, fillvalue, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + REAL, INTENT(IN), TARGET :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr ! C address + + f_ptr = C_LOC(fillvalue) + + hdferr = h5pset_fill_value_c(prp_id, type_id, f_ptr) + + END SUBROUTINE h5pset_fill_value_real + + + SUBROUTINE h5pget_fill_value_real(prp_id, type_id, fillvalue, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + REAL, INTENT(OUT), TARGET :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr ! C address + + f_ptr = C_LOC(fillvalue) + + hdferr = h5pget_fill_value_c(prp_id, type_id, f_ptr) + + END SUBROUTINE h5pget_fill_value_real + + + SUBROUTINE h5pset_fill_value_double(prp_id, type_id, fillvalue, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + DOUBLE PRECISION, INTENT(IN), TARGET :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr ! C address + + f_ptr = C_LOC(fillvalue) + + hdferr = h5pset_fill_value_c(prp_id, type_id, f_ptr) + END SUBROUTINE h5pset_fill_value_double + + + SUBROUTINE h5pget_fill_value_double(prp_id, type_id, fillvalue, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + DOUBLE PRECISION, INTENT(OUT), TARGET :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr ! C address + + f_ptr = C_LOC(fillvalue) + + hdferr = h5pget_fill_value_c(prp_id, type_id, f_ptr) + END SUBROUTINE h5pget_fill_value_double + + SUBROUTINE h5pset_fill_value_char(prp_id, type_id, fillvalue, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + CHARACTER, INTENT(IN), TARGET :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR) :: f_ptr ! C address + + f_ptr = C_LOC(fillvalue) + + hdferr = h5pset_fill_value_c(prp_id, type_id, f_ptr) + + END SUBROUTINE h5pset_fill_value_char + + SUBROUTINE h5pget_fill_value_char(prp_id, type_id, fillvalue, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + CHARACTER, INTENT(OUT) :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTEGER :: i + CHARACTER(LEN=1), ALLOCATABLE, DIMENSION(:), TARGET :: chr + INTEGER :: chr_len + + TYPE(C_PTR) :: f_ptr ! C address + ! To resolve Issue #1 outlined in the preamble of this file we + ! need to pack the character string into an array. + + chr_len = LEN(fillvalue) + ALLOCATE(chr(1:chr_len), STAT=hdferr) + IF (hdferr .NE. 0) THEN + hdferr = -1 + RETURN + ENDIF + + f_ptr = C_LOC(chr) + + hdferr = h5pget_fill_value_c(prp_id, type_id, f_ptr) + + DO i = 1, chr_len + fillvalue(i:i) = chr(i) + ENDDO + DEALLOCATE(chr) + + + END SUBROUTINE h5pget_fill_value_char + + SUBROUTINE h5pset_fill_value_ptr(prp_id, type_id, fillvalue, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + TYPE(C_PTR), VALUE :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + + hdferr = h5pset_fill_value_c(prp_id, type_id, fillvalue) + + END SUBROUTINE h5pset_fill_value_ptr + + SUBROUTINE h5pget_fill_value_ptr(prp_id, type_id, fillvalue, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + TYPE(C_PTR), INTENT(OUT) :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + + hdferr = h5pget_fill_value_c(prp_id, type_id, fillvalue) + + END SUBROUTINE h5pget_fill_value_ptr + +! +!****s* H5P (F03)/h5pset_integer +! +! NAME +! h5pset_integer +! +! PURPOSE +! Sets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! value - value to set property to +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! SOURCE + SUBROUTINE h5pset_integer(prp_id, name, value, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + INTEGER, INTENT(IN), TARGET :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(value) + + name_len = LEN(name) + hdferr = h5pget_c(prp_id, name, name_len, f_ptr) + + END SUBROUTINE h5pset_integer + +! +!****s* H5P (F03)/h5pset_real +! +! NAME +! h5pset_real +! +! PURPOSE +! Sets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! value - value to set property to +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! SOURCE + SUBROUTINE h5pset_real(prp_id, name, value, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + REAL, INTENT(IN), TARGET :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(value) + + name_len = LEN(name) + hdferr = h5pget_c(prp_id, name, name_len, f_ptr) + + END SUBROUTINE h5pset_real + +! +!****s* H5P (F03)/h5pset_double +! +! NAME +! h5pset_double +! +! PURPOSE +! Sets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! value - value to set property to +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! +! Elena Pourmal +! October 9, 2002 +! SOURCE + SUBROUTINE h5pset_double(prp_id, name, value, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + DOUBLE PRECISION, INTENT(IN), TARGET :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(value) + + name_len = LEN(name) + hdferr = h5pget_c(prp_id, name, name_len, f_ptr) + + END SUBROUTINE h5pset_double + +! +!****s* H5P (F03)/h5pset_char +! +! NAME +! h5pset_char +! +! PURPOSE +! Sets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! value - value to set property to +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! OPTIONAL PARAMETERS +! NONE +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! SOURCE + SUBROUTINE h5pset_char(prp_id, name, value, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + CHARACTER(LEN=*), INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTEGER :: i + CHARACTER(LEN=1), ALLOCATABLE, DIMENSION(:), TARGET :: chr + INTEGER :: chr_len + + TYPE(C_PTR) :: f_ptr + ! To resolve Issue #1 outlined in the preamble of this file we + ! need to pack the character string into an array. + + chr_len = LEN(value) + ALLOCATE(chr(1:chr_len), STAT=hdferr) + IF (hdferr .NE. 0) THEN + hdferr = -1 + RETURN + ENDIF + + DO i = 1, chr_len + chr(i) = value(i:i) + ENDDO + + f_ptr = C_LOC(chr) + + name_len = LEN(name) + hdferr = h5pget_c(prp_id, name, name_len, f_ptr) + + DEALLOCATE(chr) + + END SUBROUTINE h5pset_char + +! +!****s* H5P (F03)/h5pget_integer +! +! NAME +! h5pget_integer +! +! PURPOSE +! Gets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! OUTPUTS +! value - value of property +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! SOURCE + SUBROUTINE h5pget_integer(prp_id, name, value, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + INTEGER, INTENT(OUT), TARGET :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(value) + + name_len = LEN(name) + hdferr = h5pget_c(prp_id, name, name_len, f_ptr) + + END SUBROUTINE h5pget_integer + +! +!****s* H5P (F03)/h5pget_real +! +! NAME +! h5pget_real +! +! PURPOSE +! Gets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! OUTPUTS +! value - value of property +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! SOURCE + SUBROUTINE h5pget_real(prp_id, name, value, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + REAL, INTENT(OUT), TARGET :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(value) + + name_len = LEN(name) + hdferr = h5pget_c(prp_id, name, name_len, f_ptr) + END SUBROUTINE h5pget_real + +! +!****s* H5P (F03)/ h5pget_double +! +! NAME +! h5pget_double +! +! PURPOSE +! Gets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! OUTPUTS +! value - value of property +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5pget_double(prp_id, name, value, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + DOUBLE PRECISION, INTENT(OUT), TARGET :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(value) + + name_len = LEN(name) + hdferr = h5pget_c(prp_id, name, name_len, f_ptr) + + END SUBROUTINE h5pget_double + +! +!****s* H5P (F03)/h5pget_char +! +! NAME +! h5pget_char +! +! PURPOSE +! Gets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! OUTPUTS +! value - value of property +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! +! Elena Pourmal +! October 9, 2002 +! SOURCE + SUBROUTINE h5pget_char(prp_id, name, value, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + CHARACTER(LEN=*), INTENT(OUT) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTEGER :: i + CHARACTER(LEN=1), ALLOCATABLE, DIMENSION(:), TARGET :: chr + INTEGER :: chr_len + TYPE(C_PTR) :: f_ptr + + chr_len = LEN(value) + ALLOCATE(chr(1:chr_len), STAT=hdferr) + IF (hdferr .NE. 0) THEN + hdferr = -1 + RETURN + ENDIF + f_ptr = C_LOC(chr) + + name_len = LEN(name) + hdferr = h5pget_c(prp_id, name, name_len, f_ptr) + + DO i = 1, chr_len + value(i:i) = chr(i) + ENDDO + + DEALLOCATE(chr) + + END SUBROUTINE h5pget_char + + SUBROUTINE h5pset_ptr(prp_id, name, value, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + TYPE(C_PTR), INTENT(OUT) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER :: name_len + + name_len = LEN(name) + hdferr = h5pset_c(prp_id, name, name_len, value) + + END SUBROUTINE h5pset_ptr + + SUBROUTINE h5pget_ptr(prp_id, name, value, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + TYPE(C_PTR), INTENT(OUT) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER :: name_len + + name_len = LEN(name) + hdferr = h5pget_c(prp_id, name, name_len, value) + + END SUBROUTINE h5pget_ptr + + +! +!****s* H5P (F03)/h5pregister_integer +! +! NAME +! h5pregister_integer +! +! PURPOSE +! Registers a permanent property with a property list class. +! +! INPUTS +! class - property list class to register +! permanent property within +! name - name of property to register +! size - size of property in bytes +! value - default value for property in newly +! created property lists +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! +! SOURCE + SUBROUTINE h5pregister_integer(class, name, size, value, hdferr) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register + INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value + INTEGER, INTENT(IN), TARGET :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(value) + + name_len = LEN(name) + hdferr = h5pregister_c(class, name, name_len, size, f_ptr) + + END SUBROUTINE h5pregister_integer + +! +!****s* H5P (F03)/h5pregister_real +! +! NAME +! h5pregister_real +! +! PURPOSE +! Registers a permanent property with a property list class. +! +! INPUTS +! class - property list class to register +! permanent property within +! name - name of property to register +! size - size of property in bytes +! value - default value for property in newly +! created property lists +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! SOURCE + SUBROUTINE h5pregister_real(class, name, size, value, hdferr) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register + INTEGER(SIZE_T), INTENT(IN) :: size ! size of the property value + REAL, INTENT(IN), TARGET :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(value) + + name_len = LEN(name) + hdferr = h5pregister_c(class, name, name_len, size, f_ptr) + + END SUBROUTINE h5pregister_real + +! +!****s* H5P (F03)/h5pregister_double +! +! NAME +! h5pregister_double +! +! PURPOSE +! Registers a permanent property with a property list class. +! +! INPUTS +! class - property list class to register +! permanent property within +! name - name of property to register +! size - size of property in bytes +! value - default value for property in newly +! created property lists +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! +! Elena Pourmal +! October 10, 2002 +! SOURCE + SUBROUTINE h5pregister_double(class, name, size, value, hdferr) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register + INTEGER(SIZE_T), INTENT(IN) :: size ! size of the property value + DOUBLE PRECISION, INTENT(IN), TARGET :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(value) + + name_len = LEN(name) + hdferr = h5pregister_c(class, name, name_len, size, f_ptr) + END SUBROUTINE h5pregister_double + +! +!****s* H5P (F03)/h5pregister_char +! +! NAME +! h5pregister_char +! +! PURPOSE +! Registers a permanent property with a property list class. +! +! INPUTS +! class - property list class to register +! permanent property within +! name - name of property to register +! size - size of property in bytes +! value - default value for property in newly +! created property lists +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! +! SOURCE + SUBROUTINE h5pregister_char(class, name, size, value, hdferr) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register + INTEGER(SIZE_T), INTENT(IN) :: size ! size of the property value + CHARACTER(LEN=*), INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTEGER :: i + CHARACTER(LEN=1), ALLOCATABLE, DIMENSION(:), TARGET :: chr + INTEGER :: chr_len + + TYPE(C_PTR) :: f_ptr + ! To resolve Issue #1 outlined in the preamble of this file we + ! need to pack the character string into an array. + + chr_len = LEN(value) + ALLOCATE(chr(1:chr_len), STAT=hdferr) + IF (hdferr .NE. 0) THEN + hdferr = -1 + RETURN + ENDIF + + DO i = 1, chr_len + chr(i) = value(i:i) + ENDDO + + f_ptr = C_LOC(chr) + + name_len = LEN(name) + hdferr = h5pregister_c(class, name, name_len, size, f_ptr) + DEALLOCATE(chr) + END SUBROUTINE h5pregister_char + +! +!****s* H5P (F03)/h5pregister_ptr +! +! NAME +! h5pregister_ptr +! +! PURPOSE +! Registers a permanent property with a property list class. +! +! INPUTS +! class - property list class to register +! permanent property within +! name - name of property to register +! size - size of property in bytes +! value - default value for property in newly +! created property lists +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! M. Scot Breitenfeld +! June 24, 2008 +! SOURCE + SUBROUTINE h5pregister_ptr(class, name, size, value, hdferr) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register + INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value + TYPE(C_PTR), INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + name_len = LEN(name) + hdferr = h5pregister_c(class, name, name_len, size, value) + END SUBROUTINE h5pregister_ptr + +! +!****s* H5P (F03)/h5pinsert_integer +! +! NAME +! h5pinsert_integer +! +! PURPOSE +! Registers a temporary property with a property list class. +! +! INPUTS +! plist - property list identifier +! name - name of property to insert +! size - size of property in bytes +! value - initial value for the property +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! +! SOURCE + SUBROUTINE h5pinsert_integer(plist, name, size, value, hdferr) + USE iso_c_binding + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert + INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value + INTEGER, INTENT(IN), TARGET :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + TYPE(c_ptr) :: f_ptr + + f_ptr = c_loc(value) + + name_len = LEN(name) + hdferr = h5pinsert_c(plist, name , name_len, size, f_ptr) + END SUBROUTINE h5pinsert_integer + +! +!****s* H5P (F03)/h5pinsert_real +! +! NAME +! h5pinsert_real +! +! PURPOSE +! Registers a temporary property with a property list class. +! +! INPUTS +! plist - property list identifier +! permanent property within +! name - name of property to insert +! size - size of property in bytes +! value - initial value for the property +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! SOURCE + SUBROUTINE h5pinsert_real(plist, name, size, value, hdferr) + USE iso_c_binding + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert + INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value + REAL, INTENT(IN), TARGET :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + TYPE(c_ptr) :: f_ptr + + f_ptr = c_loc(value) + + name_len = LEN(name) + hdferr = h5pinsert_c(plist, name , name_len, size, f_ptr) + + END SUBROUTINE h5pinsert_real + +! +!****s* H5P (F03)/h5pinsert_double +! +! NAME +! h5pinsert_double +! +! PURPOSE +! Registers a temporary property with a property list class. +! +! INPUTS +! plist - property list identifier +! permanent property within +! name - name of property to insert +! size - size of property in bytes +! value - initial value for the property +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! OPTIONAL PARAMETERS +! NONE +! +! AUTHOR +! +! Elena Pourmal +! October 10, 2002 +! SOURCE + SUBROUTINE h5pinsert_double(plist, name, size, value, hdferr) + USE iso_c_binding + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert + INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value + DOUBLE PRECISION, INTENT(IN), TARGET :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + TYPE(c_ptr) :: f_ptr + + f_ptr = c_loc(value) + + name_len = LEN(name) + hdferr = h5pinsert_c(plist, name , name_len, size, f_ptr) + + END SUBROUTINE h5pinsert_double + +! +!****s* H5P (F03)/h5pinsert_char +! +! NAME +! h5pinsert_char +! +! PURPOSE +! Registers a temporary property with a property list class. +! +! INPUTS +! plist - property list identifier +! permanent property within +! name - name of property to insert +! size - size of property in bytes +! value - initial value for the property +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! SOURCE + SUBROUTINE h5pinsert_char(plist, name, size, value, hdferr) + USE iso_c_binding + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert + INTEGER(SIZE_T), INTENT(IN) :: size ! Size of property value + CHARACTER(LEN=*), INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTEGER :: i + CHARACTER(LEN=1), ALLOCATABLE, DIMENSION(:), TARGET :: chr + INTEGER :: chr_len + + TYPE(c_ptr) :: f_ptr + ! To resolve Issue #1 outlined in the preamble of this file we + ! need to pack the character string into an array. + + chr_len = LEN(value) + ALLOCATE(chr(1:chr_len), STAT=hdferr) + IF (hdferr .NE. 0) THEN + hdferr = -1 + RETURN + ENDIF + + DO i = 1, chr_len + chr(i) = value(i:i) + ENDDO + + f_ptr = C_LOC(chr) + + name_len = LEN(name) + hdferr = h5pinsert_c(plist, name , name_len, size, f_ptr) + + DEALLOCATE(chr) + + END SUBROUTINE h5pinsert_char + +! +!****s* H5P (F03)/h5pinsert_ptr +! +! NAME +! h5pinsert_ptr +! +! PURPOSE +! Registers a temporary property with a property list class. +! +! INPUTS +! plist - property list identifier +! permanent property within +! name - name of property to insert +! size - size of property in bytes +! value - initial value for the property +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! M. Scot Breitenfeld +! June 24, 2008 +! SOURCE + SUBROUTINE h5pinsert_ptr(plist, name, size, value, hdferr) + USE iso_c_binding + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert + INTEGER(SIZE_T), INTENT(IN) :: size ! Size of property value + TYPE(c_ptr), INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + name_len = LEN(name) + hdferr = h5pinsert_c(plist, name , name_len, size, value) + END SUBROUTINE h5pinsert_ptr + +! +!****s* H5P (F03)/h5pcreate_class_f +! +! NAME +! h5pcreate_class_f +! +! PURPOSE +! Create a new property list class +! +! INPUTS +! parent - Property list identifier of the parent class +! Possible values include: +! H5P_ROOT_F +! H5P_FILE_CREATE_F +! H5P_FILE_ACCESS_F +! H5P_DATASET_CREATE_F +! H5P_DATASET_XFER_F +! H5P_FILE_MOUNT_F +! name - name of the class we are creating +! OUTPUTS +! class - porperty list class identifier +! hdferr: - error code +! +! Success: 0 +! Failure: -1 +! OPTIONAL PARAMETERS +! H5P_cls_create_func_t (create) - Callback routine called when a property list is created +! create_data - User pointer to any class creation information needed +! H5P_cls_copy_func_t (copy) - Callback routine called when a property list is copied +! copy_data - User pointer to any class copy information needed +! H5P_cls_close_func_t (close) - Callback routine called when a property list is being closed +! close_data - User pointer to any class close information needed +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! HISTORY +! Added callback arguments +! M. Scot Breitenfeld, July 3, 2008 +! +! SOURCE + SUBROUTINE h5pcreate_class_f(parent, name, class, hdferr, create, create_data, copy, copy_data, close, close_data) + USE iso_c_binding + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: parent ! parent property list class identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! name of property tocreate + INTEGER(HID_T), INTENT(OUT) :: class ! property list class identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + TYPE(C_PTR), OPTIONAL :: create_data, copy_data, close_data + TYPE(C_FUNPTR), OPTIONAL :: create, copy, close +!***** + INTEGER :: name_len + TYPE(C_PTR) :: create_data_default, copy_data_default, close_data_default + TYPE(C_FUNPTR) :: create_default, copy_default, close_default + INTERFACE + INTEGER FUNCTION h5pcreate_class_c(parent, name, name_len, class, & + create, create_data, & + copy, copy_data, & + close, close_data) + + USE iso_c_binding + USE H5GLOBAL + !DEC$IF DEFINED(HDCLOSEF90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PCREATE_CLASS_C'::h5pcreate_class_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: parent + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER(HID_T), INTENT(OUT) :: class + TYPE(C_PTR), VALUE :: create_data, copy_data, close_data + TYPE(C_FUNPTR), VALUE :: create, copy, close + END FUNCTION h5pcreate_class_c + END INTERFACE + name_len = LEN(name) + + create_default = c_null_funptr !fix:scot + create_data_default = c_null_ptr + copy_default = c_null_funptr !fix:scot + copy_data_default = c_null_ptr + close_default = c_null_funptr !fix:scot + close_data_default = c_null_ptr + + IF(PRESENT(create)) create_default = create + IF(PRESENT(create_data)) create_data_default = create_data + IF(PRESENT(copy)) copy_default = copy + IF(PRESENT(copy_data)) copy_data_default = copy_data + IF(PRESENT(close)) close_default = close + IF(PRESENT(close_data)) close_data_default = close_data + + hdferr = h5pcreate_class_c(parent, name , name_len, class, & + create_default, create_data_default, & + copy_default, copy_data_default, & + close_default, close_data_default) + + + END SUBROUTINE h5pcreate_class_f + +END MODULE H5P_PROVISIONAL + diff --git a/fortran/src/H5Pff_F90.f90 b/fortran/src/H5Pff_F90.f90 new file mode 100644 index 0000000..a50c35f --- /dev/null +++ b/fortran/src/H5Pff_F90.f90 @@ -0,0 +1,1203 @@ +!****h* ROBODoc/H5P (_F90) +! +! NAME +! H5P_PROVISIONAL +! +! PURPOSE +! +! This file contains Fortran 90 interfaces for H5P functions. It contains +! the same functions as H5Pff_F03.f90 but excludes the Fortran 2003 functions +! and the interface listings. This file will be compiled instead of H5Pff_F03.f90 +! if Fortran 2003 functions are not enabled. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! *** IMPORTANT *** +! If you add a new H5P function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +!***** + +MODULE H5P_PROVISIONAL + + USE H5GLOBAL + + INTERFACE h5pset_fill_value_f + MODULE PROCEDURE h5pset_fill_value_integer + MODULE PROCEDURE h5pset_fill_value_real + MODULE PROCEDURE h5pset_fill_value_char + END INTERFACE + + INTERFACE h5pget_fill_value_f + MODULE PROCEDURE h5pget_fill_value_integer + MODULE PROCEDURE h5pget_fill_value_real + MODULE PROCEDURE h5pget_fill_value_char + END INTERFACE + + INTERFACE h5pset_f + MODULE PROCEDURE h5pset_integer + MODULE PROCEDURE h5pset_real + MODULE PROCEDURE h5pset_char + END INTERFACE + + INTERFACE h5pget_f + MODULE PROCEDURE h5pget_integer + MODULE PROCEDURE h5pget_real + MODULE PROCEDURE h5pget_char + END INTERFACE + + INTERFACE h5pregister_f + MODULE PROCEDURE h5pregister_integer + MODULE PROCEDURE h5pregister_real + MODULE PROCEDURE h5pregister_char + END INTERFACE + + INTERFACE h5pinsert_f + MODULE PROCEDURE h5pinsert_integer + MODULE PROCEDURE h5pinsert_real + MODULE PROCEDURE h5pinsert_char + END INTERFACE + +CONTAINS +! +!****s* H5P (F90)/h5pset(get)fill_value_f +! +! NAME +! h5pset(get)fill_value_f +! +! PURPOSE +! Sets(gets) fill value for a dataset creation property list +! +! INPUTS +! prp_id - dataset creation property list identifier +! type_id - datatype identifier for fill value +! fillvalue - fill value +! OUTPUTS +! type_id - datatype identifier for fill value +! fillvalue - fill value +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! NOTES +! h5pset(get)fill_value_f function is overloaded to support +! INTEGER, REAL, DOUBLE PRECISION and CHARACTER dtatypes. +! +! SOURCE + SUBROUTINE h5pset_fill_value_integer(prp_id, type_id, fillvalue, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + INTEGER, INTENT(IN) :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5pset_fill_value_integer_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FILL_VALUE_INTEGER_C'::h5pset_fill_value_integer_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: fillvalue + END FUNCTION h5pset_fill_value_integer_c + END INTERFACE + + hdferr = h5pset_fill_value_integer_c(prp_id, type_id, fillvalue) + END SUBROUTINE h5pset_fill_value_integer + + + SUBROUTINE h5pget_fill_value_integer(prp_id, type_id, fillvalue, & + hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + INTEGER, INTENT(IN) :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTERFACE + INTEGER FUNCTION h5pget_fill_value_integer_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILL_VALUE_INTEGER_C'::h5pget_fill_value_integer_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER :: fillvalue + END FUNCTION h5pget_fill_value_integer_c + END INTERFACE + + hdferr = h5pget_fill_value_integer_c(prp_id, type_id, fillvalue) + END SUBROUTINE h5pget_fill_value_integer + + + SUBROUTINE h5pset_fill_value_real(prp_id, type_id, fillvalue, & + hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + REAL, INTENT(IN) :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTERFACE + INTEGER FUNCTION h5pset_fill_value_real_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FILL_VALUE_REAL_C'::h5pset_fill_value_real_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + REAL, INTENT(IN) :: fillvalue + END FUNCTION h5pset_fill_value_real_c + END INTERFACE + + hdferr = h5pset_fill_value_real_c(prp_id, type_id, fillvalue) + END SUBROUTINE h5pset_fill_value_real + + + SUBROUTINE h5pget_fill_value_real(prp_id, type_id, fillvalue, & + hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + REAL, INTENT(IN) :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTERFACE + INTEGER FUNCTION h5pget_fill_value_real_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILL_VALUE_REAL_C'::h5pget_fill_value_real_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + REAL :: fillvalue + END FUNCTION h5pget_fill_value_real_c + END INTERFACE + + hdferr = h5pget_fill_value_real_c(prp_id, type_id, fillvalue) + END SUBROUTINE h5pget_fill_value_real + + + SUBROUTINE h5pset_fill_value_double(prp_id, type_id, fillvalue, & + hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + DOUBLE PRECISION, INTENT(IN) :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTERFACE + INTEGER FUNCTION h5pset_fill_value_double_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FILL_VALUE_DOUBLE_C'::h5pset_fill_value_double_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + DOUBLE PRECISION, INTENT(IN) :: fillvalue + END FUNCTION h5pset_fill_value_double_c + END INTERFACE + + hdferr = h5pset_fill_value_double_c(prp_id, type_id, fillvalue) + END SUBROUTINE h5pset_fill_value_double + + + SUBROUTINE h5pget_fill_value_double(prp_id, type_id, fillvalue, & + hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + DOUBLE PRECISION, INTENT(IN) :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTERFACE + INTEGER FUNCTION h5pget_fill_value_double_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILL_VALUE_DOUBLE_C'::h5pget_fill_value_double_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + DOUBLE PRECISION :: fillvalue + END FUNCTION h5pget_fill_value_double_c + END INTERFACE + + hdferr = h5pget_fill_value_double_c(prp_id, type_id, fillvalue) + END SUBROUTINE h5pget_fill_value_double + + SUBROUTINE h5pset_fill_value_char(prp_id, type_id, fillvalue, & + hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + CHARACTER, INTENT(IN) :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTERFACE + INTEGER FUNCTION h5pset_fill_valuec_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FILL_VALUEC_C'::h5pset_fill_valuec_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: fillvalue + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + CHARACTER, INTENT(IN) :: fillvalue + END FUNCTION h5pset_fill_valuec_c + END INTERFACE + + hdferr = h5pset_fill_valuec_c(prp_id, type_id, fillvalue) + END SUBROUTINE h5pset_fill_value_char + + SUBROUTINE h5pget_fill_value_char(prp_id, type_id, fillvalue, & + hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + CHARACTER, INTENT(IN) :: fillvalue ! Fillvalue + INTEGER, INTENT(OUT) :: hdferr ! Error code + + INTERFACE + INTEGER FUNCTION h5pget_fill_valuec_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILL_VALUEC_C'::h5pget_fill_valuec_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: fillvalue + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + CHARACTER :: fillvalue + END FUNCTION h5pget_fill_valuec_c + END INTERFACE + + hdferr = h5pget_fill_valuec_c(prp_id, type_id, fillvalue) + END SUBROUTINE h5pget_fill_value_char +! +!****s* H5P (F90)/h5pset_integer +! +! NAME +! h5pset_integer +! +! PURPOSE +! Sets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! value - value to set property to +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5pset_integer(prp_id, name, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + INTEGER, INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pset_integer_c(prp_id, name, name_len, value) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_INTEGER_C'::h5pset_integer_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER, INTENT(IN) :: value + END FUNCTION h5pset_integer_c + END INTERFACE + + name_len = LEN(name) + hdferr = h5pset_integer_c(prp_id, name , name_len, value) + END SUBROUTINE h5pset_integer + +! +!****s* H5P (F90)/h5pset_real +! +! NAME +! h5pset_real +! +! PURPOSE +! Sets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! value - value to set property to +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5pset_real(prp_id, name, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + REAL, INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pset_real_c(prp_id, name, name_len, value) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_REAL_C'::h5pset_real_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + REAL, INTENT(IN) :: value + END FUNCTION h5pset_real_c + END INTERFACE + + name_len = LEN(name) + hdferr = h5pset_real_c(prp_id, name , name_len, value) + END SUBROUTINE h5pset_real + +! +!****s* H5P (F90)/h5pset_double +! +! NAME +! h5pset_double +! +! PURPOSE +! Sets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! value - value to set property to +! OUTPUTS +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! SOURCE + SUBROUTINE h5pset_double(prp_id, name, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + DOUBLE PRECISION, INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pset_double_c(prp_id, name, name_len, value) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_DOUBLE_C'::h5pset_double_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + DOUBLE PRECISION, INTENT(IN) :: value + END FUNCTION h5pset_double_c + END INTERFACE + + name_len = LEN(name) + hdferr = h5pset_double_c(prp_id, name , name_len, value) + END SUBROUTINE h5pset_double + +!****s* H5P (F90)/h5pset_char +! +! NAME +! h5pset_char +! +! PURPOSE +! Sets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! value - value to set property to +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! OPTIONAL PARAMETERS +! NONE +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! SOURCE + SUBROUTINE h5pset_char(prp_id, name, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + CHARACTER(LEN=*), INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + INTEGER :: value_len + + INTERFACE + INTEGER FUNCTION h5psetc_c(prp_id, name, name_len, value, value_len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSETC_C'::h5psetc_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + !DEC$ATTRIBUTES reference :: value + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + CHARACTER(LEN=*), INTENT(IN) :: value + INTEGER, INTENT(IN) :: value_len + END FUNCTION h5psetc_c + END INTERFACE + + name_len = LEN(name) + value_len = LEN(value) + hdferr = h5psetc_c(prp_id, name , name_len, value, value_len) + END SUBROUTINE h5pset_char + +!****s* H5P (F90)/h5pget_integer +! +! NAME +! h5pget_integer +! +! PURPOSE +! Gets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! OUTPUTS +! value - value of property +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5pget_integer(prp_id, name, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + INTEGER, INTENT(OUT) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pget_integer_c(prp_id, name, name_len, value) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_INTEGER_C'::h5pget_integer_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER, INTENT(OUT) :: value + END FUNCTION h5pget_integer_c + END INTERFACE + + name_len = LEN(name) + hdferr = h5pget_integer_c(prp_id, name , name_len, value) + END SUBROUTINE h5pget_integer + +! +!****s* H5P (F90)/h5pget_real +! +! NAME +! h5pget_real +! +! PURPOSE +! Gets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! OUTPUTS +! value - value of property +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! SOURCE + SUBROUTINE h5pget_real(prp_id, name, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + REAL, INTENT(OUT) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pget_real_c(prp_id, name, name_len, value) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_REAL_C'::h5pget_real_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + REAL, INTENT(OUT) :: value + END FUNCTION h5pget_real_c + END INTERFACE + + name_len = LEN(name) + hdferr = h5pget_real_c(prp_id, name , name_len, value) + END SUBROUTINE h5pget_real + +!****s* H5P (F90)/h5pget_double +! +! NAME +! h5pget_double +! +! PURPOSE +! Gets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! OUTPUTS +! value - value of property +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5pget_double(prp_id, name, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + DOUBLE PRECISION, INTENT(OUT) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pget_double_c(prp_id, name, name_len, value) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_DOUBLE_C'::h5pget_double_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + DOUBLE PRECISION, INTENT(OUT) :: value + END FUNCTION h5pget_double_c + END INTERFACE + + name_len = LEN(name) + hdferr = h5pget_double_c(prp_id, name , name_len, value) + END SUBROUTINE h5pget_double + +! +!****s* H5P (F90)/h5pget_char +! +! NAME +! h5pget_char +! +! PURPOSE +! Gets a property list value +! +! INPUTS +! prp_id - iproperty list identifier to modify +! name - name of property to modify +! OUTPUTS +! value - value of property +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5pget_char(prp_id, name, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify + CHARACTER(LEN=*), INTENT(OUT) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + INTEGER :: value_len + + INTERFACE + INTEGER FUNCTION h5pgetc_c(prp_id, name, name_len, value, value_len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGETC_C'::h5pgetc_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + !DEC$ATTRIBUTES reference :: value + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + CHARACTER(LEN=*), INTENT(OUT) :: value + INTEGER, INTENT(IN) :: value_len + END FUNCTION h5pgetc_c + END INTERFACE + + name_len = LEN(name) + value_len = LEN(value) + hdferr = h5pgetc_c(prp_id, name , name_len, value, value_len) + END SUBROUTINE h5pget_char + +! +!****s* H5P (F90)/h5pregister_integer +! +! NAME +! h5pregister_integer +! +! PURPOSE +! Registers a permanent property with a property list class. +! +! INPUTS +! class - property list class to register +! permanent property within +! name - name of property to register +! size - size of property in bytes +! value - default value for property in newly +! created property lists +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! +! SOURCE + SUBROUTINE h5pregister_integer(class, name, size, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register + INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value + INTEGER, INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pregister_integer_c(class, name, name_len, size, value) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PREGISTER_INTEGER_C'::h5pregister_integer_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: class + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER(SIZE_T), INTENT(IN) :: size + INTEGER, INTENT(IN) :: value + END FUNCTION h5pregister_integer_c + END INTERFACE + + name_len = LEN(name) + hdferr = h5pregister_integer_c(class, name , name_len, size, value) + END SUBROUTINE h5pregister_integer + +!****s* H5P (F90)/h5pregister_real +! +! NAME +! +! h5pregister_real +! +! PURPOSE Registers a permanent property with a property list class. +! +! INPUTS +! class - property list class to register +! permanent property within +! name - name of property to register +! size - size of property in bytes +! value - default value for property in newly +! created property lists +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! SOURCE + SUBROUTINE h5pregister_real(class, name, size, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register + INTEGER(SIZE_T), INTENT(IN) :: size ! size of the property value + REAL, INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pregister_real_c(class, name, name_len, size, value) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PREGISTER_REAL_C'::h5pregister_real_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: class + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER(SIZE_T), INTENT(IN) :: size + REAL, INTENT(IN) :: value + END FUNCTION h5pregister_real_c + END INTERFACE + + name_len = LEN(name) + hdferr = h5pregister_real_c(class, name , name_len, size, value) + END SUBROUTINE h5pregister_real + +! +!****s* H5P (F90)/h5pregister_double +! +! NAME +! h5pregister_double +! +! PURPOSE +! Registers a permanent property with a property list class. +! +! INPUTS +! class - property list class to register +! permanent property within +! name - name of property to register +! size - size of property in bytes +! value - default value for property in newly +! created property lists +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! +! SOURCE + SUBROUTINE h5pregister_double(class, name, size, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register + INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value + DOUBLE PRECISION, INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pregister_double_c(class, name, name_len, size, value) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PREGISTER_DOUBLE_C'::h5pregister_double_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: class + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER(SIZE_T), INTENT(IN) :: size + DOUBLE PRECISION, INTENT(IN) :: value + END FUNCTION h5pregister_double_c + END INTERFACE + + name_len = LEN(name) + hdferr = h5pregister_double_c(class, name , name_len, size, value) + END SUBROUTINE h5pregister_double + +! +!****s* H5P (F90)/h5pregister_char +! +! NAME +! h5pregister_char +! +! PURPOSE +! Registers a permanent property with a property list class. +! +! INPUTS +! class - property list class to register +! permanent property within +! name - name of property to register +! size - size of property in bytes +! value - default value for property in newly +! created property lists +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! SOURCE + SUBROUTINE h5pregister_char(class, name, size, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register + INTEGER(SIZE_T), INTENT(IN) :: size ! size of the property value + CHARACTER(LEN=*), INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + INTEGER :: value_len + + INTERFACE + INTEGER FUNCTION h5pregisterc_c(class, name, name_len, size, value, & + value_len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PREGISTERC_C'::h5pregisterc_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + !DEC$ATTRIBUTES reference :: value + INTEGER(HID_T), INTENT(IN) :: class + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER(SIZE_T), INTENT(IN) :: size + CHARACTER(LEN=*), INTENT(IN) :: value + INTEGER, INTENT(IN) :: value_len + END FUNCTION h5pregisterc_c + END INTERFACE + + name_len = LEN(name) + value_len = LEN(value) + hdferr = h5pregisterc_c(class, name , name_len, size, value, value_len) + END SUBROUTINE h5pregister_char +! +!****s* H5P (F90)/h5pinsert_integer +! +! NAME +! h5pinsert_integer +! +! PURPOSE +! Registers a temporary property with a property list class. +! +! INPUTS +! plist - property list identifier +! name - name of property to insert +! size - size of property in bytes +! value - initial value for the property +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! SOURCE + SUBROUTINE h5pinsert_integer(plist, name, size, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert + INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value + INTEGER, INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pinsert_integer_c(plist, name, name_len, size, value) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PINSERT_INTEGER_C'::h5pinsert_integer_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: plist + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER(SIZE_T), INTENT(IN) :: size + INTEGER, INTENT(IN) :: value + END FUNCTION h5pinsert_integer_c + END INTERFACE + + name_len = LEN(name) + hdferr = h5pinsert_integer_c(plist, name , name_len, size, value) + END SUBROUTINE h5pinsert_integer + +! +!****s* H5P (F90)/h5pinsert_real +! +! NAME +! h5pinsert_real +! +! PURPOSE +! Registers a temporary property with a property list class. +! +! INPUTS +! plist - property list identifier +! permanent property within +! name - name of property to insert +! size - size of property in bytes +! value - initial value for the property +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! SOURCE + SUBROUTINE h5pinsert_real(plist, name, size, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert + INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value + REAL, INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pinsert_real_c(plist, name, name_len, size, value) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PINSERT_REAL_C'::h5pinsert_real_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: plist + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER(SIZE_T), INTENT(IN) :: size + REAL, INTENT(IN) :: value + END FUNCTION h5pinsert_real_c + END INTERFACE + + name_len = LEN(name) + hdferr = h5pinsert_real_c(plist, name , name_len, size, value) + END SUBROUTINE h5pinsert_real + +!****s* H5P (F90)/h5pinsert_double +! +! NAME +! +! h5pinsert_double +! +! PURPOSE +! Registers a temporary property with a property list class. +! +! INPUTS +! plist - property list identifier +! permanent property within +! name - name of property to insert +! size - size of property in bytes +! value - initial value for the property +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! SOURCE + SUBROUTINE h5pinsert_double(plist, name, size, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert + INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value + DOUBLE PRECISION, INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pinsert_double_c(plist, name, name_len, size, value) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PINSERT_DOUBLE_C'::h5pinsert_double_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: plist + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER(SIZE_T), INTENT(IN) :: size + DOUBLE PRECISION, INTENT(IN) :: value + END FUNCTION h5pinsert_double_c + END INTERFACE + + name_len = LEN(name) + hdferr = h5pinsert_double_c(plist, name , name_len, size, value) + END SUBROUTINE h5pinsert_double + +! +!****s* H5P (F90)/h5pinsert_char +! +! NAME +! h5pinsert_char +! +! PURPOSE +! Registers a temporary property with a property list class. +! +! INPUTS +! plist - property list identifier +! permanent property within +! name - name of property to insert +! size - size of property in bytes +! value - initial value for the property +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 10, 2002 +! SOURCE +SUBROUTINE h5pinsert_char(plist, name, size, value, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert + INTEGER(SIZE_T), INTENT(IN) :: size ! Size of property value + CHARACTER(LEN=*), INTENT(IN) :: value ! Property value + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + INTEGER :: value_len + + INTERFACE + INTEGER FUNCTION h5pinsertc_c(plist, name, name_len, size, value, value_len) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PINSERTC_C'::h5pinsertc_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + !DEC$ATTRIBUTES reference :: value + INTEGER(HID_T), INTENT(IN) :: plist + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER(SIZE_T), INTENT(IN) :: size + CHARACTER(LEN=*), INTENT(IN) :: value + INTEGER, INTENT(IN) :: value_len + END FUNCTION h5pinsertc_c + END INTERFACE + + name_len = LEN(name) + value_len = LEN(value) + hdferr = h5pinsertc_c(plist, name , name_len, size, value, value_len) + END SUBROUTINE h5pinsert_char + +! +!****s* H5P (F90)/h5pcreate_class_f +! +! NAME +! h5pcreate_class_f +! +! PURPOSE +! Create a new property list class +! +! INPUTS +! parent - Property list identifier of the parent class +! Possible values include: +! H5P_ROOT_F +! H5P_FILE_CREATE_F +! H5P_FILE_ACCESS_F +! H5P_DATASET_CREATE_F +! H5P_DATASET_XFER_F +! H5P_FILE_MOUNT_F +! name - name of the class we are creating +! OUTPUTS +! class - property list class identifier +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! October 9, 2002 +! +! SOURCE + SUBROUTINE h5pcreate_class_f(parent, name, class, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: parent ! parent property list class + ! identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! name of property tocreate + INTEGER(HID_T), INTENT(OUT) :: class ! property list class identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: name_len + + INTERFACE + INTEGER FUNCTION h5pcreate_class_c(parent, name, name_len,& + class) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PCREATE_CLASS_C'::h5pcreate_class_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: parent + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: name_len + INTEGER(HID_T), INTENT(OUT) :: class + END FUNCTION h5pcreate_class_c + END INTERFACE + + name_len = LEN(name) + hdferr = h5pcreate_class_c(parent, name, name_len, class) + + END SUBROUTINE h5pcreate_class_f + +END MODULE H5P_PROVISIONAL + diff --git a/fortran/src/H5Rf.c b/fortran/src/H5Rf.c index 0988918..86e0e61 100644 --- a/fortran/src/H5Rf.c +++ b/fortran/src/H5Rf.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5Rf/H5Rf + * PURPOSE + * This file contains C stubs for H5R Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,26 +16,35 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for H5R Fortran APIs */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" #include "H5Eprivate.h" -/*---------------------------------------------------------------------------- - * Name: h5rcreate_object_c - * Purpose: Call H5Rcreate to create a reference to an object - * Inputs: loc_id - file or group identifier - * name - name of the dataset - * namelen - name length - * Outputs: ref - reference to the object - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Wednesday, December 1, 1999 - *---------------------------------------------------------------------------*/ +/****if* H5Rf/h5rcreate_object_c + * NAME + * h5rcreate_object_c + * PURPOSE + * Call H5Rcreate to create a reference to an object + * INPUTS + * loc_id - file or group identifier + * name - name of the dataset + * namelen - name length + * OUTPUTS + * ref - reference to the object + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Wednesday, December 1, 1999 + * SOURCE +*/ int_f nh5rcreate_object_c(haddr_t_f *ref, hid_t_f *loc_id, _fcd name, int_f *namelen) +/******/ { char *c_name = NULL; hobj_ref_t ref_c; @@ -57,21 +71,31 @@ done: return ret_value; } /* nh5rcreate_object_c() */ -/*---------------------------------------------------------------------------- - * Name: h5rcreate_region_c - * Purpose: Call H5Rcreate to create a reference to dataset region +/****if* H5Rf/h5rcreate_region_c + * NAME + * h5rcreate_region_c + * PURPOSE + * Call H5Rcreate to create a reference to dataset region * region - * Inputs: loc_id - file or group identifier + * INPUTS + * loc_id - file or group identifier * name - name of the dataset * namelen - name length * space_id - dataset space identifier - * Outputs: ref - reference to the dataset region - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Wednesday, December 1, 1999 - *---------------------------------------------------------------------------*/ + * OUTPUTS + * ref - reference to the dataset region + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Wednesday, December 1, 1999 + * HISTORY + * + * SOURCE +*/ int_f nh5rcreate_region_c(int_f *ref, hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *space_id) +/******/ { char *c_name = NULL; hdset_reg_ref_t ref_c; @@ -98,18 +122,73 @@ done: return ret_value; } /* end nh5rcreate_region_c() */ -/*---------------------------------------------------------------------------- - * Name: h5rdereference_region_c - * Purpose: Call H5Rdereference to dereference to dataset region - * Inputs: dset_id - dataset identifier +/****if* H5Rf/h5rcreate_ptr_c + * NAME + * h5rcreate_ptr_c + * PURPOSE + * Call H5Rcreate to create a reference to dataset region + * INPUTS + * loc_id - file or group identifier + * name - name of the dataset + * namelen - name length + * space_id - dataset space identifier + * OUTPUTS + * ref - reference to the dataset region + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * June 20, 2008 + * + * SOURCE +*/ +int_f +nh5rcreate_ptr_c (void *ref, hid_t_f *loc_id, _fcd name, int_f *namelen, int_f *ref_type, hid_t_f *space_id) +/******/ +{ + int ret_value = -1; + char *c_name; + size_t c_namelen; + + /* + * Convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) return ret_value; + + /* + * Call H5Rcreate function. + */ + if(H5Rcreate(ref, (hid_t)*loc_id, c_name, (H5R_type_t)*ref_type, (hid_t)*space_id) >= 0) + ret_value = 0; + + HDfree(c_name); + return ret_value; +} + +/****if* H5Rf/h5rdereference_region_c + * NAME + * h5rdereference_region_c + * PURPOSE + * Call H5Rdereference to dereference to dataset region + * INPUTS + * dset_id - dataset identifier * ref - reference to the dataset region - * Outputs: obj_id - dereferenced dataset identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Wednesday, December 1, 1999 - *---------------------------------------------------------------------------*/ + * OUTPUTS + * obj_id - dereferenced dataset identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Wednesday, December 1, 1999 + * HISTORY + * + * SOURCE +*/ int_f nh5rdereference_region_c(hid_t_f *dset_id, int_f *ref, hid_t_f *obj_id) +/******/ { hdset_reg_ref_t ref_c; hid_t c_obj_id; @@ -131,18 +210,28 @@ done: return ret_value; } /* end nh5rdereference_region_c() */ -/*---------------------------------------------------------------------------- - * Name: h5rdereference_object_c - * Purpose: Call H5Rdereference to dereference an object - * Inputs: dset_id - dataset identifier +/****if* H5Rf/h5rdereference_object_c + * NAME + * h5rdereference_object_c + * PURPOSE + * Call H5Rdereference to dereference an object + * INPUTS + * dset_id - dataset identifier * ref - reference to an object - * Outputs: obj_id - dereferenced object identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Wednesday, December 1, 1999 - *---------------------------------------------------------------------------*/ + * OUTPUTS + * obj_id - dereferenced object identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Wednesday, December 1, 1999 + * HISTORY + * + * SOURCE +*/ int_f nh5rdereference_object_c(hid_t_f *dset_id, haddr_t_f *ref, hid_t_f *obj_id) +/******/ { hid_t c_obj_id; hobj_ref_t ref_c = (hobj_ref_t)*ref; @@ -161,18 +250,66 @@ done: return ret_value; } /* end nh5rdereference_object_c() */ -/*---------------------------------------------------------------------------- - * Name: h5rget_region_region_object_c - * Purpose: Call H5Rget_region to dereference dataspace region - * Inputs: dset_id - dataset identifier - * ref - reference to the dataset region - * Outputs: space_id - dereferenced dataset dataspace identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Wednesday, December 1, 1999 - *---------------------------------------------------------------------------*/ +/****if* H5Rf/h5rdereference_ptr_c + * NAME + * h5rdereference_ptr_c + * PURPOSE + * Call H5Rdereference + * INPUTS + * obj_id - Valid identifier for the file containing the + * referenced object or any object in that file. + * ref_typ - The reference type of ref. + * ref - Object reference + * OUTPUTS + * ref_obj_id - Identifier of referenced object + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * June 20, 2008 + * HISTORY + * + * SOURCE +*/ +int_f +nh5rdereference_ptr_c (hid_t_f *obj_id, int_f *ref_type, void *ref, hid_t_f *ref_obj_id) +/******/ +{ + int ret_value = -1; + hid_t c_ref_obj_id; + + /* + * Call H5Rdereference function. + */ + c_ref_obj_id = H5Rdereference2((hid_t)*obj_id, H5P_DEFAULT, (H5R_type_t)*ref_type, ref); + if(c_ref_obj_id < 0) return ret_value; + *ref_obj_id = (hid_t_f)c_ref_obj_id; + ret_value = 0; + return ret_value; +} + +/****if* H5Rf/h5rget_region_region_object_c + * NAME + * h5rget_region_region_object_c + * PURPOSE + * Call H5Rget_region to dereference dataspace region + * INPUTS + * dset_id - dataset identifier + * ref - reference to the dataset region + * OUTPUTS + * space_id - dereferenced dataset dataspace identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Wednesday, December 1, 1999 + * HISTORY + * + * SOURCE +*/ int_f nh5rget_region_region_c(hid_t_f *dset_id, int_f *ref, hid_t_f *space_id) +/******/ { hid_t c_space_id; hdset_reg_ref_t ref_c; @@ -194,19 +331,29 @@ done: return ret_value; } /* end nh5rget_region_region_c() */ -/*---------------------------------------------------------------------------- - * Name: h5rget_object_type_obj_c - * Purpose: Call H5Rget_object_type to retrieve the type of the object reference points +/****if* H5Rf/h5rget_object_type_obj_c + * NAME + * h5rget_object_type_obj_c + * PURPOSE + * Call H5Rget_object_type to retrieve the type of the object reference points * to - * Inputs: dset_id - dataset identifier + * INPUTS + * dset_id - dataset identifier * ref - reference to the dataset region - * Outputs: obj_type - type of dereferenced object - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Wednesday, December 1, 1999 - *---------------------------------------------------------------------------*/ + * OUTPUTS + * obj_type - type of dereferenced object + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Wednesday, December 1, 1999 + * HISTORY + * + * SOURCE +*/ int_f nh5rget_object_type_obj_c(hid_t_f *dset_id, haddr_t_f *ref, int_f *obj_type) +/******/ { H5O_type_t c_obj_type; hobj_ref_t ref_c = (hobj_ref_t)*ref; @@ -225,22 +372,32 @@ done: return ret_value; } /* end nh5rget_object_type_obj_c() */ -/*---------------------------------------------------------------------------- - * Name: h5rget_name_object_c - * Purpose: Call H5Rget_name for an object - * Inputs: +/****if* H5Rf/h5rget_name_object_c + * NAME + * h5rget_name_object_c + * PURPOSE + * Call H5Rget_name for an object + * INPUTS + * * loc_id - Identifier for the dataset containing the reference or for the group that dataset is in. * ref - An object or dataset region reference. * - * Outputs: name - A name associated with the referenced object or dataset region. + * OUTPUTS + * name - A name associated with the referenced object or dataset region. * size - The size of the name buffer. * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * March 31, 2008 - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * March 31, 2008 + * HISTORY + * + * SOURCE +*/ int_f nh5rget_name_object_c(hid_t_f *loc_id, haddr_t_f *ref, _fcd name, size_t_f *name_len, size_t_f *size_default) +/******/ { hobj_ref_t ref_c = (hobj_ref_t)*ref; ssize_t c_size; @@ -273,22 +430,32 @@ done: return ret_value; } /* end nh5rget_name_object_c() */ -/*---------------------------------------------------------------------------- - * Name: h5rget_name_region_c - * Purpose: Call H5Rget_name for a dataset region - * Inputs: +/****if* H5Rf/h5rget_name_region_c + * NAME + * h5rget_name_region_c + * PURPOSE + * Call H5Rget_name for a dataset region + * INPUTS + * * loc_id - Identifier for the dataset containing the reference or for the group that dataset is in. * ref - An object or dataset region reference. * - * Outputs: name - A name associated with the referenced object or dataset region. + * OUTPUTS + * name - A name associated with the referenced object or dataset region. * size - The size of the name buffer. * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * March 31, 2008 - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * March 31, 2008 + * HISTORY + * + * SOURCE +*/ int_f nh5rget_name_region_c(hid_t_f *loc_id, int_f *ref, _fcd name, size_t_f *name_len, size_t_f *size_default) +/******/ { hdset_reg_ref_t ref_c; ssize_t c_size; @@ -321,5 +488,108 @@ done: if(c_buf) HDfree(c_buf); return ret_value; -} /* end nh5rget_name_region_c() */ +} + +/****if* H5Rf/h5rget_name_ptr_c + * NAME + * h5rget_name_ptr_c + * PURPOSE + * Call H5Rget_name + * INPUTS + * + * loc_id - Identifier for the dataset containing the reference or for the group that dataset is in. + * ref_type - Type of reference. + * ref - An object or dataset region reference. + * + * OUTPUTS + * name - A name associated with the referenced object or dataset region. + * size - The size of the name buffer. + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * June 20, 2008 + * HISTORY + * + * SOURCE +*/ +int_f +nh5rget_name_ptr_c (hid_t_f *loc_id, int_f *ref_type, void *ref, _fcd name, size_t_f *name_len, size_t_f *size_default) +/******/ +{ + int_f ret_value = -1; + ssize_t c_size; + size_t c_bufsize; + char *c_buf= NULL; /* Buffer to hold C string */ + + c_bufsize = (size_t)*name_len+1; + /* + * Allocate buffer to hold name of an attribute + */ + if ((c_buf = HDmalloc(c_bufsize)) == NULL) + return ret_value; + + /* + * Call H5Rget_name function. + */ + if((c_size=H5Rget_name((hid_t)*loc_id, (H5R_type_t)*ref_type, ref, c_buf, c_bufsize)) < 0){ + if(c_buf) HDfree(c_buf); + return ret_value; + } + /* + * Convert C name to FORTRAN and place it in the given buffer + */ + HD5packFstring(c_buf, _fcdtocp(name), c_bufsize-1); + + *size_default = (size_t_f)c_size; + ret_value = 0; + if(c_buf) HDfree(c_buf); + + return ret_value; +} + +/****if* H5Rf/h5rget_obj_type_c + * NAME + * h5rget_obj_type_c + * PURPOSE + * Call H5Rget_obj_type + * INPUTS + * loc_id - Identifier for the dataset containing the reference or + * for the group that dataset is in. + * ref_type - Type of reference to query. + * ref - Reference to query. + * + * OUTPUTS + * obj_type - Type of referenced object. + * H5G_UNKNOWN_F (-1) + * H5G_LINK_F 0 + * H5G_GROUP_F 1 + * H5G_DATASET_F 2 + * H5G_TYPE_F 3 + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * December 17, 2008 + * + * SOURCE +*/ +int_f +nh5rget_obj_type_c (hid_t_f *loc_id, int_f *ref_type, void *ref, int_f *obj_type) +/******/ +{ + int_f ret_value = -1; + H5O_type_t obj_type_c; + + /* + * Call H5Rget_obj_type function. + */ + if((H5Rget_obj_type2((hid_t)*loc_id, (H5R_type_t)*ref_type, ref, &obj_type_c)) < 0) + return ret_value; + + *obj_type = (int_f)obj_type_c; + ret_value = 0; + return ret_value; +} diff --git a/fortran/src/H5Rff.f90 b/fortran/src/H5Rff.f90 index 6c557e3..35a3ed6 100644 --- a/fortran/src/H5Rff.f90 +++ b/fortran/src/H5Rff.f90 @@ -1,3 +1,18 @@ +!****h* ROBODoc/H5R +! +! NAME +! MODULE H5R +! +! FILE +! fortran/src/H5Rff.f90 +! +! PURPOSE +! This file contains Fortran interfaces for H5R functions. It includes +! all the functions that are independent on whether the Fortran 2003 functions +! are enabled or disabled. +! +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,565 +28,164 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! NOTES +! *** IMPORTANT *** +! If you add a new H5R function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. ! -! This file contains Fortran90 interfaces for H5R functions. -! - MODULE H5R - USE H5GLOBAL - -! If you change the value of these parameters, do not forget to change corresponding -! values in the H5f90.h file. -! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 -! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 -! -! TYPE hobj_ref_t_f -! INTEGER ref(REF_OBJ_BUF_LEN) -! END TYPE -! -! TYPE hdset_reg_ref_t_f -! INTEGER ref(REF_REG_BUF_LEN) -! END TYPE -! - INTERFACE h5rcreate_f - - MODULE PROCEDURE h5rcreate_object_f - MODULE PROCEDURE h5rcreate_region_f - - END INTERFACE - - INTERFACE h5rdereference_f - - MODULE PROCEDURE h5rdereference_object_f - MODULE PROCEDURE h5rdereference_region_f - - END INTERFACE - - INTERFACE h5rget_region_f - - MODULE PROCEDURE h5rget_region_region_f - - END INTERFACE - - INTERFACE h5rget_object_type_f - - MODULE PROCEDURE h5rget_object_type_obj_f - - END INTERFACE - - INTERFACE h5rget_name_f - - MODULE PROCEDURE h5rget_name_object_f - MODULE PROCEDURE h5rget_name_region_f - - END INTERFACE - - CONTAINS - -!---------------------------------------------------------------------- -! Name: h5rcreate_object_f -! -! Purpose: Creates reference to the object -! -! Inputs: -! loc_id - location identifier -! name - name of the object at the specified location -! Outputs: -! ref - reference to the specified object -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: This is a module procedure for the h5rcreate_f -! subroutine. -!---------------------------------------------------------------------- - - SUBROUTINE h5rcreate_object_f(loc_id, name, ref, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the object at location specified - ! by loc_id identifier - TYPE(hobj_ref_t_f), INTENT(OUT) :: ref ! Object reference - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER :: namelen ! Name length - INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference - -! INTEGER, EXTERNAL :: h5fcreate_object_c -! Interface is needed for MS FORTRAN -! - INTERFACE - INTEGER FUNCTION h5rcreate_object_c(ref_f, loc_id, name, namelen) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RCREATE_OBJECT_C':: h5rcreate_object_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HADDR_T) :: ref_f - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER :: namelen - END FUNCTION h5rcreate_object_c - END INTERFACE - - namelen = LEN(name) - ref_f = 0 - hdferr = h5rcreate_object_c(ref_f, loc_id, name, namelen ) - ref%ref = ref_f - - END SUBROUTINE h5rcreate_object_f - -!---------------------------------------------------------------------- -! Name: h5rcreate_region_f -! -! Purpose: Creates r eference to the dataset region -! -! Inputs: -! loc_id - location identifier -! name - name of the dataset at the specified location -! space_id - dataspace identifier that describes selected region -! Outputs: -! ref - reference to the dataset region -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: This is a module procedure for the h5rcreate_f -! subroutine. -!---------------------------------------------------------------------- - - SUBROUTINE h5rcreate_region_f(loc_id, name, space_id, ref, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier - CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset at location specified - ! by loc_id identifier - INTEGER(HID_T), INTENT(IN) :: space_id ! Dataset's dataspace identifier - TYPE(hdset_reg_ref_t_f), INTENT(OUT) :: ref ! Dataset region reference - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER :: namelen ! Name length - INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference +!***** -! INTEGER, EXTERNAL :: h5fcreate_region_c -! Interface is needed for MS FORTRAN -! - INTERFACE - INTEGER FUNCTION h5rcreate_region_c(ref_f, loc_id, name, namelen, space_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RCREATE_REGION_C':: h5rcreate_region_c - !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name -! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 - INTEGER :: ref_f(REF_REG_BUF_LEN) - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(LEN=*), INTENT(IN) :: name - INTEGER :: namelen - INTEGER(HID_T), INTENT(IN) :: space_id - END FUNCTION h5rcreate_region_c - END INTERFACE - - namelen = LEN(name) - ref_f = 0 - hdferr = h5rcreate_region_c(ref_f, loc_id, name, namelen, space_id ) - ref%ref = ref_f +MODULE H5R + USE H5GLOBAL - END SUBROUTINE h5rcreate_region_f + ! If you change the value of these parameters, do not forget to change corresponding + ! values in the H5f90.h file. + ! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 + ! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 + ! + ! TYPE hobj_ref_t_f + ! INTEGER ref(REF_OBJ_BUF_LEN) + ! END TYPE + ! + ! TYPE hdset_reg_ref_t_f + ! INTEGER ref(REF_REG_BUF_LEN) + ! END TYPE + ! -!---------------------------------------------------------------------- -! Name: h5rdereference_object_f -! -! Purpose: Opens the HDF5 object referenced -! -! Inputs: -! dset_id - identifier of the dataset containing -! reference -! ref - reference to open -! Outputs: -! obj_id - object_identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: This is a module procedure for the h5rdereference_f -! subroutine. -!---------------------------------------------------------------------- + INTERFACE h5rget_region_f + MODULE PROCEDURE h5rget_region_region_f - SUBROUTINE h5rdereference_object_f(dset_id, ref, obj_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - TYPE(hobj_ref_t_f), INTENT(IN) :: ref ! Object reference - INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code + END INTERFACE - INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference + INTERFACE h5rget_object_type_f -! INTEGER, EXTERNAL :: h5h5rdereference_object_c -! Interface is needed for MS FORTRAN -! - INTERFACE - INTEGER FUNCTION h5rdereference_object_c(dset_id, ref_f, obj_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RDEREFERENCE_OBJECT_C':: h5rdereference_object_c - !DEC$ENDIF -! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HADDR_T) :: ref_f - INTEGER(HID_T), INTENT(OUT) :: obj_id - END FUNCTION h5rdereference_object_c - END INTERFACE + MODULE PROCEDURE h5rget_object_type_obj_f - ref_f = ref%ref - hdferr = h5rdereference_object_c(dset_id, ref_f, obj_id ) + END INTERFACE - END SUBROUTINE h5rdereference_object_f +CONTAINS -!---------------------------------------------------------------------- -! Name: h5rdereference_region_f +!****s* H5R/h5rget_region_region_f ! -! Purpose: Opens the dataset region +! NAME +! h5rget_region_region_f ! -! Inputs: -! dset_id - identifier of the dataset containing -! reference to teh regions -! ref - reference to open -! Outputs: -! obj_id - dataspace identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Retrieves a dataspace with the specified region selected ! -! Programmer: Elena Pourmal -! August 12, 1999 +! INPUTS +! dset_id - identifier of the dataset containing +! reference to the regions +! ref - reference to open +! OUTPUTS +! space_id - dataspace identifier +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 ! -! Comment: This is a module procedure for the h5rdereference_f -! subroutine. -!---------------------------------------------------------------------- - - - SUBROUTINE h5rdereference_region_f(dset_id, ref, obj_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Object reference - INTEGER(HID_T), INTENT(OUT) :: obj_id ! Dataspace identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference - -! INTEGER, EXTERNAL :: h5rdereference_region_c -! Interface is needed for MS FORTRAN +! NOTES +! This is a module procedure for the h5rget_region_f subroutine. ! - INTERFACE - INTEGER FUNCTION h5rdereference_region_c(dset_id, ref_f, obj_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RDEREFERENCE_REGION_C':: h5rdereference_region_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id -! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 - INTEGER :: ref_f(REF_REG_BUF_LEN) - INTEGER(HID_T), INTENT(OUT) :: obj_id - END FUNCTION h5rdereference_region_c - END INTERFACE - - ref_f = ref%ref - hdferr = h5rdereference_region_c(dset_id, ref_f, obj_id ) - - END SUBROUTINE h5rdereference_region_f - -!---------------------------------------------------------------------- -! Name: h5rget_region_region_f -! -! Purpose: Retrieves a dataspace with the specified region selected -! -! Inputs: -! dset_id - identifier of the dataset containing -! reference to the regions -! ref - reference to open -! Outputs: -! space_id - dataspace identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: This is a module procedure for the h5rget_region_f -! subroutine. -!---------------------------------------------------------------------- - - - - SUBROUTINE h5rget_region_region_f(dset_id, ref, space_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Dataset region reference - INTEGER(HID_T), INTENT(OUT) :: space_id ! Space identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference - -! INTEGER, EXTERNAL :: h5rget_region_region_c -! Interface is needed for MS FORTRAN -! - INTERFACE - INTEGER FUNCTION h5rget_region_region_c(dset_id, ref_f, space_id) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_REGION_REGION_C':: h5rget_region_region_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: dset_id -! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 - INTEGER :: ref_f(REF_REG_BUF_LEN) - INTEGER(HID_T), INTENT(OUT) :: space_id - END FUNCTION h5rget_region_region_c - END INTERFACE - - ref_f = ref%ref - hdferr = h5rget_region_region_c(dset_id, ref_f, space_id ) - - END SUBROUTINE h5rget_region_region_f - -!---------------------------------------------------------------------- -! Name: h5rget_object_type_obj_f -! -! Purpose: Retrieves the type of object that an object reference points to. -! -! Inputs: -! dset_id - identifier of the dataset containing -! reference to the objects -! ref - reference to open -! Outputs: -! obj_type - object_type, possible values: -! H5G_UNKNOWN_F (-1) -! H5G_GROUP_F 0 -! H5G_DATASET_F 1 -! H5G_TYPE_F 2 -! H5G_LINK_F 3 -! -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: This is a module procedure for the h5rget_object_type_f -! subroutine. -!---------------------------------------------------------------------- - - - SUBROUTINE h5rget_object_type_obj_f(dset_id, ref, obj_type, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier - TYPE(hobj_ref_t_f), INTENT(IN) :: ref ! Object reference - INTEGER, INTENT(OUT) :: obj_type ! Object type - ! H5G_UNKNOWN_F (-1) - ! H5G_GROUP_F 0 - ! H5G_DATASET_F 1 - ! H5G_TYPE_F 2 - ! H5G_LINK_F 3 - - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference - -! INTEGER, EXTERNAL :: h5rget_object_type_obj_c -! Interface is needed for MS FORTRAN -! - INTERFACE - INTEGER FUNCTION h5rget_object_type_obj_c(dset_id, ref_f, obj_type) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_OBJECT_TYPE_OBJ_C':: h5rget_object_type_obj_c - !DEC$ENDIF -! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 - INTEGER(HID_T), INTENT(IN) :: dset_id - INTEGER(HADDR_T) :: ref_f - INTEGER, INTENT(OUT) :: obj_type - END FUNCTION h5rget_object_type_obj_c - END INTERFACE - - ref_f = ref%ref - hdferr = h5rget_object_type_obj_c(dset_id, ref_f, obj_type ) - - END SUBROUTINE h5rget_object_type_obj_f - -!---------------------------------------------------------------------- -! Name: h5rget_name_object_f -! -! Purpose: Retrieves a name of a referenced object. -! -! Inputs: -! loc_id - Identifier for the dataset containing the reference or for the group that dataset is in. -! ref - An object or dataset region reference. -! -! Outputs: -! name - A name associated with the referenced object or dataset region. -! -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! size - The size of the name buffer. -! -! Programmer: M.S. Breitenfeld -! March 28, 2008 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5rget_name_object_f(loc_id, ref, name, hdferr, size) +! SOURCE + SUBROUTINE h5rget_region_region_f(dset_id, ref, space_id, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for the dataset containing the reference - ! or for the group that dataset is in. - TYPE(hobj_ref_t_f), INTENT(IN) :: ref ! Object reference - INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size ! The size of the name buffer, - ! returning 0 (zero) if no name is associated with the identifier - CHARACTER(LEN=*), INTENT(OUT) :: name ! A name associated with the referenced object or dataset region. - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference - - INTEGER(SIZE_T) :: size_default - INTEGER(SIZE_T) :: name_len + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Dataset region reference + INTEGER(HID_T), INTENT(OUT) :: space_id ! Space identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference INTERFACE - INTEGER FUNCTION h5rget_name_object_c(loc_id, ref_f, name, name_len, size_default) + INTEGER FUNCTION h5rget_region_region_c(dset_id, ref_f, space_id) USE H5GLOBAL !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_NAME_OBJECT_C':: h5rget_name_object_c + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_REGION_REGION_C':: h5rget_region_region_c !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: loc_id - INTEGER(SIZE_T) :: size_default - CHARACTER(LEN=*), INTENT(OUT) :: name - INTEGER(HADDR_T) :: ref_f - - INTEGER(SIZE_T) :: name_len - END FUNCTION h5rget_name_object_c + INTEGER(HID_T), INTENT(IN) :: dset_id + ! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 + INTEGER :: ref_f(REF_REG_BUF_LEN) + INTEGER(HID_T), INTENT(OUT) :: space_id + END FUNCTION h5rget_region_region_c END INTERFACE - name_len=LEN(name) - ref_f = ref%ref - hdferr = h5rget_name_object_c(loc_id, ref_f, name, name_len, size_default) - - IF(PRESENT(size)) size = size_default - - END SUBROUTINE h5rget_name_object_f - -!---------------------------------------------------------------------- -! Name: h5rget_name_region_f -! -! Purpose: Retrieves a name of a dataset region. -! -! Inputs: -! loc_id - Identifier for the dataset containing the reference or for the group that dataset is in. -! ref - An object or dataset region reference. -! -! Outputs: -! name - A name associated with the referenced object or dataset region. -! -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! size - The size of the name buffer. -! -! Programmer: M.S. Breitenfeld -! March 28, 2008 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5rget_name_region_f(loc_id, ref, name, hdferr, size) + hdferr = h5rget_region_region_c(dset_id, ref_f, space_id ) + + END SUBROUTINE h5rget_region_region_f + +!****s* H5R/h5rget_object_type_obj_f +! +! NAME +! h5rget_object_type_obj_f +! +! PURPOSE +! Retrieves the type of object that an object reference points to. +! +! INPUTS +! dset_id - identifier of the dataset containing +! reference to the objects +! ref - reference to open +! OUTPUTS +! obj_type - object_type, possible values: +! H5G_UNKNOWN_F (-1) +! H5G_GROUP_F 0 +! H5G_DATASET_F 1 +! H5G_TYPE_F 2 +! H5G_LINK_F 3 +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! NOTES +! This is a module procedure for the h5rget_object_type_f +! subroutine. +! SOURCE + SUBROUTINE h5rget_object_type_obj_f(dset_id, ref, obj_type, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for the dataset containing the reference - ! or for the group that dataset is in. - TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Object reference - INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size ! The size of the name buffer, - ! returning 0 (zero) if no name is associated with the identifier - CHARACTER(LEN=*), INTENT(OUT) :: name ! A name associated with the referenced object or dataset region. - INTEGER, INTENT(OUT) :: hdferr ! Error code - - INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference - INTEGER(SIZE_T) :: size_default - INTEGER(SIZE_T) :: name_len + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + TYPE(hobj_ref_t_f), INTENT(IN) :: ref ! Object reference + INTEGER, INTENT(OUT) :: obj_type ! Object type + ! H5G_UNKNOWN_F (-1) + ! H5G_GROUP_F 0 + ! H5G_DATASET_F 1 + ! H5G_TYPE_F 2 + ! H5G_LINK_F 3 + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference INTERFACE - INTEGER FUNCTION h5rget_name_region_c(loc_id, ref_f, name, name_len, size_default) + INTEGER FUNCTION h5rget_object_type_obj_c(dset_id, ref_f, obj_type) USE H5GLOBAL !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_NAME_REGION_C':: h5rget_name_region_c + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_OBJECT_TYPE_OBJ_C':: h5rget_object_type_obj_c !DEC$ENDIF - !DEC$ATTRIBUTES reference :: name - INTEGER(HID_T), INTENT(IN) :: loc_id - INTEGER(SIZE_T) :: size_default - CHARACTER(LEN=*), INTENT(OUT) :: name - INTEGER :: ref_f(REF_REG_BUF_LEN) - - INTEGER(SIZE_T) :: name_len - END FUNCTION h5rget_name_region_c + ! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HADDR_T) :: ref_f + INTEGER, INTENT(OUT) :: obj_type + END FUNCTION h5rget_object_type_obj_c END INTERFACE - name_len=LEN(name) - ref_f = ref%ref - hdferr = h5rget_name_region_c(loc_id, ref_f, name, name_len, size_default) - - IF(PRESENT(size)) size = size_default + hdferr = h5rget_object_type_obj_c(dset_id, ref_f, obj_type ) - END SUBROUTINE h5rget_name_region_f + END SUBROUTINE h5rget_object_type_obj_f END MODULE H5R diff --git a/fortran/src/H5Rff_F03.f90 b/fortran/src/H5Rff_F03.f90 new file mode 100644 index 0000000..cc31ab4 --- /dev/null +++ b/fortran/src/H5Rff_F03.f90 @@ -0,0 +1,655 @@ +!****h* ROBODoc/H5R (F03) +! +! NAME +! MODULE H5R_PROVISIONAL +! +! FILE +! fortran/src/H5Rff_F03.f90 +! +! PURPOSE +! This file contains Fortran 90 and Fortran 2003 interfaces for H5R functions. +! It contains the same functions as H5Rff_DEPRECIATE.f90 but includes the +! Fortran 2003 functions and the interface listings. This file will be compiled +! instead of H5Rff_DEPRECIATE.f90 if Fortran 2003 functions are enabled. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! *** IMPORTANT *** +! If you add a new H5R function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** +MODULE H5R_PROVISIONAL + USE H5GLOBAL + + ! If you change the value of these parameters, do not forget to change corresponding + ! values in the H5f90.h file. + ! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 + ! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 + ! + ! TYPE hobj_ref_t_f + ! INTEGER ref(REF_OBJ_BUF_LEN) + ! END TYPE + ! + ! TYPE hdset_reg_ref_t_f + ! INTEGER ref(REF_REG_BUF_LEN) + ! END TYPE + ! + INTERFACE h5rcreate_f + + MODULE PROCEDURE h5rcreate_object_f ! obsolete + MODULE PROCEDURE h5rcreate_region_f ! obsolete + MODULE PROCEDURE h5rcreate_ptr_f ! F2003 + + END INTERFACE + + INTERFACE h5rdereference_f + + MODULE PROCEDURE h5rdereference_object_f ! obsolete + MODULE PROCEDURE h5rdereference_region_f ! obsolete + MODULE PROCEDURE h5rdereference_ptr_f ! F2003 + + END INTERFACE + + INTERFACE h5rget_name_f + + MODULE PROCEDURE h5rget_name_object_f ! obsolete + MODULE PROCEDURE h5rget_name_region_f ! obsolete + MODULE PROCEDURE h5rget_name_ptr_f ! F2003 + + END INTERFACE + + INTERFACE + INTEGER FUNCTION h5rget_name_ptr_c(loc_id, ref_type, ref, name, name_len, size_default) + USE, INTRINSIC :: ISO_C_BINDING + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_NAME_PTR_C':: h5rget_name_ptr_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + INTEGER, INTENT(IN) :: ref_type + TYPE(C_PTR), INTENT(IN), VALUE :: ref + CHARACTER(LEN=*), INTENT(OUT) :: name + INTEGER(SIZE_T) :: name_len + INTEGER(SIZE_T) :: size_default + END FUNCTION h5rget_name_ptr_c + END INTERFACE + + INTERFACE + INTEGER FUNCTION h5rdereference_ptr_c(obj_id, ref_type, ref, ref_obj_id) + USE H5GLOBAL + USE, INTRINSIC :: ISO_C_BINDING + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RDEREFERENCE_PTR_C':: h5rdereference_ptr_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: obj_id + INTEGER, INTENT(IN) :: ref_type + TYPE(C_PTR), INTENT(IN), VALUE :: ref + INTEGER(HID_T), INTENT(OUT) :: ref_obj_id + END FUNCTION h5rdereference_ptr_c + END INTERFACE + + INTERFACE + INTEGER FUNCTION h5rcreate_ptr_c(ref, loc_id, name, namelen, ref_type, space_id) + USE, INTRINSIC :: ISO_C_BINDING + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RCREATE_PTR_C':: h5rcreate_ptr_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + TYPE(C_PTR), VALUE :: ref + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER, INTENT(IN) :: ref_type + INTEGER(HID_T), INTENT(IN) :: space_id + END FUNCTION h5rcreate_ptr_c + END INTERFACE + +CONTAINS + +!****s* H5R (F03)/h5rcreate_object_f +! +! NAME +! h5rcreate_object_f +! +! PURPOSE +! Creates reference to the object +! +! INPUTS +! loc_id - location identifier +! name - name of the object at the specified location +! OUTPUTS +! ref - reference to the specified object +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! NOTES +! This is a module procedure for the h5rcreate_f subroutine. +! +! SOURCE + SUBROUTINE h5rcreate_object_f(loc_id, name, ref, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the object at location specified + ! by loc_id identifier + TYPE(hobj_ref_t_f), INTENT(INOUT), TARGET :: ref ! Object reference + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: namelen ! Name length + + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(ref) + + namelen = LEN(name) + + hdferr = h5rcreate_ptr_c(f_ptr, loc_id, name, namelen, INT(0), INT(-1,HID_T)) + + END SUBROUTINE h5rcreate_object_f + +!****s* H5R (F03)/h5rcreate_region_f +! +! NAME +! h5rcreate_region_f +! +! PURPOSE +! Creates reference to the dataset region +! +! INPUTS +! loc_id - location identifier +! name - name of the dataset at the specified location +! space_id - dataspace identifier that describes selected region +! OUTPUTS +! ref - reference to the dataset region +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! NOTES +! This is a module procedure for the h5rcreate_f subroutine. +! +! SOURCE + SUBROUTINE h5rcreate_region_f(loc_id, name, space_id, ref, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset at location specified + ! by loc_id identifier + INTEGER(HID_T), INTENT(IN) :: space_id ! Dataset's dataspace identifier + TYPE(hdset_reg_ref_t_f), INTENT(INOUT), TARGET :: ref ! Dataset region reference + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: namelen ! Name length + INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference + + TYPE(C_PTR) :: f_ptr + +! !$ INTERFACE +! !$ INTEGER FUNCTION h5rcreate_region_c(ref_f, loc_id, name, namelen, space_id) +! !$ USE H5GLOBAL +! !$ !DEC$IF DEFINED(HDF5F90_WINDOWS) +! !$ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RCREATE_REGION_C':: h5rcreate_region_c +! !$ !DEC$ENDIF +! !$ !DEC$ATTRIBUTES reference :: name +! !$ ! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 +! !$ INTEGER :: ref_f(REF_REG_BUF_LEN) +! !$ INTEGER(HID_T), INTENT(IN) :: loc_id +! !$ CHARACTER(LEN=*), INTENT(IN) :: name +! !$ INTEGER :: namelen +! !$ INTEGER(HID_T), INTENT(IN) :: space_id +! !$ END FUNCTION h5rcreate_region_c +! !$ END INTERFACE + + f_ptr = C_LOC(ref) + + namelen = LEN(name) + hdferr = h5rcreate_ptr_c(f_ptr, loc_id, name, namelen, 1, space_id) + +! !$ ref_f = 0 +! !$ hdferr = h5rcreate_region_c(ref_f, loc_id, name, namelen, space_id ) +! !$ ref%ref = ref_f + + END SUBROUTINE h5rcreate_region_f + +!****s* H5R (F03)/h5rcreate_ptr_f +! +! NAME +! h5rcreate_ptr_f +! +! PURPOSE +! Creates a reference. +! +! INPUTS +! loc_id - location identifier +! name - name of the dataset at the specified location +! ref_type - type of reference: +! H5R_OBJECT +! H5T_STD_REF_DSETREG +! OUTPUTS +! ref - reference created by the function call. +! hdferr - error code +! Success: 0 +! Failure: -1 +! OPTIONAL +! space_id - dataspace identifier that describes selected region +! +! AUTHOR +! M. Scot Breitenfeld +! June 20, 2008 +! +! NOTES +! This is a module procedure for the h5rcreate_f +! subroutine where the output is a pointer. +! +! SOURCE + SUBROUTINE h5rcreate_ptr_f(loc_id, name, ref_type, ref, hdferr, space_id) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset at location specified + ! by loc_id identifier + INTEGER, INTENT(IN) :: ref_type ! type of reference + TYPE(C_PTR), INTENT(INOUT) :: ref ! Reference created by the function call + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), INTENT(IN), OPTIONAL :: space_id ! Dataset's dataspace identifier +!***** + INTEGER :: namelen ! Name length + INTEGER(HID_T) :: space_id_c + + namelen = LEN(name) + space_id_c = -1 + IF(PRESENT(space_id)) space_id_c = space_id + hdferr = h5rcreate_ptr_c(ref, loc_id, name, namelen, ref_type, space_id_c) + + END SUBROUTINE h5rcreate_ptr_f +!****s* H5R (F03)/h5rdereference_object_f +! +! NAME +! h5rdereference_object_f +! +! PURPOSE +! Opens the HDF5 object referenced +! +! INPUTS +! dset_id - identifier of the dataset containing +! reference +! ref - reference to open +! OUTPUTS +! obj_id - object_identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! NOTES +! This is a module procedure for the h5rdereference_f subroutine. +! +! SOURCE + SUBROUTINE h5rdereference_object_f(obj_id, ref, ref_obj_id, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: obj_id ! Dataset identifier + TYPE(hobj_ref_t_f), INTENT(IN), TARGET :: ref ! Object reference + INTEGER(HID_T), INTENT(OUT) :: ref_obj_id ! Object identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(ref) + hdferr = h5rdereference_ptr_c(obj_id, 0, f_ptr, ref_obj_id) + + END SUBROUTINE h5rdereference_object_f +!****s* H5R (F03)/h5rdereference_region_f +! +! NAME +! h5rdereference_region_f +! +! PURPOSE +! Opens the dataset region +! +! INPUTS +! dset_id - identifier of the dataset containing +! reference to teh regions +! ref - reference to open +! OUTPUTS +! obj_id - dataspace identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! NOTES +! This is a module procedure for the h5rdereference_f subroutine. +! +! SOURCE + SUBROUTINE h5rdereference_region_f(obj_id, ref, ref_obj_id, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: obj_id ! Dataset identifier + TYPE(hdset_reg_ref_t_f), INTENT(IN), TARGET :: ref ! Object reference + INTEGER(HID_T), INTENT(OUT) :: ref_obj_id ! Dataspace identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(ref) + hdferr = h5rdereference_ptr_c(obj_id, 1, f_ptr, ref_obj_id) + + END SUBROUTINE h5rdereference_region_f + +!****s* H5R (F03)/h5rdereference_ptr_f +! +! NAME +! h5rdereference_ptr_f +! +! PURPOSE +! Opens the HDF5 object referenced. +! +! INPUTS +! obj_id - valid identifier for the file containing the +! referenced object or any object in that file. +! ref_type - the reference type of ref. +! ref - Reference to open. +! OUTPUTS +! ref_obj_id - identifier of referenced object +! hdferr - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! M. Scot Breitenfeld +! June 20, 2008 +! +! NOTES +! This is a module procedure for the h5rdereference_f +! subroutine using pointers. +! +! SOURCE + SUBROUTINE h5rdereference_ptr_f(obj_id, ref_type, ref, ref_obj_id, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: obj_id ! Valid identifier for the file containing the + ! referenced object or any object in that file. + INTEGER, INTENT(IN) :: ref_type ! The reference type of ref. + TYPE(C_PTR), INTENT(IN) :: ref ! Object reference + INTEGER(HID_T), INTENT(OUT) :: ref_obj_id + ! Identifier of referenced object + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + hdferr = h5rdereference_ptr_c(obj_id, ref_type, ref, ref_obj_id) + + END SUBROUTINE h5rdereference_ptr_f +! +!****s* H5R (F03)/h5rget_name_object_f +! +! NAME +! h5rget_name_object_f +! +! PURPOSE +! Retrieves a name of a referenced object. +! +! INPUTS +! loc_id - Identifier for the dataset containing the reference or for the group that dataset is in. +! ref - An object or dataset region reference. +! +! OUTPUTS +! name - A name associated with the referenced object or dataset region. +! +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! OPTIONAL PARAMETERS +! size - The size of the name buffer. +! +! AUTHOR +! M. Scot Breitenfeld +! March 28, 2008 +! +! SOURCES + SUBROUTINE h5rget_name_object_f(loc_id, ref, name, hdferr, size) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for the dataset containing the reference + ! or for the group that dataset is in. + TYPE(hobj_ref_t_f), INTENT(IN), TARGET :: ref ! Object reference + INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size ! The size of the name buffer, + ! returning 0 (zero) if no name is associated + ! with the identifier + CHARACTER(LEN=*), INTENT(OUT) :: name ! A name associated with the referenced object or dataset region. + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference + + INTEGER(SIZE_T) :: size_default + INTEGER(SIZE_T) :: name_len + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(ref) + + name_len=LEN(name) + + hdferr = h5rget_name_ptr_c(loc_id, 0, f_ptr, name, name_len, size_default) + + + IF(PRESENT(size)) size = size_default + + END SUBROUTINE h5rget_name_object_f +!****s* H5R (F03)/h5rget_name_region_f +! +! NAME +! h5rget_name_region_f +! +! PURPOSE +! Retrieves a name of a dataset region. +! +! INPUTS +! loc_id - Identifier for the dataset containing the reference or +! for the group that dataset is in. +! ref - An object or dataset region reference. +! +! OUTPUTS +! name - A name associated with the referenced object or dataset region. +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! OPTIONAL PARAMETERS +! size - The size of the name buffer. +! +! AUTHOR +! M. Scot Breitenfeld +! March 28, 2008 +! +! SOURCE + SUBROUTINE h5rget_name_region_f(loc_id, ref, name, hdferr, size) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for the dataset containing the reference + ! or for the group that dataset is in. + TYPE(hdset_reg_ref_t_f), INTENT(IN), TARGET :: ref ! Object reference + INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size ! The size of the name buffer, + ! returning 0 (zero) if no name is associated with the identifier + CHARACTER(LEN=*), INTENT(OUT) :: name ! A name associated with the referenced object or dataset region. + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference + INTEGER(SIZE_T) :: size_default + INTEGER(SIZE_T) :: name_len + TYPE(C_PTR) :: f_ptr + + f_ptr = C_LOC(ref) + + name_len=LEN(name) + + hdferr = h5rget_name_ptr_c(loc_id, 1, f_ptr, name, name_len, size_default) + + IF(PRESENT(size)) size = size_default + + END SUBROUTINE h5rget_name_region_f + + !****s* H5R (F03)/h5rget_name_ptr_f + ! + ! NAME + ! h5rget_name_ptr_f + ! + ! PURPOSE + ! Retrieves a name of a referenced object. + ! + ! INPUTS + ! loc_id - Identifier for the dataset containing the reference or + ! for the group that dataset is in. + ! ref_type - Type of reference. + ! ref - An object or dataset region reference. + ! + ! OUTPUTS + ! name - A name associated with the referenced object or dataset ptr. + ! + ! hdferr - error code + ! Success: 0 + ! Failure: -1 + ! + ! OPTIONAL PARAMETERS + ! size - The size of the name buffer. + ! + ! AUTHOR + ! M. Scot Breitenfeld + ! March 28, 2008 + ! + ! SOURCE + SUBROUTINE h5rget_name_ptr_f(loc_id, ref_type, ref, name, hdferr, size) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for the dataset containing the reference + ! or for the group that dataset is in. + INTEGER, INTENT(IN) :: ref_type ! Type of reference. + TYPE(C_PTR), INTENT(IN) :: ref ! An object or dataset region reference. + CHARACTER(LEN=*), INTENT(OUT) :: name ! A name associated with the referenced object or dataset ptr. + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size ! The size of the name buffer, + ! returning 0 (zero) if no name is associated + ! with the identifier +!***** + INTEGER(SIZE_T) :: size_default + INTEGER(SIZE_T) :: name_len + + name_len=LEN(name) + + hdferr = h5rget_name_ptr_c(loc_id, ref_type, ref, name, name_len, size_default) + + IF(PRESENT(size)) size = size_default + + END SUBROUTINE h5rget_name_ptr_f + + !****s* H5R (F03)/h5rget_obj_type_f + ! + ! NAME + ! h5rget_obj_type_f + ! + ! PURPOSE + ! Retrieves the type of object that an object reference points to. + ! + ! INPUTS + ! loc_id - Identifier for the dataset containing the reference or + ! for the group that dataset is in. + ! ref_type - Type of reference to query. + ! ref - Reference to query. + ! + ! OUTPUTS + ! obj_type - Type of referenced object. + ! H5G_UNKNOWN_F (-1) + ! H5G_LINK_F 0 + ! H5G_GROUP_F 1 + ! H5G_DATASET_F 2 + ! H5G_TYPE_F 3 + ! + ! hdferr - error code + ! Success: 0 + ! Failure: -1 + ! + ! AUTHOR + ! M. Scot Breitenfeld + ! Decemeber 17, 2008 + ! + ! SOURCE + SUBROUTINE h5rget_obj_type_f(loc_id, ref_type, ref, obj_type, hdferr) + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id + INTEGER, INTENT(IN) :: ref_type + TYPE(C_PTR), INTENT(IN) :: ref + INTEGER, INTENT(OUT) :: obj_type + INTEGER, INTENT(OUT) :: hdferr + !***** + + INTERFACE + INTEGER FUNCTION h5rget_obj_type_c(loc_id, ref_type, ref, obj_type) + USE, INTRINSIC :: ISO_C_BINDING + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_OBJ_TYPE_C':: h5rget_obj_type_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: loc_id + INTEGER, INTENT(IN) :: ref_type + TYPE(C_PTR), VALUE :: ref + INTEGER :: obj_type + END FUNCTION h5rget_obj_type_c + END INTERFACE + + hdferr = h5rget_obj_type_c(loc_id, ref_type, ref, obj_type) + + END SUBROUTINE h5rget_obj_type_f + +END MODULE H5R_PROVISIONAL diff --git a/fortran/src/H5Rff_F90.f90 b/fortran/src/H5Rff_F90.f90 new file mode 100644 index 0000000..3f02825 --- /dev/null +++ b/fortran/src/H5Rff_F90.f90 @@ -0,0 +1,449 @@ +!****h* ROBODoc/H5R (F90) +! +! NAME +! MODULE H5R_PROVISIONAL +! +! FILE +! fortran/src/H5Rff_F90.f90 +! +! PURPOSE +! This file contains Fortran 90 interfaces for H5R functions. It contains +! the same functions as H5Rff_F03.f90 but excludes the Fortran 2003 functions +! and the interface listings. This file will be compiled instead of H5Rff_F03.f90 +! if Fortran 2003 functions are not enabled. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! *** IMPORTANT *** +! If you add a new H5R function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +!***** + +MODULE H5R_PROVISIONAL + USE H5GLOBAL + +! If you change the value of these parameters, do not forget to change corresponding +! values in the H5f90.h file. +! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 +! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 +! +! TYPE hobj_ref_t_f +! INTEGER ref(REF_OBJ_BUF_LEN) +! END TYPE +! +! TYPE hdset_reg_ref_t_f +! INTEGER ref(REF_REG_BUF_LEN) +! END TYPE +! + INTERFACE h5rcreate_f + + MODULE PROCEDURE h5rcreate_object_f + MODULE PROCEDURE h5rcreate_region_f + + END INTERFACE + + INTERFACE h5rdereference_f + + MODULE PROCEDURE h5rdereference_object_f + MODULE PROCEDURE h5rdereference_region_f + + END INTERFACE + + INTERFACE h5rget_name_f + + MODULE PROCEDURE h5rget_name_object_f + MODULE PROCEDURE h5rget_name_region_f + + END INTERFACE + +CONTAINS + +!****s* H5R (F90)/h5rcreate_object_f +! +! NAME +! h5rcreate_object_f +! +! PURPOSE +! Creates reference to the object +! +! INPUTS +! loc_id - location identifier +! name - name of the object at the specified location +! OUTPUTS +! ref - reference to the specified object +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! NOTES +! This is a module procedure for the h5rcreate_f subroutine. +! +! SOURCE + SUBROUTINE h5rcreate_object_f(loc_id, name, ref, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the object at location specified + ! by loc_id identifier + TYPE(hobj_ref_t_f), INTENT(OUT) :: ref ! Object reference + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: namelen ! Name length + INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference + + INTERFACE + INTEGER FUNCTION h5rcreate_object_c(ref_f, loc_id, name, namelen) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RCREATE_OBJECT_C':: h5rcreate_object_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HADDR_T) :: ref_f + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + END FUNCTION h5rcreate_object_c + END INTERFACE + + namelen = LEN(name) + ref_f = 0 + hdferr = h5rcreate_object_c(ref_f, loc_id, name, namelen ) + ref%ref = ref_f + + END SUBROUTINE h5rcreate_object_f + +!****s* H5R (F90)/h5rcreate_region_f +! +! NAME +! h5rcreate_region_f +! +! PURPOSE +! Creates reference to the dataset region +! +! INPUTS +! loc_id - location identifier +! name - name of the dataset at the specified location +! space_id - dataspace identifier that describes selected region +! OUTPUTS +! ref - reference to the dataset region +! hdferr: - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! NOTES +! This is a module procedure for the h5rcreate_f subroutine. +! +! SOURCE + SUBROUTINE h5rcreate_region_f(loc_id, name, space_id, ref, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset at location specified + ! by loc_id identifier + INTEGER(HID_T), INTENT(IN) :: space_id ! Dataset's dataspace identifier + TYPE(hdset_reg_ref_t_f), INTENT(OUT) :: ref ! Dataset region reference + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: namelen ! Name length + INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference + + INTERFACE + INTEGER FUNCTION h5rcreate_region_c(ref_f, loc_id, name, namelen, space_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RCREATE_REGION_C':: h5rcreate_region_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + ! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 + INTEGER :: ref_f(REF_REG_BUF_LEN) + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(HID_T), INTENT(IN) :: space_id + END FUNCTION h5rcreate_region_c + END INTERFACE + + namelen = LEN(name) + ref_f = 0 + hdferr = h5rcreate_region_c(ref_f, loc_id, name, namelen, space_id ) + ref%ref = ref_f + + END SUBROUTINE h5rcreate_region_f +!****s* H5R (F90)/h5rdereference_object_f +! +! NAME +! h5rdereference_object_f +! +! PURPOSE +! Opens the HDF5 object referenced +! +! INPUTS +! dset_id - identifier of the dataset containing reference +! ref - reference to open +! OUTPUTS +! obj_id - object_identifier +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! NOTES +! This is a module procedure for the h5rdereference_f subroutine. +! +! SOURCE + SUBROUTINE h5rdereference_object_f(dset_id, ref, obj_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + TYPE(hobj_ref_t_f), INTENT(IN) :: ref ! Object reference + INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference + + INTERFACE + INTEGER FUNCTION h5rdereference_object_c(dset_id, ref_f, obj_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RDEREFERENCE_OBJECT_C':: h5rdereference_object_c + !DEC$ENDIF + ! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HADDR_T) :: ref_f + INTEGER(HID_T), INTENT(OUT) :: obj_id + END FUNCTION h5rdereference_object_c + END INTERFACE + + ref_f = ref%ref + hdferr = h5rdereference_object_c(dset_id, ref_f, obj_id ) + + END SUBROUTINE h5rdereference_object_f +!****s* H5R (F90)/h5rdereference_region_f +! +! NAME +! h5rdereference_region_f +! +! PURPOSE +! Opens the dataset region +! +! INPUTS +! dset_id - identifier of the dataset containing +! reference to teh regions +! ref - reference to open +! OUTPUTS +! obj_id - dataspace identifier +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! NOTES +! This is a module procedure for the h5rdereference_f subroutine. +! +! SOURCE + SUBROUTINE h5rdereference_region_f(dset_id, ref, obj_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Object reference + INTEGER(HID_T), INTENT(OUT) :: obj_id ! Dataspace identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference + + INTERFACE + INTEGER FUNCTION h5rdereference_region_c(dset_id, ref_f, obj_id) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RDEREFERENCE_REGION_C':: h5rdereference_region_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id +! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 + INTEGER :: ref_f(REF_REG_BUF_LEN) + INTEGER(HID_T), INTENT(OUT) :: obj_id + END FUNCTION h5rdereference_region_c + END INTERFACE + + ref_f = ref%ref + hdferr = h5rdereference_region_c(dset_id, ref_f, obj_id ) + + END SUBROUTINE h5rdereference_region_f +!****s* H5R (F90)/h5rget_name_object_f +! +! NAME +! h5rget_name_object_f +! +! PURPOSE +! Retrieves a name of a referenced object. +! +! INPUTS +! loc_id - Identifier for the dataset containing the reference or for the group that dataset is in. +! ref - An object or dataset region reference. +! +! OUTPUTS +! name - A name associated with the referenced object or dataset region. +! +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! OPTIONAL PARAMETERS +! size - The size of the name buffer. +! +! AUTHOR +! M. Scot Breitenfeld +! March 28, 2008 +! +! SOURCES + SUBROUTINE h5rget_name_object_f(loc_id, ref, name, hdferr, size) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for the dataset containing the reference + ! or for the group that dataset is in. + TYPE(hobj_ref_t_f), INTENT(IN) :: ref ! Object reference + INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size ! The size of the name buffer, + ! returning 0 (zero) if no name is associated with the identifier + CHARACTER(LEN=*), INTENT(OUT) :: name ! A name associated with the referenced object or dataset region. + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference + + INTEGER(SIZE_T) :: size_default + INTEGER(SIZE_T) :: name_len + + INTERFACE + INTEGER FUNCTION h5rget_name_object_c(loc_id, ref_f, name, name_len, size_default) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_NAME_OBJECT_C':: h5rget_name_object_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + INTEGER(SIZE_T) :: size_default + CHARACTER(LEN=*), INTENT(OUT) :: name + INTEGER(HADDR_T) :: ref_f + + INTEGER(SIZE_T) :: name_len + END FUNCTION h5rget_name_object_c + END INTERFACE + + name_len=LEN(name) + + ref_f = ref%ref + hdferr = h5rget_name_object_c(loc_id, ref_f, name, name_len, size_default) + + IF(PRESENT(size)) size = size_default + + END SUBROUTINE h5rget_name_object_f + +!****s* H5R (F90)/h5rget_name_region_f +! +! NAME +! h5rget_name_region_f +! +! PURPOSE +! Retrieves a name of a dataset region. +! +! INPUTS +! loc_id - Identifier for the dataset containing the reference or +! for the group that dataset is in. +! ref - An object or dataset region reference. +! +! OUTPUTS +! name - A name associated with the referenced object or dataset region. +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! OPTIONAL PARAMETERS +! size - The size of the name buffer. +! +! AUTHOR +! M. Scot Breitenfeld +! March 28, 2008 +! +! SOURCE + SUBROUTINE h5rget_name_region_f(loc_id, ref, name, hdferr, size) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for the dataset containing the reference + ! or for the group that dataset is in. + TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Object reference + INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size ! The size of the name buffer, + ! returning 0 (zero) if no name is associated + ! with the identifier + CHARACTER(LEN=*), INTENT(OUT) :: name ! A name associated with the referenced object or dataset region. + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference + INTEGER(SIZE_T) :: size_default + INTEGER(SIZE_T) :: name_len + + INTERFACE + INTEGER FUNCTION h5rget_name_region_c(loc_id, ref_f, name, name_len, size_default) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_NAME_REGION_C':: h5rget_name_region_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + INTEGER(SIZE_T) :: size_default + CHARACTER(LEN=*), INTENT(OUT) :: name + INTEGER :: ref_f(REF_REG_BUF_LEN) + + INTEGER(SIZE_T) :: name_len + END FUNCTION h5rget_name_region_c + END INTERFACE + + name_len=LEN(name) + + ref_f = ref%ref + hdferr = h5rget_name_region_c(loc_id, ref_f, name, name_len, size_default) + + IF(PRESENT(size)) size = size_default + + END SUBROUTINE h5rget_name_region_f + +END MODULE H5R_PROVISIONAL diff --git a/fortran/src/H5Sf.c b/fortran/src/H5Sf.c index e161618..2cfb1eb 100644 --- a/fortran/src/H5Sf.c +++ b/fortran/src/H5Sf.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5Sf/H5Sf + * PURPOSE + * This file contains C stubs for H5S Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,26 +16,38 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" #include "H5Eprivate.h" -/*---------------------------------------------------------------------------- - * Name: h5screate_simple_c - * Purpose: Call H5Screate_simple to create a dataspace - * Inputs: rank - number of dimensions of dataspace +/****if* H5Sf/h5screate_simple_c + * NAME + * h5screate_simple_c + * PURPOSE + * Call H5Screate_simple to create a dataspace + * INPUTS + * rank - number of dimensions of dataspace * dims - array of the size of each dimension maxdims - an array of the maximum size of each dimension - * Outputs: space_id - identifier of the created dataspace - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * space_id - identifier of the created dataspace + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 4, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5screate_simple_c ( int_f *rank, hsize_t_f *dims, hsize_t_f *maxdims, hid_t_f *space_id ) +/******/ { hsize_t c_dims[H5S_MAX_RANK]; hsize_t c_maxdims[H5S_MAX_RANK]; @@ -56,18 +73,26 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sclose_c - * Purpose: Call H5Sclose to close the dataspace - * Inputs: space_id - identifier of the dataspace to be closed - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Sf/h5sclose_c + * NAME + * h5sclose_c + * PURPOSE + * Call H5Sclose to close the dataspace + * INPUTS + * space_id - identifier of the dataspace to be closed + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 4, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sclose_c ( hid_t_f *space_id ) +/******/ { int ret_value = 0; hid_t c_space_id; @@ -77,20 +102,28 @@ nh5sclose_c ( hid_t_f *space_id ) return ret_value; } - -/*---------------------------------------------------------------------------- - * Name: h5screate_c - * Purpose: Call H5Screate to create a dataspace - * Inputs: classtype - type of the dataspace class - * Outputs: space_id - identifier of the created dataspace - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Sf/h5screate_c + * NAME + * h5screate_c + * PURPOSE + * Call H5Screate to create a dataspace + * INPUTS + * classtype - type of the dataspace class + * OUTPUTS + * space_id - identifier of the created dataspace + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, August 10, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5screate_c ( int_f *classtype, hid_t_f *space_id ) +/******/ { H5S_class_t c_classtype; int ret_value = 0; @@ -103,19 +136,28 @@ nh5screate_c ( int_f *classtype, hid_t_f *space_id ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5scopy_c - * Purpose: Call H5Scopy to copy dataspace - * Inputs: space_id - identifier of the dataspace to be copied - * Outputs: new_space_id - identifier of the new datspace - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Sf/h5scopy_c + * NAME + * h5scopy_c + * PURPOSE + * Call H5Scopy to copy dataspace + * INPUTS + * space_id - identifier of the dataspace to be copied + * OUTPUTS + * new_space_id - identifier of the new datspace + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, August 10, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5scopy_c( hid_t_f *space_id , hid_t_f *new_space_id) +/******/ { int ret_value = 0; hid_t c_new_space_id; @@ -129,22 +171,31 @@ nh5scopy_c( hid_t_f *space_id , hid_t_f *new_space_id) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sget_select_hyper_nblocks_c - * Purpose: Call H5SH5Sget_select_hyper_nblocks to +/****if* H5Sf/h5sget_select_hyper_nblocks_c + * NAME + * h5sget_select_hyper_nblocks_c + * PURPOSE + * Call H5SH5Sget_select_hyper_nblocks to * get the the number of hyperslab blocks in * the current dataspace selection if successful - * Inputs: space_id - identifier of the dataspace - * Outputs: num_blocks - number of hyperslab blocks in + * INPUTS + * space_id - identifier of the dataspace + * OUTPUTS + * num_blocks - number of hyperslab blocks in * the current dataspace selection - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, November 12, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sget_select_hyper_nblocks_c( hid_t_f *space_id , hssize_t_f * num_blocks) +/******/ { int ret_value = 0; hid_t c_space_id; @@ -158,22 +209,31 @@ nh5sget_select_hyper_nblocks_c( hid_t_f *space_id , hssize_t_f * num_blocks) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sget_select_elem_npoints_c - * Purpose: Call H5Sget_select_elem_npoints to +/****if* H5Sf/h5sget_select_elem_npoints_c + * NAME + * h5sget_select_elem_npoints_c + * PURPOSE + * Call H5Sget_select_elem_npoints to * get the the number of element points in * the current dataspace selection if successful - * Inputs: space_id - identifier of the dataspace - * Outputs: num_points - number of element points in + * INPUTS + * space_id - identifier of the dataspace + * OUTPUTS + * num_points - number of element points in * the current dataspace selection - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Monday, November 15, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sget_select_elem_npoints_c( hid_t_f *space_id , hssize_t_f * num_points) +/******/ { int ret_value = 0; hid_t c_space_id; @@ -187,31 +247,40 @@ nh5sget_select_elem_npoints_c( hid_t_f *space_id , hssize_t_f * num_points) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sget_select_hyper_blocklist_c - * Purpose: Call H5Sget_select_hyper_blocklist to +/****if* H5Sf/h5sget_select_hyper_blocklist_c + * NAME + * h5sget_select_hyper_blocklist_c + * PURPOSE + * Call H5Sget_select_hyper_blocklist to * get a list of the hyperslab blocks currently selected * Starting with the startblock-th block in the * list of blocks, num_blocks blocks are put into the user's * buffer. If the user's buffer fills up before numblocks * blocks are inserted, the buffer * will contain only as many blocks as fit. - * Inputs: space_id - identifier of the dataspace + * INPUTS + * space_id - identifier of the dataspace * startblock - Hyperslab block to start with * num_blocks - number of hyperslab blocks in * the current dataspace selection - * Outputs: buf - List of hyperslab blocks selected - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * OUTPUTS + * buf - List of hyperslab blocks selected + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Monday, November 15, 1999 - * Modifications: + * HISTORY + * * Transpose dimension arrays because of C-FORTRAN storage order - * M.S. Breitenfeld - *---------------------------------------------------------------------------*/ + * M. Scot Breitenfeld + * SOURCE +*/ int_f nh5sget_select_hyper_blocklist_c( hid_t_f *space_id ,hsize_t_f * startblock, hsize_t_f * num_blocks, hsize_t_f * buf) +/******/ { int ret_value = -1; hid_t c_space_id; @@ -256,25 +325,34 @@ nh5sget_select_hyper_blocklist_c( hid_t_f *space_id ,hsize_t_f * startblock, return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sget_select_bounds_c - * Purpose: Call H5Sget_select_bounds to retrieve the coordinates +/****if* H5Sf/h5sget_select_bounds_c + * NAME + * h5sget_select_bounds_c + * PURPOSE + * Call H5Sget_select_bounds to retrieve the coordinates * of the bounding box containing the current selection * and places them into user-supplied buffers - * Inputs: space_id - identifier of the dataspace - * Outputs: start - Starting coordinates of the bounding box + * INPUTS + * space_id - identifier of the dataspace + * OUTPUTS + * start - Starting coordinates of the bounding box * end - Ending coordinates of the bounding box, * i.e., the coordinates of the diagonally opposite corne - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Wednesday, November 17, 1999 - * Modifications: swapped array bounds to account for C and Fortran reversed + * HISTORY + * swapped array bounds to account for C and Fortran reversed * matrix notation. - * M.S. Breitenfeld - *---------------------------------------------------------------------------*/ + * M. Scot Breitenfeld + * SOURCE +*/ int_f nh5sget_select_bounds_c( hid_t_f *space_id , hsize_t_f * start, hsize_t_f * end) +/******/ { hid_t c_space_id; hsize_t c_start[H5S_MAX_RANK]; @@ -299,9 +377,11 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sget_select_elem_pointlist_c - * Purpose: Call H5Sget_select_elem_pointlist +/****if* H5Sf/h5sget_select_elem_pointlist_c + * NAME + * h5sget_select_elem_pointlist_c + * PURPOSE + * Call H5Sget_select_elem_pointlist * get a list of element points in the * current dataspace selectin. * Starting with the startpoint-th point in the @@ -309,19 +389,26 @@ done: * buffer. If the user's buffer fills up before numpoints * points are inserted, the buffer * will contain only as many points as fit. - * Inputs: space_id - identifier of the dataspace + * INPUTS + * space_id - identifier of the dataspace * startpoint - Element point to start with * numpoints - Number of element points to get - * Outputs: buf - List of element points selected - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * OUTPUTS + * buf - List of element points selected + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Wednesday, November 17, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sget_select_elem_pointlist_c( hid_t_f *space_id ,hsize_t_f * startpoint, hsize_t_f * numpoints, hsize_t_f * buf) +/******/ { int ret_value = -1; hid_t c_space_id; @@ -368,18 +455,26 @@ nh5sget_select_elem_pointlist_c( hid_t_f *space_id ,hsize_t_f * startpoint, -/*---------------------------------------------------------------------------- - * Name: h5sselect_all_c - * Purpose: Call H5Sselect_all to select entire dataspace - * Inputs: space_id - identifier of the dataspace - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Sf/h5sselect_all_c + * NAME + * h5sselect_all_c + * PURPOSE + * Call H5Sselect_all to select entire dataspace + * INPUTS + * space_id - identifier of the dataspace + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, August 10, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sselect_all_c ( hid_t_f *space_id ) +/******/ { int ret_value = 0; hid_t c_space_id; @@ -389,18 +484,26 @@ nh5sselect_all_c ( hid_t_f *space_id ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sselect_none_c - * Purpose: Call H5Sselect_none to reset the selection region - * Inputs: space_id - identifier of the dataspace - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Sf/h5sselect_none_c + * NAME + * h5sselect_none_c + * PURPOSE + * Call H5Sselect_none to reset the selection region + * INPUTS + * space_id - identifier of the dataspace + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, August 10, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sselect_none_c ( hid_t_f *space_id ) +/******/ { int ret_value = 0; hid_t c_space_id; @@ -410,21 +513,30 @@ nh5sselect_none_c ( hid_t_f *space_id ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sselect_valid_c - * Purpose: Call H5Sselect_valid to verify that selection +/****if* H5Sf/h5sselect_valid_c + * NAME + * h5sselect_valid_c + * PURPOSE + * Call H5Sselect_valid to verify that selection * is within dataspace extent. - * Inputs: space_id - identifier of the dataspace - * Outputs: flag - 0 if not valid selection, 1 if is valid selection, + * INPUTS + * space_id - identifier of the dataspace + * OUTPUTS + * flag - 0 if not valid selection, 1 if is valid selection, * and negative on failure. - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, August 10, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sselect_valid_c ( hid_t_f *space_id , int_f *flag ) +/******/ { int ret_value = 0; hid_t c_space_id; @@ -437,20 +549,29 @@ nh5sselect_valid_c ( hid_t_f *space_id , int_f *flag ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sget_simple_extent_npoints_c - * Purpose: Call H5Sget_simple_extent_npoints to determine the number +/****if* H5Sf/h5sget_simple_extent_npoints_c + * NAME + * h5sget_simple_extent_npoints_c + * PURPOSE + * Call H5Sget_simple_extent_npoints to determine the number * of elements in a dataspace - * Inputs: space_id - identifier of the dataspace - * Outputs: npoints - number of points in a dataspace - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * INPUTS + * space_id - identifier of the dataspace + * OUTPUTS + * npoints - number of points in a dataspace + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 11, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sget_simple_extent_npoints_c ( hid_t_f *space_id , hsize_t_f *npoints ) +/******/ { int ret_value = 0; hid_t c_space_id; @@ -463,20 +584,29 @@ nh5sget_simple_extent_npoints_c ( hid_t_f *space_id , hsize_t_f *npoints ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sget_select_npoints_c - * Purpose: Call H5Sget_select_npoints to determine the number +/****if* H5Sf/h5sget_select_npoints_c + * NAME + * h5sget_select_npoints_c + * PURPOSE + * Call H5Sget_select_npoints to determine the number * of elements in a dataspace selection - * Inputs: space_id - identifier of the dataspace - * Outputs: npoints - number of points in a dataspace selection - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * INPUTS + * space_id - identifier of the dataspace + * OUTPUTS + * npoints - number of points in a dataspace selection + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 11, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sget_select_npoints_c ( hid_t_f *space_id , hssize_t_f *npoints ) +/******/ { int ret_value = 0; hssize_t c_npoints; @@ -489,20 +619,29 @@ nh5sget_select_npoints_c ( hid_t_f *space_id , hssize_t_f *npoints ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sget_simple_extent_ndims_c - * Purpose: Call H5Sget_simple_extent_ndims to determine the number +/****if* H5Sf/h5sget_simple_extent_ndims_c + * NAME + * h5sget_simple_extent_ndims_c + * PURPOSE + * Call H5Sget_simple_extent_ndims to determine the number * dimensions - * Inputs: space_id - identifier of the dataspace - * Outputs: rank - number of dataspace dimensions - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * INPUTS + * space_id - identifier of the dataspace + * OUTPUTS + * rank - number of dataspace dimensions + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 11, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sget_simple_extent_ndims_c ( hid_t_f *space_id , int_f *ndims ) +/******/ { int ret_value = 0; hid_t c_space_id; @@ -515,21 +654,30 @@ nh5sget_simple_extent_ndims_c ( hid_t_f *space_id , int_f *ndims ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sget_simple_extent_type_c - * Purpose: Call H5Sget_simple_extent_type to determine the class type +/****if* H5Sf/h5sget_simple_extent_type_c + * NAME + * h5sget_simple_extent_type_c + * PURPOSE + * Call H5Sget_simple_extent_type to determine the class type * of a dataspace - * Inputs: space_id - identifier of the dataspace - * Outputs: classtype - class type; possible values are: + * INPUTS + * space_id - identifier of the dataspace + * OUTPUTS + * classtype - class type; possible values are: * H5S_SCALAR_F (0), H5S_SIMPLE_F (1), H5S_NULL_F (2) - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 11, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sget_simple_extent_type_c ( hid_t_f *space_id , int_f *classtype) +/******/ { int ret_value = 0; hid_t c_space_id; @@ -547,20 +695,28 @@ nh5sget_simple_extent_type_c ( hid_t_f *space_id , int_f *classtype) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5soffset_simple_c - * Purpose: Call H5Soffset_simple to set the offset of a simple +/****if* H5Sf/h5soffset_simple_c + * NAME + * h5soffset_simple_c + * PURPOSE + * Call H5Soffset_simple to set the offset of a simple * dataspace - * Inputs: space_id - identifier of the dataspace + * INPUTS + * space_id - identifier of the dataspace * offset - offset array - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 11, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5soffset_simple_c ( hid_t_f *space_id , hssize_t_f *offset) +/******/ { hid_t c_space_id; int rank; @@ -586,22 +742,30 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sset_extent_simple_c - * Purpose: Call H5Sset_extent_simple to set or reset size of +/****if* H5Sf/h5sset_extent_simple_c + * NAME + * h5sset_extent_simple_c + * PURPOSE + * Call H5Sset_extent_simple to set or reset size of * existing dataspace - * Inputs: space_id - identifier of the dataspace + * INPUTS + * space_id - identifier of the dataspace * rank - dataspace rank * current_size - array with the new dimension sizes * maximum_size - aray with maximum sizes of dimensions - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 11, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sset_extent_simple_c ( hid_t_f *space_id , int_f *rank, hsize_t_f *current_size, hsize_t_f *maximum_size) +/******/ { hsize_t c_current_size[H5S_MAX_RANK]; hsize_t c_maximum_size[H5S_MAX_RANK]; @@ -623,21 +787,31 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sget_simple_extent_dims_c - * Purpose: Call H5Sget_simple_extent_dims to retrieve sizes of an + +/****if* H5Sf/h5sget_simple_extent_dims_c + * NAME + * h5sget_simple_extent_dims_c + * PURPOSE + * Call H5Sget_simple_extent_dims to retrieve sizes of an * existing dataspace - * Inputs: space_id - identifier of the dataspace - * Outputs: dims - array with the dimension sizes + * INPUTS + * space_id - identifier of the dataspace + * OUTPUTS + * dims - array with the dimension sizes * maxdims - aray with maximum sizes of dimensions - * Returns: number of dataspace dimensions (rank) on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * number of dataspace dimensions (rank) on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 11, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sget_simple_extent_dims_c ( hid_t_f *space_id , hsize_t_f *dims, hsize_t_f *maxdims) +/******/ { hid_t c_space_id; hsize_t c_dims[H5S_MAX_RANK]; @@ -668,21 +842,30 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sis_simple_c - * Purpose: Call H5Sis_simple to detrmine if the dataspace +/****if* H5Sf/h5sis_simple_c + * NAME + * h5sis_simple_c + * PURPOSE + * Call H5Sis_simple to detrmine if the dataspace * is simple. - * Inputs: space_id - identifier of the dataspace - * Outputs: flag - 0 if not simple, 1 if is simple, + * INPUTS + * space_id - identifier of the dataspace + * OUTPUTS + * flag - 0 if not simple, 1 if is simple, * and negative on failure. - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 11, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sis_simple_c ( hid_t_f *space_id , int_f *flag ) +/******/ { int ret_value = 0; hid_t c_space_id; @@ -696,19 +879,27 @@ nh5sis_simple_c ( hid_t_f *space_id , int_f *flag ) } -/*---------------------------------------------------------------------------- - * Name: h5sextent_copy_c - * Purpose: Call H5Sextent_copy to copy an extent of dataspace - * Inputs: dest_space_id - identifier of the destination dataspace +/****if* H5Sf/h5sextent_copy_c + * NAME + * h5sextent_copy_c + * PURPOSE + * Call H5Sextent_copy to copy an extent of dataspace + * INPUTS + * dest_space_id - identifier of the destination dataspace * source_space_id - identifier of the source dataspace - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 11, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sextent_copy_c ( hid_t_f *dest_space_id , hid_t_f *source_space_id) +/******/ { int ret_value = 0; hid_t c_dest_space_id, c_source_space_id; @@ -721,18 +912,26 @@ nh5sextent_copy_c ( hid_t_f *dest_space_id , hid_t_f *source_space_id) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sset_extent_none_c - * Purpose: Call H5Sset_extent_none to remove extent from a dataspace - * Inputs: space_id - dataspace identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Sf/h5sset_extent_none_c + * NAME + * h5sset_extent_none_c + * PURPOSE + * Call H5Sset_extent_none to remove extent from a dataspace + * INPUTS + * space_id - dataspace identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 11, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sset_extent_none_c ( hid_t_f *space_id ) +/******/ { int ret_value = 0; hid_t c_space_id; @@ -744,10 +943,13 @@ nh5sset_extent_none_c ( hid_t_f *space_id ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sselect_hyperslab_c - * Purpose: Call H5Sselect_hyperslab to select a hyperslab - * Inputs: space_id - identifier of the dataspace +/****if* H5Sf/h5sselect_hyperslab_c + * NAME + * h5sselect_hyperslab_c + * PURPOSE + * Call H5Sselect_hyperslab to select a hyperslab + * INPUTS + * space_id - identifier of the dataspace * operator - defines how the new selection is combined * with the previous one; current values are * H5S_SELECT_SET_F (0) and H5S_SELECT_OR_F (1) @@ -755,14 +957,19 @@ nh5sset_extent_none_c ( hid_t_f *space_id ) * count - number of blocks included in the hyperslab * stride - hyperslab stride (interval between blocks) * block - size of block in the hyperslab - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 11, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sselect_hyperslab_c ( hid_t_f *space_id , int_f *op, hsize_t_f *start, hsize_t_f *count, hsize_t_f *stride, hsize_t_f *block) +/******/ { hsize_t c_start[H5S_MAX_RANK]; hsize_t c_count[H5S_MAX_RANK]; @@ -795,25 +1002,35 @@ done: return ret_value; } + #ifdef NEW_HYPERSLAB_API -/*---------------------------------------------------------------------------- - * Name: h5scombine_hyperslab_c - * Purpose: Call H5Scombine_hyperslab - * Inputs: space_id - identifier of the dataspace +/****if* H5Sf/h5scombine_hyperslab_c + * NAME + * h5scombine_hyperslab_c + * PURPOSE + * Call H5Scombine_hyperslab + * INPUTS + * space_id - identifier of the dataspace * operator - defines how the new selection is combined * start - offset of start of hyperslab * count - number of blocks included in the hyperslab * stride - hyperslab stride (interval between blocks) * block - size of block in the hyperslab - * Outputs: hyper_id - identifier for the new dataspace - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * hyper_id - identifier for the new dataspace + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, October 7, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5scombine_hyperslab_c ( hid_t_f *space_id , int_f *op, hsize_t_f *start, hsize_t_f *count, hsize_t_f *stride, hsize_t_f *block, hid_t_f *hyper_id) +/******/ { int ret_value = -1; hid_t c_space_id; @@ -869,21 +1086,30 @@ DONE: if(c_block != NULL) HDfree(c_block); return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5scombine_select_c - * Purpose: Call H5Scombine_ select - * Inputs: space1_id - identifier of the first dataspace +/****if* H5Sf/h5scombine_select_c + * NAME + * h5scombine_select_c + * PURPOSE + * Call H5Scombine_ select + * INPUTS + * space1_id - identifier of the first dataspace * operator - defines how the new selection is combined * space2_id - identifier of the second dataspace - * Outputs: ds_id - identifier for the new dataspace - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * ds_id - identifier for the new dataspace + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, October 7, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5scombine_select_c ( hid_t_f *space1_id , int_f *op, hid_t_f *space2_id, hid_t_f *ds_id) +/******/ { int ret_value = -1; hid_t c_space1_id; @@ -901,20 +1127,28 @@ nh5scombine_select_c ( hid_t_f *space1_id , int_f *op, hid_t_f *space2_id, hid_t ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sselect_select_c - * Purpose: Call H5Sselect_ select - * Inputs: space1_id - identifier of the first dataspace to modify +/****if* H5Sf/h5sselect_select_c + * NAME + * h5sselect_select_c + * PURPOSE + * Call H5Sselect_ select + * INPUTS + * space1_id - identifier of the first dataspace to modify * operator - defines how the new selection is combined * space2_id - identifier of the second dataspace - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, October 7, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sselect_select_c ( hid_t_f *space1_id , int_f *op, hid_t_f *space2_id) +/******/ { int ret_value = -1; hid_t c_space1_id; @@ -930,19 +1164,27 @@ nh5sselect_select_c ( hid_t_f *space1_id , int_f *op, hid_t_f *space2_id) return ret_value; } #endif /*NEW_HYPERSLAB_API*/ -/*---------------------------------------------------------------------------- - * Name: h5sget_select_type_c - * Purpose: Call H5Sget_select_type - * Inputs: space_id - identifier of the dataspace - * Outputs: type - type of selection - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Sf/h5sget_select_type_c + * NAME + * h5sget_select_type_c + * PURPOSE + * Call H5Sget_select_type + * INPUTS + * space_id - identifier of the dataspace + * OUTPUTS + * type - type of selection + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Monday, October 7, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ - + * HISTORY + * + * SOURCE +*/ int_f nh5sget_select_type_c ( hid_t_f *space_id , int_f *type) +/******/ { int ret_value = -1; hid_t c_space_id; @@ -957,23 +1199,31 @@ nh5sget_select_type_c ( hid_t_f *space_id , int_f *type) } -/*---------------------------------------------------------------------------- - * Name: h5sselect_elements_c - * Purpose: Call H5Sselect_elements to select elements of a dataspace - * Inputs: space_id - identifier of the dataspace +/****if* H5Sf/h5sselect_elements_c + * NAME + * h5sselect_elements_c + * PURPOSE + * Call H5Sselect_elements to select elements of a dataspace + * INPUTS + * space_id - identifier of the dataspace * operator - defines how the new selection is combined * with the previous one; current values are * H5S_SELECT_SET_F (0) * nelements - number of elements in the selection * coord - arrays with the elements coordinates - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, August 11, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sselect_elements_c ( hid_t_f *space_id , int_f *op, size_t_f *nelements, hsize_t_f *coord) +/******/ { int ret_value = -1; hid_t c_space_id; @@ -1004,22 +1254,31 @@ nh5sselect_elements_c ( hid_t_f *space_id , int_f *op, size_t_f *nelements, hsi return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sdecode_c - * Purpose: Call H5Sdecode - * Inputs: +/****if* H5Sf/h5sdecode_c + * NAME + * h5sdecode_c + * PURPOSE + * Call H5Sdecode + * INPUTS + * * buf - Buffer for the data space object to be decoded. - * Outputs: + * OUTPUTS + * * obj_id - Object_id (non-negative) * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 26, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sdecode_c ( _fcd buf, hid_t_f *obj_id ) +/******/ { int ret_value = -1; unsigned char *c_buf = NULL; /* Buffer to hold C string */ @@ -1041,21 +1300,29 @@ nh5sdecode_c ( _fcd buf, hid_t_f *obj_id ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sencode_c - * Purpose: Call H5Sencode - * Inputs: +/****if* H5Sf/h5sencode_c + * NAME + * h5sencode_c + * PURPOSE + * Call H5Sencode + * INPUTS + * * obj_id - Identifier of the object to be encoded. * buf - Buffer for the object to be encoded into. * nalloc - The size of the allocated buffer. - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * March 26, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sencode_c (_fcd buf, hid_t_f *obj_id, size_t_f *nalloc ) +/******/ { int ret_value = -1; unsigned char *c_buf = NULL; /* Buffer to hold C string */ @@ -1102,22 +1369,31 @@ nh5sencode_c (_fcd buf, hid_t_f *obj_id, size_t_f *nalloc ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5sextent_equal_c - * Purpose: Call H5Sextent_equal - * Inputs: +/****if* H5Sf/h5sextent_equal_c + * NAME + * h5sextent_equal_c + * PURPOSE + * Call H5Sextent_equal + * INPUTS + * * space1_id - First dataspace identifier. * space2_id - Second dataspace identifier. - * Outputs: + * OUTPUTS + * * equal - TRUE if equal, FALSE if unequal. - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld * April 4, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5sextent_equal_c ( hid_t_f * space1_id, hid_t_f *space2_id, hid_t_f *c_equal) +/******/ { int ret_value = -1; diff --git a/fortran/src/H5Sff.f90 b/fortran/src/H5Sff.f90 index 06bebef..9ef8ca8 100644 --- a/fortran/src/H5Sff.f90 +++ b/fortran/src/H5Sff.f90 @@ -1,3 +1,18 @@ +!****h* ROBODoc/H5S +! +! NAME +! MODULE H5S +! +! FILE +! fortran/src/H5Sff.f90 +! +! PURPOSE +! This file contains Fortran interfaces for H5S functions. It includes +! all the functions that are independent on whether the Fortran 2003 functions +! are enabled or disabled. +! +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,44 +28,50 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! NOTES +! *** IMPORTANT *** +! If you add a new H5S function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. ! -! This file contains Fortran90 interfaces for H5S functions. -! - MODULE H5S - USE H5GLOBAL +!***** - CONTAINS +MODULE H5S + USE H5GLOBAL -!---------------------------------------------------------------------- -! Name: h5screate_simple_f +CONTAINS + +! +!****s* H5S/h5screate_simple_f ! -! Purpose: Creates a new simple data space and opens it for access . +! NAME +! h5screate_simple_f ! -! Inputs: -! rank - number of dimensions -! dims - an array of the size of each dimension -! Outputs: -! space_id - dataspace identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! maxdims - an array of the maximum size of each -! dimension +! PURPOSE +! Creates a new simple data space and opens it for access . ! -! Programmer: Elena Pourmal -! August 12, 1999 +! INPUTS +! rank - number of dimensions +! dims - an array of the size of each dimension +! OUTPUTS +! space_id - dataspace identifier +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! maxdims - an array of the maximum size of each dimension ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! SOURCE SUBROUTINE h5screate_simple_f(rank, dims, space_id, hdferr, maxdims) IMPLICIT NONE - INTEGER, INTENT(IN) :: rank ! Number of dataspace dimensions + INTEGER, INTENT(IN) :: rank ! Number of dataspace dimensions INTEGER(HSIZE_T), INTENT(IN) :: dims(rank) ! Array with the dimension ! sizes @@ -59,11 +80,9 @@ INTEGER(HSIZE_T), OPTIONAL, INTENT(IN) :: maxdims(rank) ! Array with the maximum ! dimension sizes +!***** INTEGER(HSIZE_T), ALLOCATABLE, DIMENSION(:) :: f_maxdims -! INTEGER, EXTERNAL :: h5screate_simple_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5screate_simple_c(rank, dims, maxdims, space_id) USE H5GLOBAL @@ -92,38 +111,34 @@ END SUBROUTINE h5screate_simple_f -!---------------------------------------------------------------------- -! Name: h5sclose_f ! -! Purpose: Releases and terminates access to a dataspace. +!****s* H5S/h5sclose_f ! -! Inputs: -! space_id - identifier of dataspace to release -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sclose_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Releases and terminates access to a dataspace. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - identifier of dataspace to release +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sclose_f(space_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5sclose_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5sclose_c(space_id) USE H5GLOBAL @@ -138,31 +153,34 @@ END SUBROUTINE h5sclose_f -!---------------------------------------------------------------------- -! Name: h5screate_f ! -! Purpose: Creates a new dataspace of a specified type. +!****s* H5S/h5screate_f +! +! NAME +! h5screate_f +! +! PURPOSE +! Creates a new dataspace of a specified type. ! -! Inputs: -! classtype - the type of the dataspace to be created -! Outputs: -! space_id - dataspace identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! INPUTS +! classtype - the type of the dataspace to be created +! OUTPUTS +! space_id - dataspace identifier +! hdferr - Returns 0 if successful and -1 if fails ! -! Programmer: Elena Pourmal -! August 12, 1999 +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! NOTES ! -! Comment: -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5screate_f(classtype, space_id, hdferr) IMPLICIT NONE INTEGER, INTENT(IN) :: classtype ! The type of the dataspace @@ -173,10 +191,7 @@ ! H5S_NULL_F(2) INTEGER(HID_T), INTENT(OUT) :: space_id ! Dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5screate_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5screate_c(classtype, space_id) USE H5GLOBAL @@ -192,41 +207,41 @@ END SUBROUTINE h5screate_f -!---------------------------------------------------------------------- -! Name: h5scopy_f ! -! Purpose: Creates an exact copy of a dataspace. +!****s* H5S/h5scopy_f +! +! NAME +! h5scopy_f ! -! Inputs: -! space_id - dataspace identifier -! Outputs: -! new_space_id - identifier of dataspace's copy -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Creates an exact copy of a dataspace. ! -! Programmer: Elena Pourmal -! August 12, 1999 +! INPUTS +! space_id - dataspace identifier +! OUTPUTS +! new_space_id - identifier of dataspace's copy +! hdferr - Returns 0 if successful and -1 if fails ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! NOTES ! -! Comment: -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5scopy_f(space_id, new_space_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER(HID_T), INTENT(OUT) :: new_space_id ! Identifier of dataspace's copy INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5scopy_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5scopy_c(space_id, new_space_id) USE H5GLOBAL @@ -242,31 +257,31 @@ END SUBROUTINE h5scopy_f -!---------------------------------------------------------------------- -! Name: h5sget_select_hyper_nblocks_f ! -! Purpose: Get number of hyperslab blocks. +!****s* H5S/h5sget_select_hyper_nblocks_f ! -! Inputs: -! space_id - dataspace identifier -! Outputs: -! num_blocks - number of hyperslab blocks in the current -! hyperslab selection -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sget_select_hyper_nblocks_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Get number of hyperslab blocks. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - dataspace identifier +! OUTPUTS +! num_blocks - number of hyperslab blocks in the current +! hyperslab selection +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sget_select_hyper_nblocks_f(space_id, num_blocks, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -275,15 +290,12 @@ !in the current dataspace !selection INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5sget_select_hyper_nblocks_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5sget_select_hyper_nblocks_c (space_id, num_blocks) USE H5GLOBAL !DEC$IF DEFINED(HDF5F90_WINDOWS) -!DEC$ATTRIBUTES C,reference,decorate,alias:'H5SGET_SELECT_HYPER_NBLOCKS_C'::h5sget_select_hyper_nblocks_c +! DEC$ ATTRIBUTES C,reference,decorate,alias:'H5SGET_SELECT_HYPER_NBLOCKS_C'::h5sget_select_hyper_nblocks_c !DEC$ENDIF INTEGER(HID_T), INTENT(IN) :: space_id INTEGER(HSSIZE_T), INTENT(OUT) :: num_blocks @@ -294,33 +306,32 @@ END SUBROUTINE h5sget_select_hyper_nblocks_f -!---------------------------------------------------------------------- -! Name: h5sget_select_hyper_blocklist_f ! -! Purpose: Gets the list of hyperslab blocks currently selected. +!****s* H5S/h5sget_select_hyper_blocklist_f ! -! Inputs: -! space_id - dataspace identifier -! startblock - hyperslab block to start with -! num_blocks - number of blocks to get -! Outputs: -! buf - buffer to hold block list -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sget_select_hyper_blocklist_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Gets the list of hyperslab blocks currently selected. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - dataspace identifier +! startblock - hyperslab block to start with +! num_blocks - number of blocks to get +! OUTPUTS +! buf - buffer to hold block list +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! SOURCE SUBROUTINE h5sget_select_hyper_blocklist_f(space_id, startblock, & num_blocks, buf, hdferr) IMPLICIT NONE @@ -334,11 +345,8 @@ INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: buf !List of hyperslab blocks selected INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** - -! INTEGER, EXTERNAL :: h5sget_select_hyper_blocklist_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5sget_select_hyper_blocklist_c(space_id, startblock, & num_blocks, buf ) @@ -359,33 +367,34 @@ END SUBROUTINE h5sget_select_hyper_blocklist_f -!---------------------------------------------------------------------- -! Name: h5sget_select_bounds_f ! -! Purpose: Gets the bounding box containing the current selection. +!****s* H5S/h5sget_select_bounds_f ! -! Inputs: -! space_id - dataspace identifier +! NAME +! h5sget_select_bounds_f ! -! Outputs: -! start - starting coordinates of bounding box -! end - ending coordinates of bounding box -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Gets the bounding box containing the current selection. ! -! Programmer: Elena Pourmal -! August 12, 1999 +! INPUTS +! space_id - dataspace identifier ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! OUTPUTS +! start - starting coordinates of bounding box +! end - ending coordinates of bounding box +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! NONE ! -! Comment: -!---------------------------------------------------------------------- - +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! SOURCE SUBROUTINE h5sget_select_bounds_f(space_id, start, END, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -396,7 +405,7 @@ !i.e., the coordinates of the diagonally !opposite corner INTEGER, INTENT(OUT) :: hdferr ! Error code - +!***** INTERFACE INTEGER FUNCTION h5sget_select_bounds_c(space_id, start, END) USE H5GLOBAL @@ -413,31 +422,31 @@ END SUBROUTINE h5sget_select_bounds_f -!---------------------------------------------------------------------- -! Name: h5sget_select_elem_npoints_f ! -! Purpose: Gets the number of element points in the current selection +!****s* H5S/h5sget_select_elem_npoints_f +! +! NAME +! h5sget_select_elem_npoints_f ! -! Inputs: -! space_id - dataspace identifier -! Outputs: -! num_points - number of element points in the current -! dataspace selection -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Gets the number of element points in the current selection ! -! Programmer: Elena Pourmal -! August 12, 1999 +! INPUTS +! space_id - dataspace identifier +! OUTPUTS +! num_points - number of element points in the current +! dataspace selection +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 ! -! Comment: -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5sget_select_elem_npoints_f(space_id, num_points, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -446,15 +455,12 @@ !in the current dataspace !selection INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5sget_select_elem_npoints_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5sget_select_elem_npoints_c (space_id, num_points) USE H5GLOBAL !DEC$IF DEFINED(HDF5F90_WINDOWS) -!DEC$ATTRIBUTES C,reference,decorate,alias:'H5SGET_SELECT_ELEM_NPOINTS_C'::h5sget_select_elem_npoints_c +! DEC$ ATTRIBUTES C,reference,decorate,alias:'H5SGET_SELECT_ELEM_NPOINTS_C'::h5sget_select_elem_npoints_c !DEC$ENDIF INTEGER(HID_T), INTENT(IN) :: space_id INTEGER(HSSIZE_T), INTENT(OUT) :: num_points @@ -465,33 +471,32 @@ END SUBROUTINE h5sget_select_elem_npoints_f -!---------------------------------------------------------------------- -! Name: h5sget_select_elem_pointlist_f ! -! Purpose: Gets the list of element points currently selected. +!****s* H5S/h5sget_select_elem_pointlist_f ! -! Inputs: -! space_id - dataspace identifier -! startpoint - element point to start with -! num_points - number of elemnt points to get -! Outputs: -! buf - buffer with element points selected -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sget_select_elem_pointlist_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Gets the list of element points currently selected. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - dataspace identifier +! startpoint - element point to start with +! num_points - number of elemnt points to get +! OUTPUTS +! buf - buffer with element points selected +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sget_select_elem_pointlist_f(space_id, startpoint, & num_points, buf, hdferr) IMPLICIT NONE @@ -503,13 +508,13 @@ INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: buf !List of element points selected INTEGER, INTENT(OUT) :: hdferr ! Error code - +!***** INTERFACE INTEGER FUNCTION h5sget_select_elem_pointlist_c(space_id, startpoint, & num_points, buf ) USE H5GLOBAL !DEC$IF DEFINED(HDF5F90_WINDOWS) -!DEC$ATTRIBUTES C,reference,decorate,alias:'H5SGET_SELECT_ELEM_POINTLIST_C'::h5sget_select_elem_pointlist_c +! DEC$ ATTRIBUTES C,reference,decorate,alias:'H5SGET_SELECT_ELEM_POINTLIST_C'::h5sget_select_elem_pointlist_c !DEC$ENDIF INTEGER(HID_T), INTENT(IN) :: space_id INTEGER(HSIZE_T), INTENT(IN) :: startpoint @@ -523,52 +528,48 @@ END SUBROUTINE h5sget_select_elem_pointlist_f -!---------------------------------------------------------------------- -! Name: h5sselect_elements_f -! -! Purpose: Selects elements to be included in the selection for -! a dataspace -! -! Inputs: -! space_id - dataspace identifier -! operator - flag, valid values are: -! H5S_SELECT_SET_F (0) -! H5S_SELECT_OR_F (1) -! rank - number of dataspace dimensions -! num_elements - number of elements to be selected -! coord - 2D (rank x num_elements) array with the -! elements coordinates -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 -! -! Comment: -!---------------------------------------------------------------------- +! +!****s* H5S/h5sselect_elements_f +! +! NAME +! h5sselect_elements_f +! +! PURPOSE +! Selects elements to be included in the selection for +! a dataspace +! +! INPUTS +! space_id - dataspace identifier +! operator - flag, valid values are: +! H5S_SELECT_SET_F +! H5S_SELECT_APPEND_F +! H5S_SELECT_PREPEND_F +! rank - number of dataspace dimensions +! num_elements - number of elements to be selected +! coord - 2D (rank x num_elements) array with the +! elements coordinates ( 1-based); in C the +! array is stored in 2D as (num_element x rank) +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! SOURCE SUBROUTINE h5sselect_elements_f(space_id, OPERATOR, rank, & num_elements, coord, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier - INTEGER, INTENT(IN) :: OPERATOR ! Flag, valid values are: - ! H5S_SELECT_SET_F (0) - ! H5S_SELECT_OR_F (1) - INTEGER, INTENT(IN) :: rank ! Number of dataspace dimensions - INTEGER(SIZE_T), INTENT(IN) :: num_elements ! Number of elements to be - ! selected - INTEGER(HSIZE_T), DIMENSION(rank,num_elements), INTENT(IN) :: coord - ! Array with the coordinates - ! of the selected elements - ! coord(rank, num_elements) - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER, INTENT(IN) :: OPERATOR + INTEGER, INTENT(IN) :: rank + INTEGER(SIZE_T), INTENT(IN) :: num_elements + INTEGER(HSIZE_T), INTENT(IN) , DIMENSION(rank,num_elements) :: coord + INTEGER, INTENT(OUT) :: hdferr +!***** INTEGER(HSIZE_T), ALLOCATABLE, DIMENSION(:,:) :: c_coord INTEGER :: error, i @@ -596,43 +597,49 @@ ENDDO hdferr = h5sselect_elements_c(space_id, OPERATOR, num_elements, c_coord) +! ALLOCATE(c_coord(num_elements,rank), stat = error) +! IF (error.NE. 0) THEN +! hdferr = -1 +! RETURN +! ENDIF +! +! c_coord = TRANSPOSE(coord) +! hdferr = h5sselect_elements_c(space_id, OPERATOR, INT(rank,size_t), c_coord) + + DEALLOCATE(c_coord) END SUBROUTINE h5sselect_elements_f -!---------------------------------------------------------------------- -! Name: h5sselect_all_f ! -! Purpose: Selects the entire dataspace. +!****s* H5S/h5sselect_all_f ! -! Inputs: -! space_id - identifier for the dataspace in which -! selection being made -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sselect_all_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Selects the entire dataspace. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - Identifier for the dataspace in which +! selection being made +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sselect_all_f(space_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5sselect_all_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5sselect_all_c(space_id) USE H5GLOBAL @@ -647,39 +654,36 @@ END SUBROUTINE h5sselect_all_f -!---------------------------------------------------------------------- -! Name: h5sselect_none_f ! -! Purpose: Resets the selection region to include no elements. +!****s* H5S/h5sselect_none_f ! -! Inputs: -! space_id - the identifier for the dataspace in which -! the selection is being reset. -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sselect_none_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Resets the selection region to include no elements. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - the identifier for the dataspace in which +! the selection is being reset. +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sselect_none_f(space_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5sselect_none_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5sselect_none_c(space_id) USE H5GLOBAL @@ -694,31 +698,32 @@ END SUBROUTINE h5sselect_none_f -!---------------------------------------------------------------------- -! Name: h5sselect_valid_f ! -! Purpose: Verifies that the selection is within the extent of -! the dataspace. +!****s* H5S/h5sselect_valid_f +! +! NAME +! h5sselect_valid_f ! -! Inputs: -! space_id - identifier for the dataspace for which -! selection is verified -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Verifies that the selection is within the extent of +! the dataspace. ! -! Programmer: Elena Pourmal -! August 12, 1999 +! INPUTS +! space_id - identifier for the dataspace for which +! selection is verified +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sselect_valid_f(space_id, status, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -726,11 +731,9 @@ ! contained within the extent, ! FALSE otherwise. INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTEGER :: flag ! "TRUE/FALSE/ERROR" flag from C routine -! INTEGER, EXTERNAL :: h5sselect_valid_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5sselect_valid_c(space_id, flag) USE H5GLOBAL @@ -748,41 +751,38 @@ END SUBROUTINE h5sselect_valid_f -!---------------------------------------------------------------------- -! Name: h5sget_simple_extent_npoints_f ! -! Purpose: Determines the number of elements in a dataspace. +!****s* H5S/h5sget_simple_extent_npoints_f ! -! Inputs: -! space_id - dataspace identifier -! Outputs: -! npoints - number of elements in the dataspace -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sget_simple_extent_npoints_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Determines the number of elements in a dataspace. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - dataspace identifier +! OUTPUTS +! npoints - number of elements in the dataspace +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sget_simple_extent_npoints_f(space_id, npoints, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER(HSIZE_T), INTENT(OUT) :: npoints ! Number of elements in ! dataspace INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5sget_simple_extent_npoints_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5sget_simple_extent_npoints_c( space_id, npoints) USE H5GLOBAL @@ -798,41 +798,36 @@ END SUBROUTINE h5sget_simple_extent_npoints_f -!---------------------------------------------------------------------- -! Name: h5sget_select_npoints_f ! -! Purpose: Determines the number of elements in a dataspace selection. +!****s* H5S/h5sget_select_npoints_f ! -! Inputs: -! space_id - dataspace identifier -! Outputs: -! npoints - number of points in the dataspace selection -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sget_select_npoints_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Determines the number of elements in a dataspace selection. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - dataspace identifier +! OUTPUTS +! npoints - number of points in the dataspace selection +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! SOURCE SUBROUTINE h5sget_select_npoints_f(space_id, npoints, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER(HSSIZE_T), INTENT(OUT) :: npoints ! Number of elements in the ! selection INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5sget_select_npoints_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5sget_select_npoints_c(space_id, npoints) USE H5GLOBAL @@ -848,40 +843,36 @@ END SUBROUTINE h5sget_select_npoints_f -!---------------------------------------------------------------------- -! Name: h5sget_simple_extent_ndims_f ! -! Purpose: Determines the dimensionality of a dataspace +!****s* H5S/h5sget_simple_extent_ndims_f ! -! Inputs: -! space_id - dataspace identifier -! Outputs: -! rank - number of dataspace dimensions -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sget_simple_extent_ndims_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Determines the dimensionality of a dataspace ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - dataspace identifier +! OUTPUTS +! rank - number of dataspace dimensions +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sget_simple_extent_ndims_f(space_id, rank, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER, INTENT(OUT) :: rank ! Number of dimensions INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5sget_simple_extent_ndims_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5sget_simple_extent_ndims_c(space_id, rank) USE H5GLOBAL @@ -896,34 +887,32 @@ hdferr = h5sget_simple_extent_ndims_c(space_id, rank) END SUBROUTINE h5sget_simple_extent_ndims_f - -!---------------------------------------------------------------------- -! Name: h5sget_simple_extent_dims_f ! -! Purpose: Retrieves dataspace dimension size and maximum size. +!****s* H5S/h5sget_simple_extent_dims_f ! -! Inputs: -! space_id - dataspace identifier -! Outputs: -! dims - array to store size of each dimension -! maxdims - array to store maximum size of each -! dimension -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sget_simple_extent_dims_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Retrieves dataspace dimension size and maximum size. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - dataspace identifier +! OUTPUTS +! dims - array to store size of each dimension +! maxdims - array to store maximum size of each +! dimension +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sget_simple_extent_dims_f(space_id, dims, maxdims, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -935,10 +924,7 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code: -1 on failure, ! number of dimensions on ! on success - -! INTEGER, EXTERNAL :: h5sget_simple_extent_dims_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5sget_simple_extent_dims_c(space_id, dims, maxdims) USE H5GLOBAL @@ -955,35 +941,34 @@ END SUBROUTINE h5sget_simple_extent_dims_f -!---------------------------------------------------------------------- -! Name: h5sget_simple_extent_type_f ! -! Purpose: Determine the current class of a dataspace +!****s* H5S/h5sget_simple_extent_type_f ! -! Inputs: -! space_id - dataspace identifier -! Outputs: -! classtype - class type, possible values are: -! H5S_NO_CLASS_F (-1) -! H5S_SCALAR_F (0) -! H5S_SIMPLE_F (1) -! H5S_NULL_F (2) -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sget_simple_extent_type_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Determine the current class of a dataspace ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - dataspace identifier +! OUTPUTS +! classtype - class type, possible values are: +! H5S_NO_CLASS_F (-1) +! H5S_SCALAR_F (0) +! H5S_SIMPLE_F (1) +! H5S_NULL_F (2) +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sget_simple_extent_type_f(space_id, classtype, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -994,10 +979,7 @@ ! H5S_SIMPLE_F (1) ! H5S_NULL_F (2) INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5sget_simple_extent_type_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5sget_simple_extent_type_c(space_id, classtype) USE H5GLOBAL @@ -1012,35 +994,33 @@ hdferr = h5sget_simple_extent_type_c(space_id, classtype) END SUBROUTINE h5sget_simple_extent_type_f - -!---------------------------------------------------------------------- -! Name: h5sset_extent_simple_f ! -! Purpose: Sets or resets the size of an existing dataspace. +!****s* H5S/h5sset_extent_simple_f ! -! Inputs: -! space_id - dataspace identifier -! rank - dataspace number of dimensions -! current_size - array with the new sizes of dimensions -! maximum_size - array with the new maximum sizes of -! dimensions -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sset_extent_simple_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Sets or resets the size of an existing dataspace. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - dataspace identifier +! rank - dataspace number of dimensions +! current_size - array with the new sizes of dimensions +! maximum_size - array with the new maximum sizes of +! dimensions +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sset_extent_simple_f(space_id, rank, current_size, & maximum_size, hdferr) IMPLICIT NONE @@ -1054,10 +1034,7 @@ ! sizes of dimensions ! sizes INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5sset_extent_simple_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5sset_extent_simple_c(space_id, rank, & current_size, maximum_size) @@ -1076,33 +1053,31 @@ maximum_size) END SUBROUTINE h5sset_extent_simple_f - -!---------------------------------------------------------------------- -! Name: h5sis_simple_f ! -! Purpose: Determines whether a dataspace is a simple dataspace. +!****s* H5S/h5sis_simple_f ! -! Inputs: -! space_id - dataspace identifier -! Outputs: -! status - flag to indicate if dataspace -! is simple or not -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sis_simple_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Determines whether a dataspace is a simple dataspace. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - dataspace identifier +! OUTPUTS +! status - flag to indicate if dataspace +! is simple or not +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sis_simple_f(space_id, status, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -1110,11 +1085,9 @@ ! is simple or not ( TRUE or ! FALSE) INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTEGER :: flag ! "TRUE/FALSE/ERROR from C" -! INTEGER, EXTERNAL :: h5sis_simple_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5sis_simple_c(space_id, flag) USE H5GLOBAL @@ -1132,31 +1105,34 @@ END SUBROUTINE h5sis_simple_f -!---------------------------------------------------------------------- -! Name: h5soffset_simple_f ! -! Purpose: Sets the offset of a simple dataspace. +!****s* H5S/h5soffset_simple_f ! -! Inputs: -! space_id - dataspace identifier -! offset - the offset at which to position the -! selection -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5soffset_simple_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Sets the offset of a simple dataspace. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - dataspace identifier +! offset - the offset at which to position the +! selection +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! NONE ! -! Comment: -!---------------------------------------------------------------------- +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5soffset_simple_f(space_id, offset, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -1164,10 +1140,7 @@ ! The offset at which to position ! the selection INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5soffset_simple_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5soffset_simple_c(space_id, offset) USE H5GLOBAL @@ -1183,33 +1156,38 @@ END SUBROUTINE h5soffset_simple_f -!---------------------------------------------------------------------- -! Name: h5sextent_copy_f ! -! Purpose: Copies the extent of a dataspace. +!****s* H5S/h5sextent_copy_f +! +! NAME +! h5sextent_copy_f +! +! PURPOSE +! Copies the extent of a dataspace. +! +! INPUTS +! dest_space_id - the identifier for the dataspace to which +! the extent is copied +! source_space_id - the identifier for the dataspace from +! which the extent is copied +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! NONE ! -! Inputs: -! dest_space_id - the identifier for the dataspace to which -! the extent is copied -! source_space_id - the identifier for the dataspace from -! which the extent is copied -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Programmer: Elena Pourmal -! August 12, 1999 +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! NOTES ! -! Comment: -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5sextent_copy_f(dest_space_id, source_space_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dest_space_id ! Identifier of destination @@ -1217,10 +1195,7 @@ INTEGER(HID_T), INTENT(IN) :: source_space_id ! Identifier of source ! dataspace INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5sextent_copy_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5sextent_copy_c(dest_space_id, source_space_id) USE H5GLOBAL @@ -1236,37 +1211,34 @@ END SUBROUTINE h5sextent_copy_f -!---------------------------------------------------------------------- -! Name: h5sset_extent_none_f ! -! Purpose: Removes the extent from a dataspace. +!****s* H5S/h5sset_extent_none_f ! -! Inputs: -! space_id - dataspace identifier -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5sset_extent_none_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Removes the extent from a dataspace. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 +! INPUTS +! space_id - dataspace identifier +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sset_extent_none_f(space_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5sset_extent_none_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5sset_extent_none_c(space_id) USE H5GLOBAL @@ -1281,38 +1253,40 @@ END SUBROUTINE h5sset_extent_none_f -!---------------------------------------------------------------------- -! Name: h5sselect_hyperslab_f -! -! Purpose: Selects a hyperslab region to add to the current selected -! region -! -! Inputs: -! space_id - dataspace identifier -! operator - flag, valid values are: -! H5S_SELECT_SET_F (0) -! H5S_SELECT_OR_F (1) -! start - array with hyperslab offsets -! count - number of blocks included in the -! hyperslab -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! stride - array with hyperslab strides -! block - array with hyperslab block sizes -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 6, 2001 -! -! Comment: -!---------------------------------------------------------------------- - +! +!****s* H5S/h5sselect_hyperslab_f +! +! NAME +! h5sselect_hyperslab_f +! +! PURPOSE +! Selects a hyperslab region to add to the current selected +! region +! +! INPUTS +! space_id - dataspace identifier +! operator - flag, valid values are: +! H5S_SELECT_SET_F (0) +! H5S_SELECT_OR_F (1) +! start - array with hyperslab offsets +! count - number of blocks included in the +! hyperslab +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! stride - array with hyperslab strides +! block - array with hyperslab block sizes +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! SOURCE SUBROUTINE h5sselect_hyperslab_f(space_id, operator, start, count, & hdferr, stride, block) IMPLICIT NONE @@ -1332,14 +1306,12 @@ ! in each direction INTEGER(HSIZE_T), DIMENSION(:), OPTIONAL, INTENT(IN) :: block ! Sizes of element block +!***** INTEGER(HSIZE_T), DIMENSION(:), ALLOCATABLE :: def_block INTEGER(HSIZE_T), DIMENSION(:), ALLOCATABLE :: def_stride INTEGER :: rank INTEGER :: error1, error2 -! INTEGER, EXTERNAL :: h5sselect_hyperslab_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5sselect_hyperslab_c(space_id, operator, & start, count, stride, block) @@ -1408,49 +1380,56 @@ deallocate(def_stride) END SUBROUTINE h5sselect_hyperslab_f -!---------------------------------------------------------------------- -! Name: h5scombine_hyperslab_f -! -! Purpose: Combine a hyperslab selection with the current -! selection for a dataspace -! -! Inputs: -! space_id - dataspace of selection to use -! operator - flag, valid values are: -! H5S_SELECT_NOOP_F -! H5S_SELECT_SET_F -! H5S_SELECT_OR_F -! H5S_SELECT_AND_F -! H5S_SELECT_XOR_F -! H5S_SELECT_NOTB_F -! H5S_SELECT_NOTA_F -! H5S_SELECT_APPEND_F -! H5S_SELECT_PREPEND_F -! start - array with hyperslab offsets -! count - number of blocks included in the -! hyperslab -! Outputs: -! hyper_id - identifier for the new hyperslab -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! stride - array with hyperslab strides -! block - array with hyperslab block sizes -! -! Programmer: Elena Pourmal -! October 7, 2002 -! -! Modifications: -! -! Comment: Commented out until 1.6 ? 10/08/2002 -!---------------------------------------------------------------------- - -! SUBROUTINE h5scombine_hyperslab_f(space_id, operator, start, count, & -! hyper_id, hdferr, stride, block) -! IMPLICIT NONE -! INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier -! INTEGER, INTENT(IN) :: operator ! Flag, valid values are: +! !$! +! !$!****s* H5S/h5scombine_hyperslab_f +! !$! +! !$! NAME +! !$! h5scombine_hyperslab_f +! !$! +! !$! PURPOSE +! !$! Combine a hyperslab selection with the current +! !$! selection for a dataspace +! !$! +! !$! INPUTS +! !$! space_id - dataspace of selection to use +! !$! operator - flag, valid values are: +! !$! H5S_SELECT_NOOP_F +! !$! H5S_SELECT_SET_F +! !$! H5S_SELECT_OR_F +! !$! H5S_SELECT_AND_F +! !$! H5S_SELECT_XOR_F +! !$! H5S_SELECT_NOTB_F +! !$! H5S_SELECT_NOTA_F +! !$! H5S_SELECT_APPEND_F +! !$! H5S_SELECT_PREPEND_F +! !$! start - array with hyperslab offsets +! !$! count - number of blocks included in the +! !$! hyperslab +! !$! OUTPUTS +! !$! hyper_id - identifier for the new hyperslab +! !$! hdferr: - error code +! !$! Success: 0 +! !$! Failure: -1 +! !$! OPTIONAL PARAMETERS +! !$! stride - array with hyperslab strides +! !$! block - array with hyperslab block sizes +! !$! +! !$! AUTHOR +! !$! Elena Pourmal +! !$! October 7, 2002 +! !$! +! !$! HISTORY +! !$! +! !$! +! !$! NOTES +! !$! Commented out until 1.6 ? 10/08/2002 +! !$! +! !$! SOURCE +! SUBROUTINE h5scombine_hyperslab_f(space_id, operator, start, count, & +! hyper_id, hdferr, stride, block) +! IMPLICIT NONE +! INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier +! INTEGER, INTENT(IN) :: operator ! Flag, valid values are: ! H5S_SELECT_NOOP_F ! H5S_SELECT_SET_F ! H5S_SELECT_OR_F @@ -1461,133 +1440,140 @@ ! H5S_SELECT_APPEND_F ! H5S_SELECT_PREPEND_F ! -! INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: start +! INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: start ! Starting coordinates of the hyperslab -! INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: count +! INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: count ! Number of blocks to select ! from dataspace -! INTEGER(HID_T), INTENT(OUT) :: hyper_id ! New hyperslab identifier -! INTEGER, INTENT(OUT) :: hdferr ! Error code -! INTEGER(HSIZE_T), DIMENSION(:), OPTIONAL, INTENT(IN) :: stride +! INTEGER(HID_T), INTENT(OUT) :: hyper_id ! New hyperslab identifier +! INTEGER, INTENT(OUT) :: hdferr ! Error code +! INTEGER(HSIZE_T), DIMENSION(:), OPTIONAL, INTENT(IN) :: stride ! Array of how many elements to move ! in each direction -! INTEGER(HSIZE_T), DIMENSION(:), OPTIONAL, INTENT(IN) :: block +! INTEGER(HSIZE_T), DIMENSION(:), OPTIONAL, INTENT(IN) :: block ! Sizes of element block -! INTEGER(HSIZE_T), DIMENSION(:), ALLOCATABLE :: def_block -! INTEGER(HSIZE_T), DIMENSION(:), ALLOCATABLE :: def_stride -! INTEGER :: rank -! INTEGER :: error1, error2 - -! INTERFACE -! INTEGER FUNCTION h5scombine_hyperslab_c(space_id, operator, & -! start, count, stride, block, hyper_id) -! USE H5GLOBAL -! !DEC$IF DEFINED(HDF5F90_WINDOWS) -! !DEC$ATTRIBUTES C,reference,decorate,alias:'H5SCOMBINE_HYPERSLAB_C'::h5scombine_hyperslab_c -! !DEC$ENDIF -! INTEGER(HID_T), INTENT(IN) :: space_id -! INTEGER, INTENT(IN) :: operator -! INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: start -! INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: count -! INTEGER(HSIZE_T), DIMENSION(*), OPTIONAL, INTENT(IN) :: stride -! INTEGER(HSIZE_T), DIMENSION(*), OPTIONAL, INTENT(IN) :: block -! INTEGER(HID_T), INTENT(OUT) :: hyper_id -! END FUNCTION h5scombine_hyperslab_c -! END INTERFACE - -! if (present(stride).and. present(block)) then -! hdferr = h5scombine_hyperslab_c(space_id, operator, start, count, & -! stride, block, hyper_id) -! return -! endif +! INTEGER(HSIZE_T), DIMENSION(:), ALLOCATABLE :: def_block +! INTEGER(HSIZE_T), DIMENSION(:), ALLOCATABLE :: def_stride +! INTEGER :: rank +! INTEGER :: error1, error2 + +! INTERFACE +! INTEGER FUNCTION h5scombine_hyperslab_c(space_id, operator, & +! start, count, stride, block, hyper_id) +! USE H5GLOBAL +! !DEC$IF DEFINED(HDF5F90_WINDOWS) +! !DEC$ATTRIBUTES C,reference,decorate,alias:'H5SCOMBINE_HYPERSLAB_C'::h5scombine_hyperslab_c +! !DEC$ENDIF +! INTEGER(HID_T), INTENT(IN) :: space_id +! INTEGER, INTENT(IN) :: operator +! INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: start +! INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: count +! INTEGER(HSIZE_T), DIMENSION(*), OPTIONAL, INTENT(IN) :: stride +! INTEGER(HSIZE_T), DIMENSION(*), OPTIONAL, INTENT(IN) :: block +! INTEGER(HID_T), INTENT(OUT) :: hyper_id +! END FUNCTION h5scombine_hyperslab_c +! END INTERFACE + +! if (present(stride).and. present(block)) then +! hdferr = h5scombine_hyperslab_c(space_id, operator, start, count, & +! stride, block, hyper_id) +! return +! endif ! Case of optional parameters. ! ! Find the rank of the dataspace to allocate memery for ! default stride and block arrays. ! -! CALL h5sget_simple_extent_ndims_f(space_id, rank, hdferr) -! if( hdferr .EQ. -1) return +! CALL h5sget_simple_extent_ndims_f(space_id, rank, hdferr) +! if( hdferr .EQ. -1) return ! -! if (present(stride).and. .not.present(block)) then -! allocate(def_block(rank), stat=error1) -! if (error1.NE.0) then -! hdferr = -1 -! return -! endif -! def_block = 1 -! hdferr = h5scombine_hyperslab_c(space_id, operator, start, count, & -! stride, def_block, hyper_id) -! deallocate(def_block) -! return -! endif - -! if (.not.present(stride).and. present(block)) then -! allocate(def_stride(rank), stat=error2) -! if (error2.NE.0) then -! hdferr = -1 -! return -! endif -! def_stride = 1 -! hdferr = h5scombine_hyperslab_c(space_id, operator, start, count, & -! def_stride, block, hyper_id) -! deallocate(def_stride) -! return -! endif -! allocate(def_block(rank), stat=error1) -! allocate(def_stride(rank), stat=error2) -! if ((error1.NE.0) .OR. (error2.NE.0)) then -! hdferr = -1 -! return -! endif -! def_block = 1 -! def_stride = 1 -! hdferr = h5scombine_hyperslab_c(space_id, operator, start, count, & -! def_stride, def_block, hyper_id) -! deallocate(def_block) -! deallocate(def_stride) - -! END SUBROUTINE h5scombine_hyperslab_f - -!---------------------------------------------------------------------- -! Name: h5scombine_select_f -! -! Purpose: Combine two hyperslab selections with an operation -! and return a dataspace with resulting selection. -! -! Inputs: -! space1_id - dataspace of selection to use -! operator - flag, valid values are: -! H5S_SELECT_NOOP_F -! H5S_SELECT_SET_F -! H5S_SELECT_OR_F -! H5S_SELECT_AND_F -! H5S_SELECT_XOR_F -! H5S_SELECT_NOTB_F -! H5S_SELECT_NOTA_F -! H5S_SELECT_APPEND_F -! H5S_SELECT_PREPEND_F -! space2_id - dataspace of selection to use -! Outputs: -! ds_id - idataspace identifier with the new selection -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: - NONE -! -! Programmer: Elena Pourmal -! October 7, 2002 -! -! Modifications: -! -! Comment: commented out until 1.6 release(?) 10/08/2002 -!---------------------------------------------------------------------- - -! SUBROUTINE h5scombine_select_f(space1_id, operator, space2_id, & -! ds_id, hdferr) -! IMPLICIT NONE -! INTEGER(HID_T), INTENT(IN) :: space1_id ! First dataspace identifier -! INTEGER(HID_T), INTENT(IN) :: space2_id ! Second dataspace identifier -! INTEGER, INTENT(IN) :: operator ! Flag, valid values are: +! if (present(stride).and. .not.present(block)) then +! allocate(def_block(rank), stat=error1) +! if (error1.NE.0) then +! hdferr = -1 +! return +! endif +! def_block = 1 +! hdferr = h5scombine_hyperslab_c(space_id, operator, start, count, & +! stride, def_block, hyper_id) +! deallocate(def_block) +! return +! endif + +! if (.not.present(stride).and. present(block)) then +! allocate(def_stride(rank), stat=error2) +! if (error2.NE.0) then +! hdferr = -1 +! return +! endif +! def_stride = 1 +! hdferr = h5scombine_hyperslab_c(space_id, operator, start, count, & +! def_stride, block, hyper_id) +! deallocate(def_stride) +! return +! endif +! allocate(def_block(rank), stat=error1) +! allocate(def_stride(rank), stat=error2) +! if ((error1.NE.0) .OR. (error2.NE.0)) then +! hdferr = -1 +! return +! endif +! def_block = 1 +! def_stride = 1 +! hdferr = h5scombine_hyperslab_c(space_id, operator, start, count, & +! def_stride, def_block, hyper_id) +! deallocate(def_block) +! deallocate(def_stride) + +! END SUBROUTINE h5scombine_hyperslab_f + +! !$! +! !$!****s* H5S/ +! !$! +! !$! NAME +! !$! h5scombine_select_f +! !$! +! !$! PURPOSE +! !$! Combine two hyperslab selections with an operation +! !$! and return a dataspace with resulting selection. +! !$! +! !$! INPUTS +! !$! space1_id - dataspace of selection to use +! !$! operator - flag, valid values are: +! !$! H5S_SELECT_NOOP_F +! !$! H5S_SELECT_SET_F +! !$! H5S_SELECT_OR_F +! !$! H5S_SELECT_AND_F +! !$! H5S_SELECT_XOR_F +! !$! H5S_SELECT_NOTB_F +! !$! H5S_SELECT_NOTA_F +! !$! H5S_SELECT_APPEND_F +! !$! H5S_SELECT_PREPEND_F +! !$! space2_id - dataspace of selection to use +! !$! OUTPUTS +! !$! ds_id - idataspace identifier with the new selection +! !$! hdferr: - error code +! !$! Success: 0 +! !$! Failure: -1 +! !$! OPTIONAL PARAMETERS - NONE +! !$! +! !$! AUTHOR +! !$! Elena Pourmal +! !$! October 7, 2002 +! !$! +! !$! HISTORY +! !$! +! !$! +! !$! NOTES commented out until 1.6 release(?) 10/08/2002 +! !$! + +! ! SOURCE +! !$ SUBROUTINE h5scombine_select_f(space1_id, operator, space2_id, & +! ds_id, hdferr) +! IMPLICIT NONE +! INTEGER(HID_T), INTENT(IN) :: space1_id ! First dataspace identifier +! INTEGER(HID_T), INTENT(IN) :: space2_id ! Second dataspace identifier +! INTEGER, INTENT(IN) :: operator ! Flag, valid values are: ! H5S_SELECT_NOOP_F ! H5S_SELECT_SET_F ! H5S_SELECT_OR_F @@ -1598,70 +1584,77 @@ ! H5S_SELECT_APPEND_F ! H5S_SELECT_PREPEND_F ! -! INTEGER(HID_T), INTENT(OUT) :: ds_id ! New dataspace identifier -! INTEGER, INTENT(OUT) :: hdferr ! Error code -! -! INTERFACE -! INTEGER FUNCTION h5scombine_select_c(space1_id, operator, & -! space2_id, ds_id) -! USE H5GLOBAL -! !DEC$IF DEFINED(HDF5F90_WINDOWS) -! !DEC$ATTRIBUTES C,reference,decorate,alias:'H5SCOMBINE_SELECT_C'::h5scombine_select_c -! !DEC$ENDIF -! INTEGER(HID_T), INTENT(IN) :: space1_id -! INTEGER(HID_T), INTENT(IN) :: space2_id -! INTEGER, INTENT(IN) :: operator -! INTEGER(HID_T), INTENT(OUT) :: ds_id -! END FUNCTION h5scombine_select_c -! END INTERFACE - -! hdferr = h5scombine_select_c(space1_id, operator, space2_id, & -! ds_id) -! return - -! END SUBROUTINE h5scombine_select_f - -!---------------------------------------------------------------------- -! Name: h5sselect_select_f -! -! Purpose: Refine a hyperslab selection with an operation -! using second hyperslab -! -! Inputs: -! space1_id - dataspace of selection to modify -! operator - flag, valid values are: -! H5S_SELECT_NOOP_F -! H5S_SELECT_SET_F -! H5S_SELECT_OR_F -! H5S_SELECT_AND_F -! H5S_SELECT_XOR_F -! H5S_SELECT_NOTB_F -! H5S_SELECT_NOTA_F -! H5S_SELECT_APPEND_F -! H5S_SELECT_PREPEND_F -! space2_id - dataspace of selection to use -! -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: - NONE -! -! Programmer: Elena Pourmal -! October 7, 2002 -! -! Modifications: -! -! Comment:Commented out until 1.6 release(?) 10/08/2002 EIP -!---------------------------------------------------------------------- - -! SUBROUTINE h5sselect_select_f(space1_id, operator, space2_id, & -! hdferr) -! IMPLICIT NONE -! INTEGER(HID_T), INTENT(INOUT) :: space1_id ! Dataspace identifier to +! INTEGER(HID_T), INTENT(OUT) :: ds_id ! New dataspace identifier +! INTEGER, INTENT(OUT) :: hdferr ! Error code +! +! INTERFACE +! INTEGER FUNCTION h5scombine_select_c(space1_id, operator, & +! space2_id, ds_id) +! USE H5GLOBAL +! !DEC$IF DEFINED(HDF5F90_WINDOWS) +! !DEC$ATTRIBUTES C,reference,decorate,alias:'H5SCOMBINE_SELECT_C'::h5scombine_select_c +! !DEC$ENDIF +! INTEGER(HID_T), INTENT(IN) :: space1_id +! INTEGER(HID_T), INTENT(IN) :: space2_id +! INTEGER, INTENT(IN) :: operator +! INTEGER(HID_T), INTENT(OUT) :: ds_id +! END FUNCTION h5scombine_select_c +! END INTERFACE + +! hdferr = h5scombine_select_c(space1_id, operator, space2_id, & +! ds_id) +! return + +! END SUBROUTINE h5scombine_select_f + +! !$! +! !$!****s* H5S/ +! !$! +! !$! NAME +! !$! h5sselect_select_f +! !$! +! !$! PURPOSE +! !$! Refine a hyperslab selection with an operation +! !$! using second hyperslab +! !$! +! !$! INPUTS +! !$! space1_id - dataspace of selection to modify +! !$! operator - flag, valid values are: +! !$! H5S_SELECT_NOOP_F +! !$! H5S_SELECT_SET_F +! !$! H5S_SELECT_OR_F +! !$! H5S_SELECT_AND_F +! !$! H5S_SELECT_XOR_F +! !$! H5S_SELECT_NOTB_F +! !$! H5S_SELECT_NOTA_F +! !$! H5S_SELECT_APPEND_F +! !$! H5S_SELECT_PREPEND_F +! !$! space2_id - dataspace of selection to use +! !$! +! !$! OUTPUTS +! !$! hdferr: - error code +! !$! Success: 0 +! !$! Failure: -1 +! !$! OPTIONAL PARAMETERS - NONE +! !$! +! !$! AUTHOR +! !$! Elena Pourmal +! !$! October 7, 2002 +! !$! +! !$! HISTORY +! !$! +! !$! +! !$! NOTESCommented out until 1.6 release(?) 10/08/2002 EIP +! !$! + +! ! SOURCE +! SUBROUTINE h5sselect_select_f(space1_id, operator, space2_id, & +! hdferr) +! IMPLICIT NONE +! INTEGER(HID_T), INTENT(INOUT) :: space1_id ! Dataspace identifier to ! modify -! INTEGER(HID_T), INTENT(IN) :: space2_id ! Second dataspace identifier -! INTEGER, INTENT(IN) :: operator ! Flag, valid values are: +! INTEGER(HID_T), INTENT(IN) :: space2_id ! Second dataspace identifier +! INTEGER, INTENT(IN) :: operator ! Flag, valid values are: ! H5S_SELECT_NOOP_F ! H5S_SELECT_SET_F ! H5S_SELECT_OR_F @@ -1672,53 +1665,50 @@ ! H5S_SELECT_APPEND_F ! H5S_SELECT_PREPEND_F ! -! INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTERFACE -! INTEGER FUNCTION h5sselect_select_c(space1_id, operator, & -! space2_id) -! USE H5GLOBAL -! !DEC$IF DEFINED(HDF5F90_WINDOWS) -! !DEC$ATTRIBUTES C,reference,decorate,alias:'H5SSELECT_SELECT_C'::h5sselect_select_c -! !DEC$ENDIF -! INTEGER(HID_T), INTENT(INOUT) :: space1_id -! INTEGER(HID_T), INTENT(IN) :: space2_id -! INTEGER, INTENT(IN) :: operator -! END FUNCTION h5sselect_select_c -! END INTERFACE - -! hdferr = h5sselect_select_c(space1_id, operator, space2_id) -! return - -! END SUBROUTINE h5sselect_select_f - -!---------------------------------------------------------------------- -! Name: h5sget_select_type_f -! -! Purpose: Retrieve the type of selection -! -! Inputs: -! space_id - dataspace iidentifier with selection -! Outputs: -! type - flag, valid values are: -! H5S_SEL_ERROR_F -! H5S_SEL_NONE_F -! H5S_SEL_POINTS_F -! H5S_SEL_HYPERSLABS_F -! H5S_SEL_ALL_F -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: - NONE -! -! Programmer: Elena Pourmal -! October 7, 2002 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - +! INTEGER, INTENT(OUT) :: hdferr ! Error code + +! INTERFACE +! INTEGER FUNCTION h5sselect_select_c(space1_id, operator, & +! space2_id) +! USE H5GLOBAL +! !DEC$IF DEFINED(HDF5F90_WINDOWS) +! !DEC$ATTRIBUTES C,reference,decorate,alias:'H5SSELECT_SELECT_C'::h5sselect_select_c +! !DEC$ENDIF +! INTEGER(HID_T), INTENT(INOUT) :: space1_id +! INTEGER(HID_T), INTENT(IN) :: space2_id +! INTEGER, INTENT(IN) :: operator +! END FUNCTION h5sselect_select_c +! END INTERFACE + +! hdferr = h5sselect_select_c(space1_id, operator, space2_id) +! return + +! END SUBROUTINE h5sselect_select_f + +! +!****s* H5S/h5sget_select_type_f +! +! NAME +! h5sget_select_type_f +! +! PURPOSE +! Retrieve the type of selection +! +! INPUTS +! space_id - dataspace iidentifier with selection +! OUTPUTS +! type - flag, valid values are: +! H5S_SEL_ERROR_F +! H5S_SEL_NONE_F +! H5S_SEL_POINTS_F +! H5S_SEL_HYPERSLABS_F +! H5S_SEL_ALL_F +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! October 7, 2002 +! +! SOURCE SUBROUTINE h5sget_select_type_f(space_id, type, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(INOUT) :: space_id ! Dataspace identifier to @@ -1729,7 +1719,7 @@ ! H5S_SEL_HYPERSLABS_F ! H5S_SEL_ALL_F INTEGER, INTENT(OUT) :: hdferr ! Error code - +!***** INTERFACE INTEGER FUNCTION h5sget_select_type_c(space_id, type) USE H5GLOBAL @@ -1746,35 +1736,31 @@ END SUBROUTINE h5sget_select_type_f -!---------------------------------------------------------------------- -! Name: H5Sdecode_f -! -! Purpose: Decode a binary object description of data space and return a new object handle. ! -! Inputs: -! buf - Buffer for the data space object to be decoded. -! obj_id - Object ID -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 +!****s* H5S/H5Sdecode_f ! -! Optional parameters: - NONE +! NAME +! H5Sdecode_f ! -! Programmer: M.S. Breitenfeld -! March 26, 2008 +! PURPOSE +! Decode a binary object description of data space and return a new object handle. ! -! Modifications: +! INPUTS +! buf - Buffer for the data space object to be decoded. +! obj_id - Object ID +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! March 26, 2008 +! SOURCE SUBROUTINE h5sdecode_f(buf, obj_id, hdferr) IMPLICIT NONE CHARACTER(LEN=*), INTENT(IN) :: buf ! Buffer for the data space object to be decoded. INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object ID INTEGER, INTENT(OUT) :: hdferr ! Error code - +!***** INTERFACE INTEGER FUNCTION h5sdecode_c(buf, obj_id) USE H5GLOBAL @@ -1791,38 +1777,34 @@ END SUBROUTINE h5sdecode_f -!---------------------------------------------------------------------- -! Name: H5Sencode_f ! -! Purpose: Encode a data space object description into a binary buffer. +!****s* H5S/H5Sencode_f ! -! Inputs: -! obj_id - Identifier of the object to be encoded. -! buf - Buffer for the object to be encoded into. -! nalloc - The size of the allocated buffer. -! Outputs: -! nalloc - The size of the buffer needed. -! hdferr: - error code -! Success: 0 -! Failure: -1 +! NAME +! H5Sencode_f ! -! Optional parameters: - NONE +! PURPOSE +! Encode a data space object description into a binary buffer. ! -! Programmer: M.S. Breitenfeld -! March 26, 2008 +! INPUTS +! obj_id - Identifier of the object to be encoded. +! buf - Buffer for the object to be encoded into. +! nalloc - The size of the allocated buffer. +! OUTPUTS +! nalloc - The size of the buffer needed. +! hdferr - Returns 0 if successful and -1 if fails. ! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! March 26, 2008 +! SOURCE SUBROUTINE h5sencode_f(obj_id, buf, nalloc, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: obj_id ! Identifier of the object to be encoded. CHARACTER(LEN=*), INTENT(OUT) :: buf ! Buffer for the object to be encoded into. INTEGER(SIZE_T), INTENT(INOUT) :: nalloc ! The size of the allocated buffer. INTEGER, INTENT(OUT) :: hdferr ! Error code - +!***** INTERFACE INTEGER FUNCTION h5sencode_c(buf, obj_id, nalloc) @@ -1841,38 +1823,32 @@ END SUBROUTINE h5sencode_f - -!---------------------------------------------------------------------- -! Name: h5sextent_equal_f +!****s* H5S/h5sextent_equal_f ! -! Purpose: Determines whether two dataspace extents are equal. +! NAME +! h5sextent_equal_f ! -! Inputs: -! space1_id - First dataspace identifier. -! space2_id - Second dataspace identifier. -! Outputs: -! Equal - .TRUE. if equal, .FALSE. if unequal. -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Determines whether two dataspace extents are equal. ! -! Programmer: M.S. Breitenfeld -! April 2, 2008 +! INPUTS +! space1_id - First dataspace identifier. +! space2_id - Second dataspace identifier. +! OUTPUTS +! Equal - .TRUE. if equal, .FALSE. if unequal. +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! M. Scot Breitenfeld +! April 2, 2008 ! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5sextent_equal_f(space1_id, space2_id, equal, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space1_id ! First dataspace identifier. INTEGER(HID_T), INTENT(IN) :: space2_id ! Second dataspace identifier. LOGICAL, INTENT(OUT) :: Equal ! .TRUE. if equal, .FALSE. if unequal. INTEGER, INTENT(OUT) :: hdferr ! Error code - +!***** INTEGER(HID_T) :: c_equal INTERFACE diff --git a/fortran/src/H5Tf.c b/fortran/src/H5Tf.c index 37cfca0..c8ff6e0 100644 --- a/fortran/src/H5Tf.c +++ b/fortran/src/H5Tf.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5Tf/H5Tf + * PURPOSE + * This file contains C stubs for H5T Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,28 +16,38 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for H5T Fortran APIs */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" -/*---------------------------------------------------------------------------- - * Name: h5topen_c - * Purpose: Call H5Topen2 to open a datatype - * Inputs: loc_id - file or group identifier +/****if* H5Tf/h5topen_c + * NAME + * h5topen_c + * PURPOSE + * Call H5Topen2 to open a datatype + * INPUTS + * loc_id - file or group identifier * name - name of the datatype within file or group * namelen - name length * tapl_id - datatype access property list identifier - * Outputs: type_id - dataset identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * type_id - dataset identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5topen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *tapl_id) +/******/ { char *c_name = NULL; hid_t c_type_id; @@ -61,26 +76,34 @@ done: } -/*---------------------------------------------------------------------------- - * Name: h5tcommit_c - * Purpose: Call H5Tcommit2 to commit a datatype - * Inputs: loc_id - file or group identifier +/****if* H5Tf/h5tcommit_c + * NAME + * h5tcommit_c + * PURPOSE + * Call H5Tcommit2 to commit a datatype + * INPUTS + * loc_id - file or group identifier * name - name of the datatype within file or group * namelen - name length * type_id - dataset identifier * lcpl_id - Link creation property list * tcpl_id - Datatype creation property list * tapl_id - Datatype access property list - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: + * HISTORY + * * - Added passing optional parameters for version 1.8 - * M.S. Breitenfeld - *---------------------------------------------------------------------------*/ + * M. Scot Breitenfeld + * SOURCE +*/ int_f nh5tcommit_c(hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *lcpl_id, hid_t_f *tcpl_id, hid_t_f *tapl_id) +/******/ { char *c_name = NULL; int ret_value = -1; @@ -101,18 +124,26 @@ done: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tclose_c - * Purpose: Call H5Tclose to close the datatype - * Inputs: type_id - identifier of the datatype to be closed - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Tf/h5tclose_c + * NAME + * h5tclose_c + * PURPOSE + * Call H5Tclose to close the datatype + * INPUTS + * type_id - identifier of the datatype to be closed + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tclose_c ( hid_t_f *type_id ) +/******/ { int ret_value = 0; hid_t c_type_id; @@ -123,19 +154,28 @@ nh5tclose_c ( hid_t_f *type_id ) } -/*---------------------------------------------------------------------------- - * Name: h5tcopy_c - * Purpose: Call H5Tcopy to copy a datatype - * Inputs: type_id - identifier of the datatype to be copied - * Outputs: new_type_id - identifier of the new datatype - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Tf/h5tcopy_c + * NAME + * h5tcopy_c + * PURPOSE + * Call H5Tcopy to copy a datatype + * INPUTS + * type_id - identifier of the datatype to be copied + * OUTPUTS + * new_type_id - identifier of the new datatype + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tcopy_c ( hid_t_f *type_id , hid_t_f *new_type_id) +/******/ { int ret_value = 0; hid_t c_type_id; @@ -148,20 +188,29 @@ nh5tcopy_c ( hid_t_f *type_id , hid_t_f *new_type_id) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tequal_c - * Purpose: Call H5Tequal to copy a datatype - * Inputs: type1_id - datatype identifier +/****if* H5Tf/h5tequal_c + * NAME + * h5tequal_c + * PURPOSE + * Call H5Tequal to copy a datatype + * INPUTS + * type1_id - datatype identifier * type2_id - datatype identifier - * Outputs: c_flag - flag; indicates if two datatypes are equal or not. - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * c_flag - flag; indicates if two datatypes are equal or not. + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, February 22, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tequal_c ( hid_t_f *type1_id , hid_t_f *type2_id, int_f *c_flag) +/******/ { int ret_value = -1; hid_t c_type1_id, c_type2_id; @@ -177,11 +226,15 @@ nh5tequal_c ( hid_t_f *type1_id , hid_t_f *type2_id, int_f *c_flag) } -/*---------------------------------------------------------------------------- - * Name: h5tget_class_c - * Purpose: Call H5Tget_class to determine the datatype class - * Inputs: type_id - identifier of the dataspace - * Outputs: classtype - class type; possible values are: +/****if* H5Tf/h5tget_class_c + * NAME + * h5tget_class_c + * PURPOSE + * Call H5Tget_class to determine the datatype class + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * classtype - class type; possible values are: * H5T_NO_CLASS_F (-1) * H5T_INTEGER_F (0) * H5T_FLOAT_F (1) @@ -192,14 +245,19 @@ nh5tequal_c ( hid_t_f *type1_id , hid_t_f *type2_id, int_f *c_flag) * H5T_COMPOUNDF (6) * H5T_REFERENCE_F (7) * H5T_ENUMF (8) - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_class_c ( hid_t_f *type_id , int_f *classtype) +/******/ { int ret_value = 0; hid_t c_type_id; @@ -228,22 +286,31 @@ nh5tget_class_c ( hid_t_f *type_id , int_f *classtype) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_order_c - * Purpose: Call H5Tget_order to determine byte order - * Inputs: type_id - identifier of the dataspace - * Outputs: order; possible values are: +/****if* H5Tf/h5tget_order_c + * NAME + * h5tget_order_c + * PURPOSE + * Call H5Tget_order to determine byte order + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * order; possible values are: * H5T_ORDER_LE_F (0) * H5T_ORDER_BE_F (1) * H5T_ORDER_VAX_F (2) - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_order_c ( hid_t_f *type_id , int_f *order) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -263,22 +330,30 @@ nh5tget_order_c ( hid_t_f *type_id , int_f *order) } -/*---------------------------------------------------------------------------- - * Name: h5tset_order_c - * Purpose: Call H5Tset_order to set byte order - * Inputs: type_id - identifier of the dataspace +/****if* H5Tf/h5tset_order_c + * NAME + * h5tset_order_c + * PURPOSE + * Call H5Tset_order to set byte order + * INPUTS + * type_id - identifier of the dataspace * order; possible values are: * H5T_ORDER_LE_F (0) * H5T_ORDER_BE_F (1) * H5T_ORDER_VAX_F (2) - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tset_order_c ( hid_t_f *type_id , int_f *order) +/******/ { int ret_value = 0; hid_t c_type_id; @@ -296,19 +371,28 @@ nh5tset_order_c ( hid_t_f *type_id , int_f *order) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_size_c - * Purpose: Call H5Tget_size to get size of the datatype - * Inputs: type_id - identifier of the dataspace - * Outputs: size (in bytes) - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Tf/h5tget_size_c + * NAME + * h5tget_size_c + * PURPOSE + * Call H5Tget_size to get size of the datatype + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * size (in bytes) + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_size_c ( hid_t_f *type_id , size_t_f *size) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -322,19 +406,28 @@ nh5tget_size_c ( hid_t_f *type_id , size_t_f *size) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tset_size_c - * Purpose: Call H5Tget_size to get size of the datatype - * Inputs: type_id - identifier of the dataspace - * Outputs: size (in bytes) - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Tf/h5tset_size_c + * NAME + * h5tset_size_c + * PURPOSE + * Call H5Tget_size to get size of the datatype + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * size (in bytes) + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Saturday, August 14, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tset_size_c ( hid_t_f *type_id , size_t_f *size) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -349,19 +442,28 @@ nh5tset_size_c ( hid_t_f *type_id , size_t_f *size) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_precision_c - * Purpose: Call H5Tget_precision to get precision of the datatype - * Inputs: type_id - identifier of the dataspace - * Outputs: precision - number of significant bits - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU +/****if* H5Tf/h5tget_precision_c + * NAME + * h5tget_precision_c + * PURPOSE + * Call H5Tget_precision to get precision of the datatype + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * precision - number of significant bits + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Tuesday, January 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_precision_c ( hid_t_f *type_id , size_t_f *precision) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -375,19 +477,27 @@ nh5tget_precision_c ( hid_t_f *type_id , size_t_f *precision) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tset_precision_c - * Purpose: Call H5Tset_precision to set precision of the datatype - * Inputs: type_id - identifier of the dataspace +/****if* H5Tf/h5tset_precision_c + * NAME + * h5tset_precision_c + * PURPOSE + * Call H5Tset_precision to set precision of the datatype + * INPUTS + * type_id - identifier of the dataspace * precision - number of significant bits - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Tuesday, January 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tset_precision_c ( hid_t_f *type_id , size_t_f *precision) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -402,20 +512,29 @@ nh5tset_precision_c ( hid_t_f *type_id , size_t_f *precision) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_offset_c - * Purpose: Call H5Tget_offset to get bit offset of the first +/****if* H5Tf/h5tget_offset_c + * NAME + * h5tget_offset_c + * PURPOSE + * Call H5Tget_offset to get bit offset of the first * significant bit of the datatype - * Inputs: type_id - identifier of the dataspace - * Outputs: offset - bit offset of the first significant bit - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * offset - bit offset of the first significant bit + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Tuesday, January 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_offset_c ( hid_t_f *type_id , size_t_f *offset) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -430,20 +549,28 @@ nh5tget_offset_c ( hid_t_f *type_id , size_t_f *offset) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tset_offset_c - * Purpose: Call H5Tset_offset to set bit offset of the first +/****if* H5Tf/h5tset_offset_c + * NAME + * h5tset_offset_c + * PURPOSE + * Call H5Tset_offset to set bit offset of the first * significant bit of the datatype - * Inputs: type_id - identifier of the dataspace + * INPUTS + * type_id - identifier of the dataspace * offset - bit offset of the first significant bit - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Tuesday, January 25, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tset_offset_c ( hid_t_f *type_id , size_t_f *offset) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -458,22 +585,31 @@ nh5tset_offset_c ( hid_t_f *type_id , size_t_f *offset) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_pad_c - * Purpose: Call H5Tget_pad to get the padding type of the least and +/****if* H5Tf/h5tget_pad_c + * NAME + * h5tget_pad_c + * PURPOSE + * Call H5Tget_pad to get the padding type of the least and * most-significant bit padding * - * Inputs: type_id - identifier of the dataspace - * Outputs: lsbpad - padding type of the least significant bit + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * lsbpad - padding type of the least significant bit * msbpad - padding type of the least significant bit - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Wednesday, January 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_pad_c ( hid_t_f *type_id , int_f * lsbpad, int_f * msbpad) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -490,23 +626,32 @@ nh5tget_pad_c ( hid_t_f *type_id , int_f * lsbpad, int_f * msbpad) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tset_pad_c - * Inputs: type_id - identifier of the dataspace - * Purpose: Call H5Tset_pad to set the padding type of the least and +/****if* H5Tf/h5tset_pad_c + * NAME + * h5tset_pad_c + * INPUTS + * type_id - identifier of the dataspace + * PURPOSE + * Call H5Tset_pad to set the padding type of the least and * most-significant bit padding * - * Inputs: type_id - identifier of the dataspace + * INPUTS + * type_id - identifier of the dataspace * lsbpad - padding type of the least significant bit * msbpad - padding type of the least significant bit - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Wednesday, January 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tset_pad_c ( hid_t_f *type_id, int_f * lsbpad, int_f* msbpad ) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -522,19 +667,28 @@ nh5tset_pad_c ( hid_t_f *type_id, int_f * lsbpad, int_f* msbpad ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_sign_c - * Purpose: Call H5Tget_sign to get sign type for an integer type - * Inputs: type_id - identifier of the dataspace - * Outputs: sign - sign type for an integer type - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU +/****if* H5Tf/h5tget_sign_c + * NAME + * h5tget_sign_c + * PURPOSE + * Call H5Tget_sign to get sign type for an integer type + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * sign - sign type for an integer type + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Wednesday, January 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_sign_c ( hid_t_f *type_id , int_f *sign) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -548,19 +702,27 @@ nh5tget_sign_c ( hid_t_f *type_id , int_f *sign) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tset_sign_c - * Purpose: Call H5Tset_sign to set sign type for an integer type - * Inputs: type_id - identifier of the dataspace +/****if* H5Tf/h5tset_sign_c + * NAME + * h5tset_sign_c + * PURPOSE + * Call H5Tset_sign to set sign type for an integer type + * INPUTS + * type_id - identifier of the dataspace * sign - sign type for an integer typ - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Wednesday, January 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tset_sign_c ( hid_t_f *type_id , int_f* sign) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -576,23 +738,32 @@ nh5tset_sign_c ( hid_t_f *type_id , int_f* sign) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_fields_c - * Purpose: Call H5Tget_fields to get floating point datatype +/****if* H5Tf/h5tget_fields_c + * NAME + * h5tget_fields_c + * PURPOSE + * Call H5Tget_fields to get floating point datatype * bit field information - * Inputs: type_id - identifier of the dataspace - * Outputs: epos - exponent bit-position + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * epos - exponent bit-position * esize - size of exponent in bits * mpos - mantissa bit-position * msize - size of mantissa in bits - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Thursday, January 27, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_fields_c ( hid_t_f *type_id , size_t_f *spos, size_t_f *epos, size_t_f* esize, size_t_f* mpos, size_t_f* msize) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -611,23 +782,31 @@ nh5tget_fields_c ( hid_t_f *type_id , size_t_f *spos, size_t_f *epos, size_t_f* return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tset_fields_c - * Purpose: Call H5Tset_fields to set floating point datatype +/****if* H5Tf/h5tset_fields_c + * NAME + * h5tset_fields_c + * PURPOSE + * Call H5Tset_fields to set floating point datatype * bit field information - * Inputs: type_id - identifier of the dataspace + * INPUTS + * type_id - identifier of the dataspace * epos - exponent bit-position * esize - size of exponent in bits * mpos - mantissa bit-position * msize - size of mantissa in bits - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Wednesday, January 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tset_fields_c ( hid_t_f *type_id, size_t_f *spos, size_t_f *epos, size_t_f* esize, size_t_f* mpos, size_t_f* msize) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -647,20 +826,29 @@ nh5tset_fields_c ( hid_t_f *type_id, size_t_f *spos, size_t_f *epos, size_t_f* e return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_ebias_c - * Purpose: Call H5Tget_ebias to get exponent bias of a +/****if* H5Tf/h5tget_ebias_c + * NAME + * h5tget_ebias_c + * PURPOSE + * Call H5Tget_ebias to get exponent bias of a * floating-point type of the datatype - * Inputs: type_id - identifier of the dataspace - * Outputs: ebias - exponent bias of a floating-point type of the datatype - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * ebias - exponent bias of a floating-point type of the datatype + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, January 27, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_ebias_c ( hid_t_f *type_id , size_t_f *ebias) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -675,20 +863,28 @@ nh5tget_ebias_c ( hid_t_f *type_id , size_t_f *ebias) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tset_ebias_c - * Purpose: Call H5Tset_ebias to set exponent bias of a +/****if* H5Tf/h5tset_ebias_c + * NAME + * h5tset_ebias_c + * PURPOSE + * Call H5Tset_ebias to set exponent bias of a * floating-point type of the datatype - * Inputs: type_id - identifier of the dataspace + * INPUTS + * type_id - identifier of the dataspace * ebias - exponent bias of a floating-point type of the datatyp - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, January 27, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tset_ebias_c ( hid_t_f *type_id , size_t_f *ebias) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -704,20 +900,29 @@ nh5tset_ebias_c ( hid_t_f *type_id , size_t_f *ebias) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_norm_c - * Purpose: Call H5Tget_norm to get mantissa normalization +/****if* H5Tf/h5tget_norm_c + * NAME + * h5tget_norm_c + * PURPOSE + * Call H5Tget_norm to get mantissa normalization * of a floating-point datatype - * Inputs: type_id - identifier of the dataspace - * Outputs: norm - mantissa normalization of a floating-point type - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * norm - mantissa normalization of a floating-point type + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, January 27, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_norm_c ( hid_t_f *type_id , int_f *norm) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -732,20 +937,28 @@ nh5tget_norm_c ( hid_t_f *type_id , int_f *norm) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tset_norm_c - * Purpose: Call H5Tset_norm to set mantissa normalization of +/****if* H5Tf/h5tset_norm_c + * NAME + * h5tset_norm_c + * PURPOSE + * Call H5Tset_norm to set mantissa normalization of * floating-point type of the datatype - * Inputs: type_id - identifier of the dataspace + * INPUTS + * type_id - identifier of the dataspace * norm - mantissa normalization of a floating-point type - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Friday, January 27, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tset_norm_c ( hid_t_f *type_id , int_f *norm) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -761,22 +974,31 @@ nh5tset_norm_c ( hid_t_f *type_id , int_f *norm) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_inpad_c - * Purpose: Call H5Tget_inpad to get the padding type for +/****if* H5Tf/h5tget_inpad_c + * NAME + * h5tget_inpad_c + * PURPOSE + * Call H5Tget_inpad to get the padding type for * unused bits in floating-point datatypes * - * Inputs: type_id - identifier of the dataspace - * Outputs: padtype - padding type for + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * padtype - padding type for * unused bits in floating-point datatype - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Wednesday, January 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_inpad_c ( hid_t_f *type_id , int_f * padtype) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -791,23 +1013,32 @@ nh5tget_inpad_c ( hid_t_f *type_id , int_f * padtype) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tset_inpad_c - * Inputs: type_id - identifier of the dataspace - * Purpose: Call H5Tset_inpad to set the padding type +/****if* H5Tf/h5tset_inpad_c + * NAME + * h5tset_inpad_c + * INPUTS + * type_id - identifier of the dataspace + * PURPOSE + * Call H5Tset_inpad to set the padding type * unused bits in floating-point datatype * - * Inputs: type_id - identifier of the dataspace + * INPUTS + * type_id - identifier of the dataspace * padtype - padding type for unused bits * in floating-point datatypes - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Wednesday, January 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tset_inpad_c ( hid_t_f *type_id, int_f * padtype) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -823,21 +1054,30 @@ nh5tset_inpad_c ( hid_t_f *type_id, int_f * padtype) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_cset_c - * Purpose: Call H5Tget_cset to get character set +/****if* H5Tf/h5tget_cset_c + * NAME + * h5tget_cset_c + * PURPOSE + * Call H5Tget_cset to get character set * type of a string datatype * - * Inputs: type_id - identifier of the dataspace - * Outputs: cset - character set type of a string datatype - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * cset - character set type of a string datatype + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Wednesday, January 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_cset_c ( hid_t_f *type_id , int_f * cset) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -852,22 +1092,31 @@ nh5tget_cset_c ( hid_t_f *type_id , int_f * cset) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tset_cset_c - * Inputs: type_id - identifier of the dataspace - * Purpose: Call H5Tset_cset to set character set +/****if* H5Tf/h5tset_cset_c + * NAME + * h5tset_cset_c + * INPUTS + * type_id - identifier of the dataspace + * PURPOSE + * Call H5Tset_cset to set character set * type of a string datatype * - * Inputs: type_id - identifier of the dataspace + * INPUTS + * type_id - identifier of the dataspace * cset - character set type of a string datatype - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Wednesday, January 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tset_cset_c ( hid_t_f *type_id, int_f * cset) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -883,20 +1132,28 @@ nh5tset_cset_c ( hid_t_f *type_id, int_f * cset) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_strpad_c - * Purpose: Call H5Tget_strpad to get string padding method +/****if* H5Tf/h5tget_strpad_c + * NAME + * h5tget_strpad_c + * PURPOSE + * Call H5Tget_strpad to get string padding method * for a string datatype - * Inputs: type_id - identifier of the dataspace - * Outputs: strpad - string padding method for a string datatype - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * strpad - string padding method for a string datatype + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Wednesday, January 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ - + * HISTORY + * + * SOURCE +*/ int_f nh5tget_strpad_c ( hid_t_f *type_id , int_f * strpad) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -911,22 +1168,31 @@ nh5tget_strpad_c ( hid_t_f *type_id , int_f * strpad) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tset_strpad_c - * Inputs: type_id - identifier of the dataspace - * Purpose: Call H5Tset_strpad to set string padding method +/****if* H5Tf/h5tset_strpad_c + * NAME + * h5tset_strpad_c + * INPUTS + * type_id - identifier of the dataspace + * PURPOSE + * Call H5Tset_strpad to set string padding method * for a string datatype * - * Inputs: type_id - identifier of the dataspace + * INPUTS + * type_id - identifier of the dataspace * strpad - string padding method for a string datatype - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Wednesday, January 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tset_strpad_c ( hid_t_f *type_id, int_f * strpad) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -942,20 +1208,29 @@ nh5tset_strpad_c ( hid_t_f *type_id, int_f * strpad) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_nmembers_c - * Purpose: Call H5Tget_nmembers to get number of fields +/****if* H5Tf/h5tget_nmembers_c + * NAME + * h5tget_nmembers_c + * PURPOSE + * Call H5Tget_nmembers to get number of fields * in a compound datatype - * Inputs: type_id - identifier of the dataspace - * Outputs: num_members - number of fields in a compound datatype - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * num_members - number of fields in a compound datatype + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Thursday, February 3, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_nmembers_c ( hid_t_f *type_id , int_f * num_members) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -968,21 +1243,30 @@ nh5tget_nmembers_c ( hid_t_f *type_id , int_f * num_members) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_member_name_c - * Purpose: Call H5Tget_member_name to get name +/****if* H5Tf/h5tget_member_name_c + * NAME + * h5tget_member_name_c + * PURPOSE + * Call H5Tget_member_name to get name * of a compound datatype - * Inputs: type_id - identifier of the dataspace - * Outputs: member_name - name of a field of a compound datatype - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * member_name - name of a field of a compound datatype + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Thursday, February 3, 2000 - * Modifications: Elena Pourmal + * HISTORY + * Elena Pourmal * Added namelen parameter to return length of the name to Fortran user - *---------------------------------------------------------------------------*/ + * SOURCE +*/ int_f nh5tget_member_name_c ( hid_t_f *type_id ,int_f* idx, _fcd member_name, int_f *namelen) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -1000,21 +1284,30 @@ nh5tget_member_name_c ( hid_t_f *type_id ,int_f* idx, _fcd member_name, int_f *n ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_member_index_c - * Purpose: Call H5Tget_member_index to get an index of +/****if* H5Tf/h5tget_member_index_c + * NAME + * h5tget_member_index_c + * PURPOSE + * Call H5Tget_member_index to get an index of * the specified datatype filed or member. - * Inputs: type_id - datatype identifier + * INPUTS + * type_id - datatype identifier * name - name of the datatype within file or group * namelen - name length - * Outputs: index - 0-based index - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * OUTPUTS + * index - 0-based index + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, September 26, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_member_index_c (hid_t_f *type_id, _fcd name, int_f *namelen, int_f *idx) +/******/ { int ret_value = -1; char *c_name; @@ -1044,23 +1337,32 @@ DONE: } -/*---------------------------------------------------------------------------- - * Name: h5tget_member_offset_c - * Purpose: Call H5Tget_member_offset to get byte offset of the +/****if* H5Tf/h5tget_member_offset_c + * NAME + * h5tget_member_offset_c + * PURPOSE + * Call H5Tget_member_offset to get byte offset of the * beginning of a field within a compound datatype with * respect to the beginning of the compound data type datum - * Inputs: type_id - identifier of the dataspace + * INPUTS + * type_id - identifier of the dataspace * member_no - Number of the field whose offset is requested - * Outputs: offset - byte offset of the the beginning of the field of + * OUTPUTS + * offset - byte offset of the the beginning of the field of * a compound datatype - * Returns: always 0 - * Programmer: XIANGYANG SU + * RETURNS + * always 0 + * AUTHOR + * XIANGYANG SU * Thursday, February 3, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_member_offset_c ( hid_t_f *type_id ,int_f* member_no, size_t_f * offset) +/******/ { int ret_value = -1; size_t c_offset; @@ -1075,20 +1377,29 @@ nh5tget_member_offset_c ( hid_t_f *type_id ,int_f* member_no, size_t_f * offset) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_array_dims_c - * Purpose: Call H5Tget_array_dims2 to get +/****if* H5Tf/h5tget_array_dims_c + * NAME + * h5tget_array_dims_c + * PURPOSE + * Call H5Tget_array_dims2 to get * dimensions of array datatype - * Inputs: type_id - identifier of the array datatype - * Outputs: dims - dimensions(sizes of dimensions) of the array - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * INPUTS + * type_id - identifier of the array datatype + * OUTPUTS + * dims - dimensions(sizes of dimensions) of the array + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, November 16, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_array_dims_c ( hid_t_f *type_id , hsize_t_f * dims) +/******/ { hsize_t c_dims[H5S_MAX_RANK]; int rank, i; @@ -1109,20 +1420,29 @@ DONE: return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_array_ndims_c - * Purpose: Call H5Tget_array_ndims to get number +/****if* H5Tf/h5tget_array_ndims_c + * NAME + * h5tget_array_ndims_c + * PURPOSE + * Call H5Tget_array_ndims to get number * of dimensions of array datatype - * Inputs: type_id - identifier of the array datatype - * Outputs: ndims - number of dimensions of the array - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * INPUTS + * type_id - identifier of the array datatype + * OUTPUTS + * ndims - number of dimensions of the array + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, November 16, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_array_ndims_c ( hid_t_f *type_id , int_f * ndims) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -1137,20 +1457,29 @@ nh5tget_array_ndims_c ( hid_t_f *type_id , int_f * ndims) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_super_c - * Purpose: Call H5Tget_super to get base datatype from which +/****if* H5Tf/h5tget_super_c + * NAME + * h5tget_super_c + * PURPOSE + * Call H5Tget_super to get base datatype from which * datatype was derived - * Inputs: type_id - identifier of the array datatype - * Outputs: base_type_id - base datatype identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * INPUTS + * type_id - identifier of the array datatype + * OUTPUTS + * base_type_id - base datatype identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, November 16, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_super_c ( hid_t_f *type_id , hid_t_f *base_type_id) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -1166,21 +1495,30 @@ nh5tget_super_c ( hid_t_f *type_id , hid_t_f *base_type_id) } -/*---------------------------------------------------------------------------- - * Name: h5tget_member_type_c - * Purpose: Call H5Tget_member_type to get the identifier of a copy of +/****if* H5Tf/h5tget_member_type_c + * NAME + * h5tget_member_type_c + * PURPOSE + * Call H5Tget_member_type to get the identifier of a copy of * the datatype of the field - * Inputs: type_id - identifier of the datatype + * INPUTS + * type_id - identifier of the datatype * field_idx - Field index (0-based) of the field type to retrieve - * Outputs: datatype - identifier of a copy of the datatype of the field - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * OUTPUTS + * datatype - identifier of a copy of the datatype of the field + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Thursday, February 3, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_member_type_c ( hid_t_f *type_id ,int_f* field_idx, hid_t_f * datatype) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -1196,19 +1534,27 @@ nh5tget_member_type_c ( hid_t_f *type_id ,int_f* field_idx, hid_t_f * datatype) } -/*---------------------------------------------------------------------------- - * Name: h5tcreate_c - * Purpose: Call H5Tcreate to create a datatype - * Inputs: cls - class type - * size - size of the class memeber - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Thursday, February 17, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ +/****if* H5Tf/h5tcreate_c + * NAME + * h5tcreate_c + * PURPOSE + * Call H5Tcreate to create a datatype + * INPUTS + * cls - class type + * size - size of the class memeber + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Thursday, February 17, 2000 + * HISTORY + * + * SOURCE +*/ int_f nh5tcreate_c(int_f *cls, size_t_f *size, hid_t_f *type_id) +/******/ { int ret_value = -1; H5T_class_t c_class; @@ -1224,22 +1570,30 @@ nh5tcreate_c(int_f *cls, size_t_f *size, hid_t_f *type_id) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tinsert_c - * Purpose: Call H5Tinsert to adds another member to the compound datatype - * Inputs: type_id - identifier of the datatype +/****if* H5Tf/h5tinsert_c + * NAME + * h5tinsert_c + * PURPOSE + * Call H5Tinsert to adds another member to the compound datatype + * INPUTS + * type_id - identifier of the datatype * name - Name of the field to insert * namelen - length of the name * offset - Offset in memory structure of the field to insert * field_id - datatype identifier of the new member - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Thursday, February 3, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tinsert_c(hid_t_f *type_id, _fcd name, int_f* namelen, size_t_f *offset, hid_t_f * field_id) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -1264,20 +1618,28 @@ nh5tinsert_c(hid_t_f *type_id, _fcd name, int_f* namelen, size_t_f *offset, hid_ } -/*---------------------------------------------------------------------------- - * Name: h5tpack_c - * Purpose: Call H5Tpack tor ecursively remove padding from +/****if* H5Tf/h5tpack_c + * NAME + * h5tpack_c + * PURPOSE + * Call H5Tpack tor ecursively remove padding from * within a compound datatype to make it more efficient * (space-wise) to store that data - * Inputs: type_id - identifier of the datatype - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * INPUTS + * type_id - identifier of the datatype + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Thursday, February 3, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tpack_c(hid_t_f * type_id) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -1291,20 +1653,28 @@ nh5tpack_c(hid_t_f * type_id) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tarray_create_c - * Purpose: Call H5Tarray_create2 to create array datatype - * Inputs: base_id - identifier of array base datatype +/****if* H5Tf/h5tarray_create_c + * NAME + * h5tarray_create_c + * PURPOSE + * Call H5Tarray_create2 to create array datatype + * INPUTS + * base_id - identifier of array base datatype * rank - array's rank * dims - Size of new member array * type_id - identifier of the array datatype - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Thursday, November 16, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tarray_create_c(hid_t_f * base_id, int_f *rank, hsize_t_f* dims, hid_t_f* type_id) +/******/ { hsize_t c_dims[H5S_MAX_RANK]; hid_t c_type_id; @@ -1329,20 +1699,29 @@ DONE: } -/*---------------------------------------------------------------------------- - * Name: h5tenum_create_c - * Purpose: Call H5Tenum_create to create a new enumeration datatype - * Inputs: parent_id - Datatype identifier for the base datatype - * Outputs: new_type_id - datatype identifier for the new +/****if* H5Tf/h5tenum_create_c + * NAME + * h5tenum_create_c + * PURPOSE + * Call H5Tenum_create to create a new enumeration datatype + * INPUTS + * parent_id - Datatype identifier for the base datatype + * OUTPUTS + * new_type_id - datatype identifier for the new * enumeration datatype - * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Xiangyang Su * Tuesday, February 15, 1999 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tenum_create_c ( hid_t_f *parent_id , hid_t_f *new_type_id) +/******/ { int ret_value = 0; hid_t c_parent_id; @@ -1356,21 +1735,29 @@ nh5tenum_create_c ( hid_t_f *parent_id , hid_t_f *new_type_id) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tenum_insert_c - * Purpose: Call H5Tenum_insert to insert a new enumeration datatype member. - * Inputs: type_id - identifier of the datatype +/****if* H5Tf/h5tenum_insert_c + * NAME + * h5tenum_insert_c + * PURPOSE + * Call H5Tenum_insert to insert a new enumeration datatype member. + * INPUTS + * type_id - identifier of the datatype * name - Name of the new member * namelen - length of the name * value - value of the new member - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Thursday, February 3, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tenum_insert_c(hid_t_f *type_id, _fcd name, int_f* namelen, int_f* value) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -1394,22 +1781,30 @@ nh5tenum_insert_c(hid_t_f *type_id, _fcd name, int_f* namelen, int_f* value) } -/*---------------------------------------------------------------------------- - * Name: h5tenum_nameof_c - * Purpose: Call H5Tenum_nameof to find the symbol name that corresponds to +/****if* H5Tf/h5tenum_nameof_c + * NAME + * h5tenum_nameof_c + * PURPOSE + * Call H5Tenum_nameof to find the symbol name that corresponds to * the specified value of the enumeration datatype type - * Inputs: type_id - identifier of the datatype + * INPUTS + * type_id - identifier of the datatype * namelen - length of the name * value - value of the enumeration datatype * Output: name - Name of the enumeration datatype - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Thursday, February 3, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tenum_nameof_c(hid_t_f *type_id, int_f* value, _fcd name, size_t_f* namelen) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -1430,22 +1825,30 @@ nh5tenum_nameof_c(hid_t_f *type_id, int_f* value, _fcd name, size_t_f* namelen) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tenum_valueof_c - * Purpose: Call H5Tenum_valueof to find the value of that corresponds to +/****if* H5Tf/h5tenum_valueof_c + * NAME + * h5tenum_valueof_c + * PURPOSE + * Call H5Tenum_valueof to find the value of that corresponds to * the specified name of the enumeration datatype type - * Inputs: type_id - identifier of the datatype + * INPUTS + * type_id - identifier of the datatype * name - Name of the enumeration datatype * namelen - length of name * Output: value - value of the enumeration datatype - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Thursday, February 3, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tenum_valueof_c(hid_t_f *type_id, _fcd name, int_f* namelen, int_f* value) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -1466,21 +1869,29 @@ nh5tenum_valueof_c(hid_t_f *type_id, _fcd name, int_f* namelen, int_f* value) } -/*---------------------------------------------------------------------------- - * Name: h5tget_member_value_c - * Purpose: Call H5Tget_member_value to get the value of an +/****if* H5Tf/h5tget_member_value_c + * NAME + * h5tget_member_value_c + * PURPOSE + * Call H5Tget_member_value to get the value of an * enumeration datatype member - * Inputs: type_id - identifier of the datatype + * INPUTS + * type_id - identifier of the datatype * member_no - Number of the enumeration datatype member. * Output: value - value of the enumeration datatype - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Thursday, February 3, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tget_member_value_c(hid_t_f *type_id, int_f* member_no, int_f* value) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -1498,21 +1909,30 @@ nh5tget_member_value_c(hid_t_f *type_id, int_f* member_no, int_f* value) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tset_tag_c - * Inputs: type_id - identifier of the dataspace - * Purpose: Call H5Tset_tag to set an opaque datatype tag - * Inputs: type_id - identifier of the dataspace +/****if* H5Tf/h5tset_tag_c + * NAME + * h5tset_tag_c + * INPUTS + * type_id - identifier of the dataspace + * PURPOSE + * Call H5Tset_tag to set an opaque datatype tag + * INPUTS + * type_id - identifier of the dataspace * tag - Unique ASCII string with which the opaque * datatype is to be tagged * namelen - length of tag - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU * Wednesday, January 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tset_tag_c(hid_t_f* type_id, _fcd tag, int_f* namelen) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -1532,20 +1952,29 @@ nh5tset_tag_c(hid_t_f* type_id, _fcd tag, int_f* namelen) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_tag_c - * Purpose: Call H5Tset_tag to set an opaque datatype tag - * Inputs: type_id - identifier of the datatype - * Outputs: tag - Unique ASCII string with which the opaque +/****if* H5Tf/h5tget_tag_c + * NAME + * h5tget_tag_c + * PURPOSE + * Call H5Tset_tag to set an opaque datatype tag + * INPUTS + * type_id - identifier of the datatype + * OUTPUTS + * tag - Unique ASCII string with which the opaque * datatype is to be tagged - * taglen - length of tag - * Returns: 0 on success, -1 on failure - * Programmer: XIANGYANG SU - * Wednesday, January 26, 2000 - * Modifications: - *---------------------------------------------------------------------------*/ + * taglen - length of tag + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * XIANGYANG SU + * Wednesday, January 26, 2000 + * HISTORY + * + * SOURCE +*/ int_f -nh5tget_tag_c(hid_t_f* type_id, _fcd tag, int_f* taglen) +nh5tget_tag_c(hid_t_f* type_id, _fcd tag, size_t_f* tag_size, int_f* taglen) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -1555,24 +1984,33 @@ nh5tget_tag_c(hid_t_f* type_id, _fcd tag, int_f* taglen) c_tag = H5Tget_tag(c_type_id); if (c_tag == NULL ) return ret_value; - HD5packFstring(c_tag, _fcdtocp(tag), strlen(c_tag)); + HD5packFstring(c_tag, _fcdtocp(tag), (size_t)*tag_size); *taglen = (int_f)HDstrlen(c_tag); HDfree(c_tag); ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tvlen_create_c - * Purpose: Call H5Tvlen_create to create VL dtatype - * Inputs: type_id - identifier of the base datatype - * Outputs: vltype_id - identifier of the VL datatype - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Tf/h5tvlen_create_c + * NAME + * h5tvlen_create_c + * PURPOSE + * Call H5Tvlen_create to create VL dtatype + * INPUTS + * type_id - identifier of the base datatype + * OUTPUTS + * vltype_id - identifier of the VL datatype + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, October 23, 2002 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tvlen_create_c(hid_t_f* type_id, hid_t_f *vltype_id) +/******/ { int ret_value = -1; hid_t c_type_id; @@ -1585,21 +2023,30 @@ nh5tvlen_create_c(hid_t_f* type_id, hid_t_f *vltype_id) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tis_variable_str_c - * Purpose: Call H5Tis_variable_str to detrmine if the datatype +/****if* H5Tf/h5tis_variable_str_c + * NAME + * h5tis_variable_str_c + * PURPOSE + * Call H5Tis_variable_str to detrmine if the datatype * is a variable string. - * Inputs: type_id - identifier of the dataspace - * Outputs: flag - 0 if not VL str, 1 if is not + * INPUTS + * type_id - identifier of the dataspace + * OUTPUTS + * flag - 0 if not VL str, 1 if is not * and negative on failure. - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, March 12 , 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag ) +/******/ { int ret_value = 0; hid_t c_type_id; @@ -1611,22 +2058,31 @@ nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag ) if ( status < 0 ) ret_value = -1; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_member_class_c - * Purpose: Call H5Tget_member_class to detrmine ithe class of the compound +/****if* H5Tf/h5tget_member_class_c + * NAME + * h5tget_member_class_c + * PURPOSE + * Call H5Tget_member_class to detrmine ithe class of the compound * datatype member - * Inputs: type_id - identifier of the dataspace + * INPUTS + * type_id - identifier of the dataspace * member_no - member's index - * Outputs: cls - member's class - * and negative on failure. - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Wednesday, April 6, 2005 - * Modifications: - *---------------------------------------------------------------------------*/ + * OUTPUTS + * class - member's class + * and negative on failure. + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Wednesday, April 6, 2005 + * HISTORY + * + * SOURCE +*/ int_f nh5tget_member_class_c ( hid_t_f *type_id , int_f *member_no, int_f *cls ) +/******/ { int ret_value = 0; hid_t c_type_id; @@ -1642,21 +2098,29 @@ nh5tget_member_class_c ( hid_t_f *type_id , int_f *member_no, int_f *cls ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tcommit_anon_c - * Purpose: Call H5Tcommit_anon - * Inputs: loc_id - file or group identifier +/****if* H5Tf/h5tcommit_anon_c + * NAME + * h5tcommit_anon_c + * PURPOSE + * Call H5Tcommit_anon + * INPUTS + * loc_id - file or group identifier * dtype_id - dataset identifier * tcpl_id - Datatype creation property list * tapl_id - Datatype access property list - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * February 25, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * February 25, 2008 + * HISTORY + * + * SOURCE +*/ int_f nh5tcommit_anon_c(hid_t_f *loc_id, hid_t_f *dtype_id, hid_t_f *tcpl_id, hid_t_f *tapl_id) +/******/ { int ret_value = -1; @@ -1670,19 +2134,26 @@ nh5tcommit_anon_c(hid_t_f *loc_id, hid_t_f *dtype_id, return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tcommitted_c - * Purpose: Call H5Tcommitted +/****if* H5Tf/h5tcommitted_c + * NAME + * h5tcommitted_c + * PURPOSE + * Call H5Tcommitted * dtype_id - dataset identifier - * Returns: a positive value, for TRUE, if the datatype has been committed, + * RETURNS + * a positive value, for TRUE, if the datatype has been committed, * or 0 (zero), for FALSE, if the datatype has not been committed. * Otherwise returns a negative value. - * Programmer: M.S. Breitenfeld - * February 25, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * AUTHOR + * M. Scot Breitenfeld + * February 25, 2008 + * HISTORY + * + * SOURCE +*/ int_f nh5tcommitted_c(hid_t_f *dtype_id) +/******/ { int_f ret_value; @@ -1694,22 +2165,31 @@ nh5tcommitted_c(hid_t_f *dtype_id) } -/*---------------------------------------------------------------------------- - * Name: h5tdecode_c - * Purpose: Call H5Tdecode - * Inputs: +/****if* H5Tf/h5tdecode_c + * NAME + * h5tdecode_c + * PURPOSE + * Call H5Tdecode + * INPUTS + * * buf - Buffer for the data space object to be decoded. - * Outputs: + * OUTPUTS + * * obj_id - Object_id (non-negative) * - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * April 9, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * April 9, 2008 + * HISTORY + * + * SOURCE +*/ int_f nh5tdecode_c ( _fcd buf, hid_t_f *obj_id ) +/******/ { int ret_value = -1; unsigned char *c_buf = NULL; /* Buffer to hold C string */ @@ -1731,21 +2211,29 @@ nh5tdecode_c ( _fcd buf, hid_t_f *obj_id ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tencode_c - * Purpose: Call H5Tencode - * Inputs: +/****if* H5Tf/h5tencode_c + * NAME + * h5tencode_c + * PURPOSE + * Call H5Tencode + * INPUTS + * * obj_id - Identifier of the object to be encoded. * buf - Buffer for the object to be encoded into. * nalloc - The size of the allocated buffer. - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * April 9, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * April 9, 2008 + * HISTORY + * + * SOURCE +*/ int_f nh5tencode_c (_fcd buf, hid_t_f *obj_id, size_t_f *nalloc ) +/******/ { int ret_value = -1; unsigned char *c_buf = NULL; /* Buffer to hold C string */ @@ -1793,19 +2281,28 @@ nh5tencode_c (_fcd buf, hid_t_f *obj_id, size_t_f *nalloc ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_create_plist_c - * Purpose: Call H5Tget_create_plist - * Inputs: dtype_id - Datatype identifier - * Outputs: dtpl_id - Datatype property list identifier - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * April 9, 2008 - * Modifications: N/A - *---------------------------------------------------------------------------*/ +/****if* H5Tf/h5tget_create_plist_c + * NAME + * h5tget_create_plist_c + * PURPOSE + * Call H5Tget_create_plist + * INPUTS + * dtype_id - Datatype identifier + * OUTPUTS + * dtpl_id - Datatype property list identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * April 9, 2008 + * HISTORY + * N/A + * SOURCE +*/ int_f nh5tget_create_plist_c ( hid_t_f *dtype_id, hid_t_f *dtpl_id) +/******/ { int_f ret_value=-1; /* Return value */ @@ -1816,21 +2313,30 @@ nh5tget_create_plist_c ( hid_t_f *dtype_id, hid_t_f *dtpl_id) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tcompiler_conv_c - * Purpose: Call H5Tcompiler_conv - * Inputs: +/****if* H5Tf/h5tcompiler_conv_c + * NAME + * h5tcompiler_conv_c + * PURPOSE + * Call H5Tcompiler_conv + * INPUTS + * * src_id - Identifier for the source datatype. * dst_id - Identifier for the destination datatype. - * Outputs: c_flag - flag; TRUE for compiler conversion, FALSE for library conversion - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * April 9, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * OUTPUTS + * c_flag - flag; TRUE for compiler conversion, FALSE for library conversion + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M.Scot Breitenfeld + * April 9, 2008 + * HISTORY + * + * SOURCE +*/ int_f nh5tcompiler_conv_c ( hid_t_f *src_id, hid_t_f *dst_id, int_f *c_flag) +/******/ { int ret_value = -1; htri_t status; @@ -1841,21 +2347,30 @@ nh5tcompiler_conv_c ( hid_t_f *src_id, hid_t_f *dst_id, int_f *c_flag) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5tget_native_type_c - * Purpose: Call H5Tget_native_type - * Inputs: +/****if* H5Tf/h5tget_native_type_c + * NAME + * h5tget_native_type_c + * PURPOSE + * Call H5Tget_native_type + * INPUTS + * * dtype_id - Datatype identifier for the dataset datatype. * direction - Direction of search. - * Outputs: native_dtype_id - The native datatype identifier for the specified dataset datatype - * Returns: 0 on success, -1 on failure - * Programmer: M.S. Breitenfeld - * June 18, 2008 - * Modifications: - *---------------------------------------------------------------------------*/ + * OUTPUTS + * native_dtype_id - The native datatype identifier for the specified dataset datatype + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * June 18, 2008 + * HISTORY + * + * SOURCE +*/ int_f nh5tget_native_type_c(hid_t_f *dtype_id, int_f *direction, hid_t_f *native_dtype_id) +/******/ { int ret_value = -1; hid_t status; @@ -1867,3 +2382,41 @@ nh5tget_native_type_c(hid_t_f *dtype_id, int_f *direction, hid_t_f *native_dtype return ret_value; } +/****if* H5Tf/h5tconvert_c + * NAME + * h5tconvert_c + * PURPOSE + * Call H5Tconvert + * INPUTS + * + * src_id - Identifier for the source datatype. + * dst_id - Identifier for the destination datatype. + * nelmts - Size of array buf. + * buf - Array containing pre-conversion values. + * background - Optional background buffer. + * plist_id - Dataset transfer property list identifier. + * + * OUTPUTS + * buf - Array containing post-conversion values. + * + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M. Scot Breitenfeld + * December 8, 2008 + * + * SOURCE +*/ +int_f +nh5tconvert_c(hid_t_f *src_id, hid_t_f *dst_id, size_t_f *nelmts, void *buf, void *background, hid_t_f *plist_id) +/******/ +{ + int ret_value = -1; + hid_t status; + + status = H5Tconvert( (hid_t)*src_id, (hid_t)*dst_id, (size_t)*nelmts, buf, background, (hid_t)*plist_id ); + if ( status < 0 ) return ret_value; + ret_value = 0; + return ret_value; +} + diff --git a/fortran/src/H5Tff.f90 b/fortran/src/H5Tff.f90 index c6c96d0..f5369d0 100644 --- a/fortran/src/H5Tff.f90 +++ b/fortran/src/H5Tff.f90 @@ -1,3 +1,15 @@ +!****h* ROBODoc/H5T +! +! NAME +! MODULE H5T +! +! PURPOSE +! This file contains Fortran interfaces for H5T functions. It includes +! all the functions that are independent on whether the Fortran 2003 functions +! are enabled or disabled. +! +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,44 +25,51 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! NOTES +! *** IMPORTANT *** +! If you add a new H5T function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. ! -! This file contains FORTRAN90 interfaces for H5T functions -! +!***** + MODULE H5T USE H5GLOBAL CONTAINS -!---------------------------------------------------------------------- -! Name: h5topen_f ! -! Purpose: Opens named datatype. +!****s* H5T/h5topen_f ! -! Inputs: -! loc_id - location identifier -! name - a datatype name -! Outputs: -! type_id - datatype identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! tapl_id - datatype access property list identifier. +! NAME +! h5topen_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Opens named datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! loc_id - location identifier +! name - a datatype name +! OUTPUTS +! type_id - datatype identifier +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! tapl_id - datatype access property list identifier. ! -! Added optional parameter 'tapl_id' for compatability -! with H5Topen2. April 9, 2009. +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Added optional parameter 'tapl_id' for compatability +! with H5Topen2. April 9, 2009. +! +! SOURCE SUBROUTINE h5topen_f(loc_id, name, type_id, hdferr, tapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -58,12 +77,10 @@ CONTAINS INTEGER(HID_T), INTENT(OUT) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tapl_id ! datatype access property list identifier - +!***** INTEGER :: namelen ! Name length INTEGER(HID_T) :: tapl_id_default -! -! MS FORTRAN needs explicit interface for C functions called here. -! + INTERFACE INTEGER FUNCTION h5topen_c(loc_id, name, namelen, type_id, tapl_id_default) USE H5GLOBAL @@ -86,42 +103,41 @@ CONTAINS hdferr = h5topen_c(loc_id, name, namelen, type_id, tapl_id_default) END SUBROUTINE h5topen_f - -!---------------------------------------------------------------------- -! Name: h5tcommit_f ! -! Purpose: Commits a transient datatype to a file, creating a -! new named datatype. +!****s* H5T/h5tcommit_f ! -! Inputs: -! loc_id - location identifier -! name - name of the datatype to be stored -! at the specified location -! type_id - identifier of a datatype to be stored -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! lcpl_id - Link creation property list -! tcpl_id - Datatype creation property list -! tapl_id - Datatype access property list +! NAME +! h5tcommit_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Commits a transient datatype to a file, creating a +! new named datatype. ! -! Modifications: - Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! loc_id - location identifier +! name - name of the datatype to be stored +! at the specified location +! type_id - identifier of a datatype to be stored +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! lcpl_id - Link creation property list +! tcpl_id - Datatype creation property list +! tapl_id - Datatype access property list ! -! - Added optional parameters introduced in version 1.8 -! M.S. Breitenfeld +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! +! HISTORY +! - Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 ! +! - Added optional parameters introduced in version 1.8 +! M. Scot Breitenfeld ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5tcommit_f(loc_id, name, type_id, hdferr, & lcpl_id, tcpl_id, tapl_id ) IMPLICIT NONE @@ -133,7 +149,7 @@ CONTAINS INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tcpl_id ! Datatype creation property list INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tapl_id ! Datatype access property list - +!***** INTEGER :: namelen ! Name length @@ -141,8 +157,6 @@ CONTAINS INTEGER(HID_T) :: tcpl_id_default INTEGER(HID_T) :: tapl_id_default -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tcommit_c(loc_id, name, namelen, type_id, & lcpl_id_default, tcpl_id_default, tapl_id_default ) @@ -175,43 +189,37 @@ CONTAINS lcpl_id_default, tcpl_id_default, tapl_id_default ) END SUBROUTINE h5tcommit_f - -!---------------------------------------------------------------------- -! Name: h5tcopy_f ! -! Purpose: iCreates a copy of exisiting datatype. +!****s* H5T/h5tcopy_f ! -! Inputs: -! type_id - datatype identifier -! Outputs: -! new_type_id - identifier of datatype's copy -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tcopy_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Creates a copy of exisiting datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! new_type_id - identifier of datatype's copy +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5tcopy_f(type_id, new_type_id, hdferr) +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! SOURCE + SUBROUTINE h5tcopy_f(type_id, new_type_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(HID_T), INTENT(OUT) :: new_type_id ! Identifier of datatype's copy INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tcopy_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tcopy_c(type_id, new_type_id) USE H5GLOBAL @@ -225,46 +233,41 @@ CONTAINS hdferr = h5tcopy_c(type_id, new_type_id) END SUBROUTINE h5tcopy_f - -!---------------------------------------------------------------------- -! Name: h5tequal_f -! -! Purpose: Determines whether two datatype identifiers refer -! to the same datatype. ! -! Inputs: -! type1_id - datatype identifier -! type2_id - datatype identifier -! Outputs: -! flag - TRUE/FALSE flag to indicate -! if two datatypes are equal -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tequal_f(type1_id, type2_id, flag, hdferr) +!****s* H5T/h5tequal_f +! +! NAME +! h5tequal_f +! +! PURPOSE +! Determines whether two datatype identifiers refer +! to the same datatype. +! +! INPUTS +! type1_id - datatype identifier +! type2_id - datatype identifier +! OUTPUTS +! flag - TRUE/FALSE flag to indicate +! if two datatypes are equal +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tequal_f(type1_id, type2_id, flag, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type1_id ! Datatype identifier INTEGER(HID_T), INTENT(IN) :: type2_id ! Datatype identifier LOGICAL, INTENT(OUT) :: flag ! TRUE/FALSE flag to indicate if two ! datatypes are equal INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTEGER :: c_flag - -! INTEGER, EXTERNAL :: h5tequal_c -! MS FORTRAN needs explicit interface for C functions called here INTERFACE INTEGER FUNCTION h5tequal_c(type1_id, type2_id, c_flag) USE H5GLOBAL @@ -281,40 +284,35 @@ CONTAINS hdferr = h5tequal_c(type1_id, type2_id, c_flag) if(c_flag .gt. 0) flag = .TRUE. END SUBROUTINE h5tequal_f - -!---------------------------------------------------------------------- -! Name: h5tclose_f ! -! Purpose: Releases a datatype. +!****s* H5T/h5tclose_f ! -! Inputs: -! type_id - datatype identifier -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tclose_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Releases a datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5tclose_f(type_id, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! SOURCE + SUBROUTINE h5tclose_f(type_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tclose_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tclose_c(type_id) USE H5GLOBAL @@ -327,44 +325,42 @@ CONTAINS hdferr = h5tclose_c(type_id) END SUBROUTINE h5tclose_f - -!---------------------------------------------------------------------- -! Name: h5tget_class_f -! -! Purpose: Returns the datatype class identifier. -! -! Inputs: -! type_id - datatype identifier -! Outputs: -! class - class, possible values are: -! H5T_NO_CLASS_F (-1) -! H5T_INTEGER_F (0) -! H5T_FLOAT_F (1) -! H5T_TIME_F (2) -! H5T_STRING_F (3) -! H5T_BITFIELD_F (4) -! H5T_OPAQUE_F (5) -! H5T_COMPOUND_F (6) -! H5T_REFERENCE_F (7) -! H5T_ENUM_F (8) -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5tget_class_f(type_id, class, hdferr) +! +!****s* H5T/h5tget_class_f +! +! NAME +! h5tget_class_f +! +! PURPOSE +! Returns the datatype class identifier. +! +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! class - class, possible values are: +! H5T_NO_CLASS_F (-1) +! H5T_INTEGER_F (0) +! H5T_FLOAT_F (1) +! H5T_TIME_F (2) +! H5T_STRING_F (3) +! H5T_BITFIELD_F (4) +! H5T_OPAQUE_F (5) +! H5T_COMPOUND_F (6) +! H5T_REFERENCE_F (7) +! H5T_ENUM_F (8) +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! SOURCE + SUBROUTINE h5tget_class_f(type_id, class, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: class @@ -380,10 +376,7 @@ CONTAINS ! H5T_REFERENCE_F (7) ! H5T_ENUM_F (8) INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_class_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_class_c(type_id, class) USE H5GLOBAL @@ -397,42 +390,37 @@ CONTAINS hdferr = h5tget_class_c(type_id, class) END SUBROUTINE h5tget_class_f - -!---------------------------------------------------------------------- -! Name: h5tget_size_f ! -! Purpose: Returns the size of a datatype. +!****s* H5T/h5tget_size_f ! -! Inputs: -! type_id - datatype identifier -! Outputs: -! size - datatype size -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_size_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Returns the size of a datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! size - datatype size +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5tget_size_f(type_id, size, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! SOURCE + SUBROUTINE h5tget_size_f(type_id, size, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(OUT) :: size ! Datatype size INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_size_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_size_c(type_id, size) USE H5GLOBAL @@ -447,41 +435,38 @@ CONTAINS hdferr = h5tget_size_c(type_id, size) END SUBROUTINE h5tget_size_f -!---------------------------------------------------------------------- -! Name: h5tset_size_f ! -! Purpose: Sets the total size for an atomic datatype. +!****s* H5T/h5tset_size_f ! -! Inputs: -! type_id - datatype identifier -! size - size of the datatype -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tset_size_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Sets the total size for an atomic datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! size - size of the datatype +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5tset_size_f(type_id, size, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! +! SOURCE + SUBROUTINE h5tset_size_f(type_id, size, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(IN) :: size ! Datatype size INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tset_size_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tset_size_c(type_id, size) USE H5GLOBAL @@ -496,155 +481,139 @@ CONTAINS hdferr = h5tset_size_c(type_id, size) END SUBROUTINE h5tset_size_f -!---------------------------------------------------------------------- -! Name: h5tget_order_f ! -! Purpose: Returns the byte order of an atomic datatype. +!****s* H5T/h5tget_order_f ! -! Inputs: -! type_id - datatype identifier -! Outputs: -! order - byte order for the datatype, possible -! values are: -! H5T_ORDER_LE_F -! H5T_ORDER_BE_F -! H5T_ORDER_VAX_F (not implemented yet) -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_order_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Returns the byte order of an atomic datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! order - byte order for the datatype, possible +! values are: +! H5T_ORDER_LE_F +! H5T_ORDER_BE_F +! H5T_ORDER_VAX_F (not implemented yet) +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5tget_order_f(type_id, order, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier - INTEGER, INTENT(OUT) :: order - ! Datatype byte order, bossible values are: - ! H5T_ORDER_LE_F - ! H5T_ORDER_BE_F - ! H5T_ORDER_VAX_F - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_order_c -! MS FORTRAN needs explicit interface for C functions called here. +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 ! - INTERFACE - INTEGER FUNCTION h5tget_order_c(type_id, order) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TGET_ORDER_C'::h5tget_order_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: type_id - INTEGER, INTENT(OUT) :: order - END FUNCTION h5tget_order_c - END INTERFACE - - hdferr = h5tget_order_c(type_id, order) - END SUBROUTINE h5tget_order_f +! SOURCE + SUBROUTINE h5tget_order_f(type_id, order, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier + INTEGER, INTENT(OUT) :: order + ! Datatype byte order, possible values are: + ! H5T_ORDER_LE_F + ! H5T_ORDER_BE_F + ! H5T_ORDER_VAX_F + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5tget_order_c(type_id, order) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TGET_ORDER_C'::h5tget_order_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(OUT) :: order + END FUNCTION h5tget_order_c + END INTERFACE + + hdferr = h5tget_order_c(type_id, order) + END SUBROUTINE h5tget_order_f +! +!****s* H5T/h5tset_order_f +! +! NAME +! h5tset_order_f +! +! PURPOSE +! Sets the byte ordering of an atomic datatype. +! +! INPUTS +! type_id - datatype identifier +! order - datatype byte order Possible values are: +! H5T_ORDER_LE_F +! H5T_ORDER_BE_F +! H5T_ORDER_VAX_F (not implemented yet) +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! SOURCE + SUBROUTINE h5tset_order_f(type_id, order, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier + INTEGER, INTENT(IN) :: order ! Datatype byte order, possible values + ! are: + ! H5T_ORDER_LE_F + ! H5T_ORDER_BE_F + ! H5T_ORDER_VAX_F + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5tset_order_c(type_id, order) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TSET_ORDER_C'::h5tset_order_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: order + END FUNCTION h5tset_order_c + END INTERFACE + + hdferr = h5tset_order_c(type_id, order) + END SUBROUTINE h5tset_order_f -!---------------------------------------------------------------------- -! Name: h5tset_order_f ! -! Purpose: Sets the byte ordering of an atomic datatype. +!****s* H5T/h5tget_precision_f ! -! Inputs: -! type_id - datatype identifier -! order - datatype byte order -! Possible values are: -! H5T_ORDER_LE_F -! H5T_ORDER_BE_F -! H5T_ORDER_VAX_F (not implemented yet) -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_precision_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Returns the precision of an atomic datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5tset_order_f(type_id, order, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier - INTEGER, INTENT(IN) :: order ! Datatype byte order, bossible values - ! are: - ! H5T_ORDER_LE_F - ! H5T_ORDER_BE_F - ! H5T_ORDER_VAX_F - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tset_order_c -! MS FORTRAN needs explicit interface for C functions called here. +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! precision - precision of the datatype +! hdferr - Returns 0 if successful and -1 if fails ! - INTERFACE - INTEGER FUNCTION h5tset_order_c(type_id, order) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TSET_ORDER_C'::h5tset_order_c - !DEC$ENDIF - INTEGER(HID_T), INTENT(IN) :: type_id - INTEGER, INTENT(IN) :: order - END FUNCTION h5tset_order_c - END INTERFACE - - hdferr = h5tset_order_c(type_id, order) - END SUBROUTINE h5tset_order_f - -!---------------------------------------------------------------------- -! Name: h5tget_precision_f +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Purpose: Returns the precision of an atomic datatype. +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 ! -! Inputs: -! type_id - datatype identifier -! Outputs: -! precision - precision of the datatype -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5tget_precision_f(type_id, precision, hdferr) +! SOURCE + SUBROUTINE h5tget_precision_f(type_id, precision, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(OUT) :: precision ! Datatype precision INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_precision_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_precision_c (type_id, precision) USE H5GLOBAL @@ -659,40 +628,37 @@ CONTAINS hdferr = h5tget_precision_c(type_id, precision) END SUBROUTINE h5tget_precision_f -!---------------------------------------------------------------------- -! Name: h5tset_precision_f ! -! Purpose: Sets the precision of an atomic datatype. +!****s* H5T/h5tset_precision_f ! -! Inputs: -! type_id - datatype identifier -! precision - datatype precision -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tset_precision_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Sets the precision of an atomic datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! precision - datatype precision +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tset_precision_f(type_id, precision, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! SOURCE + SUBROUTINE h5tset_precision_f(type_id, precision, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(IN) :: precision ! Datatype precision INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tset_precision_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tset_precision_c (type_id, precision) USE H5GLOBAL @@ -707,41 +673,37 @@ CONTAINS hdferr = h5tset_precision_c(type_id, precision) END SUBROUTINE h5tset_precision_f -!---------------------------------------------------------------------- -! Name: h5tget_offset_f ! -! Purpose: Retrieves the bit offset of the first significant bit. +!****s* H5T/h5tget_offset_f ! -! Inputs: -! type_id - datatype identifier -! Outputs: -! offset - offset value -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_offset_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Retrieves the bit offset of the first significant bit. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! offset - offset value +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_offset_f(type_id, offset, hdferr) +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! SOURCE + SUBROUTINE h5tget_offset_f(type_id, offset, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(OUT) :: offset ! Datatype bit offset of the ! first significant bit INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_offset_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_offset_c(type_id, offset) USE H5GLOBAL @@ -756,41 +718,37 @@ CONTAINS hdferr = h5tget_offset_c(type_id, offset) END SUBROUTINE h5tget_offset_f -!---------------------------------------------------------------------- -! Name: h5tset_offset_f ! -! Purpose: Sets the bit offset of the first significant bit. +!****s* H5T/h5tset_offset_f ! -! Inputs: -! type_id - datatype identifier -! offset - offset value -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tset_offset_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Sets the bit offset of the first significant bit. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! offset - offset value +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tset_offset_f(type_id, offset, hdferr) +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! SOURCE + SUBROUTINE h5tset_offset_f(type_id, offset, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(IN) :: offset ! Datatype bit offset of the ! first significant bit INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tset_offset_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tset_offset_c(type_id, offset) USE H5GLOBAL @@ -805,40 +763,40 @@ CONTAINS hdferr = h5tset_offset_c(type_id, offset) END SUBROUTINE h5tset_offset_f -!---------------------------------------------------------------------- -! Name: h5tget_pad_f -! -! Purpose: Retrieves the padding type of the least and -! most-significant bit padding. -! -! Inputs: -! type_id - datatype identifier -! Outputs: -! lsbpad - least-significant bit padding type -! msbpad - most-significant bit padding type -! Possible values of padding type are: -! H5T_PAD_ERROR_F = -1 -! H5T_PAD_ZERO_F = 0 -! H5T_PAD_ONE_F = 1 -! H5T_PAD_BACKGROUND_F = 2 -! H5T_PAD_NPAD_F = 3 -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_pad_f(type_id, lsbpad, msbpad, hdferr) +! +!****s* H5T/h5tget_pad_f +! +! NAME +! h5tget_pad_f +! +! PURPOSE +! Retrieves the padding type of the least and +! most -significant bit padding. +! +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! lsbpad - least-significant bit padding type +! msbpad - most-significant bit padding type +! Possible values of padding type are: +! H5T_PAD_ERROR_F = -1 +! H5T_PAD_ZERO_F = 0 +! H5T_PAD_ONE_F = 1 +! H5T_PAD_BACKGROUND_F = 2 +! H5T_PAD_NPAD_F = 3 +! hdferr - Returns 0 if successful and -1 if fails + +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_pad_f(type_id, lsbpad, msbpad, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: lsbpad ! padding type of the @@ -853,10 +811,7 @@ CONTAINS ! H5T_PAD_NPAD_F = 3 INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_pad_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_pad_c(type_id, lsbpad, msbpad) USE H5GLOBAL @@ -872,39 +827,38 @@ CONTAINS hdferr = h5tget_pad_c(type_id, lsbpad, msbpad) END SUBROUTINE h5tget_pad_f -!---------------------------------------------------------------------- -! Name: h5tset_pad_f -! -! Purpose: Sets the least and most-significant bits padding types. -! -! Inputs: -! type_id - datatype identifier -! lsbpad - least-significant bit padding type -! msbpad - most-significant bit padding type -! Possible values of padding type are: -! H5T_PAD_ERROR_F = -1 -! H5T_PAD_ZERO_F = 0 -! H5T_PAD_ONE_F = 1 -! H5T_PAD_BACKGROUND_F = 2 -! H5T_PAD_NPAD_F = 3 -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tset_pad_f(type_id, lsbpad, msbpad, hdferr) +! +!****s* H5T/h5tset_pad_f +! +! NAME +! h5tset_pad_f +! +! PURPOSE +! Sets the least and most-significant bits padding types. +! +! INPUTS +! type_id - datatype identifier +! lsbpad - least-significant bit padding type +! msbpad - most-significant bit padding type +! Possible values of padding type are: +! H5T_PAD_ERROR_F = -1 +! H5T_PAD_ZERO_F = 0 +! H5T_PAD_ONE_F = 1 +! H5T_PAD_BACKGROUND_F = 2 +! H5T_PAD_NPAD_F = 3 +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tset_pad_f(type_id, lsbpad, msbpad, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: lsbpad ! padding type of the @@ -918,10 +872,7 @@ CONTAINS ! H5T_PAD_ERROR_F = -1 ! H5T_PAD_NPAD_F = 3 INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5sget_pad_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tset_pad_c(type_id, lsbpad, msbpad) USE H5GLOBAL @@ -937,37 +888,37 @@ CONTAINS hdferr = h5tset_pad_c(type_id, lsbpad, msbpad) END SUBROUTINE h5tset_pad_f -!---------------------------------------------------------------------- -! Name: h5tget_sign_f -! -! Purpose: Retrieves the sign type for an integer type. -! -! Inputs: -! type_id - datatype identifier -! Outputs: -! sign - sign type -! Possible values are: -! Unsigned integer type H5T_SGN_NONE_F = 0 -! Two's complement signed integer type -! H5T_SGN_2_F = 1 -! or error value: H5T_SGN_ERROR_F=-1 -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_sign_f(type_id, sign, hdferr) +! +!****s* H5T/h5tget_sign_f +! +! NAME +! h5tget_sign_f +! +! PURPOSE +! Retrieves the sign type for an integer type. +! +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! sign - sign type +! Possible values are: +! - Unsigned integer type +! H5T_SGN_NONE_F = 0 +! - Two's complement signed integer type +! H5T_SGN_2_F = 1 +! - error value: H5T_SGN_ERROR_F=-1 +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_sign_f(type_id, sign, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: sign ! sign type for an integer type @@ -977,10 +928,8 @@ CONTAINS !H5T_SGN_2_F = 1 !or error value: H5T_SGN_ERROR_F=-1 INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5tget_sign_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tget_sign_c(type_id, sign) USE H5GLOBAL @@ -995,37 +944,37 @@ CONTAINS hdferr = h5tget_sign_c(type_id, sign) END SUBROUTINE h5tget_sign_f -!---------------------------------------------------------------------- -! Name: h5tset_sign_f -! -! Purpose: Sets the sign proprety for an integer type. -! -! Inputs: -! type_id - datatype identifier -! sign - sign type -! Possible values are: -! Unsigned integer type H5T_SGN_NONE_F = 0 -! Two's complement signed integer type -! H5T_SGN_2_F = 1 -! or error value: H5T_SGN_ERROR_F=-1 -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tset_sign_f(type_id, sign, hdferr) +! +!****s* H5T/h5tset_sign_f +! +! NAME +! h5tset_sign_f +! +! PURPOSE +! Sets the sign proprety for an integer type. +! +! INPUTS +! type_id - datatype identifier +! sign - sign type +! Possible values are: +! - Unsigned integer type +! H5T_SGN_NONE_F = 0 +! - Two's complement signed integer type +! H5T_SGN_2_F = 1 +! - error value: H5T_SGN_ERROR_F=-1 +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tset_sign_f(type_id, sign, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: sign !sign type for an integer type @@ -1035,10 +984,8 @@ CONTAINS !H5T_SGN_2_F = 1 !or error value: H5T_SGN_ERROR_F=-1 INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5tset_sign_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tset_sign_c(type_id, sign) USE H5GLOBAL @@ -1053,36 +1000,35 @@ CONTAINS hdferr = h5tset_sign_c(type_id, sign) END SUBROUTINE h5tset_sign_f -!---------------------------------------------------------------------- -! Name: h5tget_fields_f ! -! Purpose: Retrieves floating point datatype bit field information. +!****s* H5T/h5tget_fields_f ! -! Inputs: -! type_id - datatype identifier -! Outputs: -! spos - sign bit-position -! epos - exponent bit-position -! esize - size of exponent in bits -! mpos - mantissa position -! msize - size of mantissa in bits -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_fields_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Retrieves floating point datatype bit field information. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! spos - sign bit-position +! epos - exponent bit-position +! esize - size of exponent in bits +! mpos - mantissa position +! msize - size of mantissa in bits +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_fields_f(type_id, spos, epos, esize, mpos, msize, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_fields_f(type_id, spos, epos, esize, mpos, msize, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(OUT) :: spos ! sign bit-position @@ -1091,10 +1037,8 @@ CONTAINS INTEGER(SIZE_T), INTENT(OUT) :: mpos ! mantissa bit-position INTEGER(SIZE_T), INTENT(OUT) :: msize ! size of mantissa in bits INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5tget_fields_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tget_fields_c(type_id, spos, epos, esize, mpos, msize) USE H5GLOBAL @@ -1113,37 +1057,35 @@ CONTAINS hdferr = h5tget_fields_c(type_id, spos, epos, esize, mpos, msize) END SUBROUTINE h5tget_fields_f -!---------------------------------------------------------------------- -! Name: h5tset_fields_f -! -! Purpose: Sets locations and sizes of floating point bit fields. -! -! Inputs: -! type_id - datatype identifier -! spos - sign bit-position -! epos - exponent bit-position -! esize - size of exponent in bits -! mpos - mantissa position -! msize - size of mantissa in bits -! hdferr: - error code -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tset_fields_f(type_id, spos, epos, esize, mpos, msize, hdferr) +! +!****s* H5T/h5tset_fields_f +! +! NAME +! h5tset_fields_f +! +! PURPOSE +! Sets locations and sizes of floating point bit fields. +! +! INPUTS +! type_id - datatype identifier +! spos - sign bit-position +! epos - exponent bit-position +! esize - size of exponent in bits +! mpos - mantissa position +! msize - size of mantissa in bits +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tset_fields_f(type_id, spos, epos, esize, mpos, msize, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(IN) :: spos ! sign bit-position @@ -1152,10 +1094,8 @@ CONTAINS INTEGER(SIZE_T), INTENT(IN) :: mpos ! mantissa bit-position INTEGER(SIZE_T), INTENT(IN) :: msize ! size of mantissa in bits INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5tset_fields_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tset_fields_c(type_id, spos, epos, esize, mpos, msize) USE H5GLOBAL @@ -1174,40 +1114,37 @@ CONTAINS hdferr = h5tset_fields_c(type_id, spos, epos, esize, mpos, msize) END SUBROUTINE h5tset_fields_f -!---------------------------------------------------------------------- -! Name: h5tget_ebias_f ! -! Purpose: Retrieves the exponent bias of a floating-point type. +!****s* H5T/h5tget_ebias_f ! -! Inputs: -! type_id - datatype identifier -! Outputs: -! ebias - datatype exponent bias -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_ebias_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Retrieves the exponent bias of a floating-point type. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! ebias - datatype exponent bias +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_ebias_f(type_id, ebias, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_ebias_f(type_id, ebias, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(OUT) :: ebias ! Datatype exponent bias of a floating-point type INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5tget_ebias_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tget_ebias_c(type_id, ebias) USE H5GLOBAL @@ -1222,41 +1159,37 @@ CONTAINS hdferr = h5tget_ebias_c(type_id, ebias) END SUBROUTINE h5tget_ebias_f -!---------------------------------------------------------------------- -! Name: h5tset_ebias_f ! -! Purpose: Sets the exponent bias of a floating-point type. +!****s* H5T/h5tset_ebias_f ! -! Inputs: -! type_id - datatype identifier -! ebias - datatype exponent bias -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tset_ebias_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Sets the exponent bias of a floating-point type. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! ebias - datatype exponent bias +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5tset_ebias_f(type_id, ebias, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tset_ebias_f(type_id, ebias, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(IN) :: ebias !Datatype exponent bias of a floating-point type INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5tset_ebias_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tset_ebias_c(type_id, ebias) USE H5GLOBAL @@ -1271,36 +1204,35 @@ CONTAINS hdferr = h5tset_ebias_c(type_id, ebias) END SUBROUTINE h5tset_ebias_f -!---------------------------------------------------------------------- -! Name: h5tget_norm_f ! -! Purpose: Retrieves mantissa normalization of a floating-point -! datatype. +!****s* H5T/h5tget_norm_f ! -! Inputs: -! type_id - datatype identifier -! Outputs: -! norm - normalization types, valid values are: -! H5T_NORM_IMPLIED_F(0) -! H5T_NORM_MSBSET_F(1) -! H5T_NORM_NONE_F(2) -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_norm_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Retrieves mantissa normalization of a floating-point +! datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! norm - normalization types, valid values are: +! H5T_NORM_IMPLIED_F(0) +! H5T_NORM_MSBSET_F(1) +! H5T_NORM_NONE_F(2) +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_norm_f(type_id, norm, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_norm_f(type_id, norm, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: norm !mantissa normalization of a floating-point datatype @@ -1310,10 +1242,8 @@ CONTAINS !mantissa is always 1, H5T_NORM_NONE_F(2) !Mantissa is not normalize INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5tget_norm_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tget_norm_c(type_id, norm) USE H5GLOBAL @@ -1328,36 +1258,35 @@ CONTAINS hdferr = h5tget_norm_c(type_id, norm) END SUBROUTINE h5tget_norm_f -!---------------------------------------------------------------------- -! Name: h5tset_norm_f ! -! Purpose: Sets the mantissa normalization of a floating-point datatype. +!****s* H5T/h5tset_norm_f ! -! Inputs: -! type_id - datatype identifier -! norm - normalization types, valid values are: -! H5T_NORM_IMPLIED_F(0) -! H5T_NORM_MSBSET_F(1) -! H5T_NORM_NONE_F(2) -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tset_norm_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Sets the mantissa normalization of a floating-point datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! norm - normalization types, valid values are: +! H5T_NORM_IMPLIED_F(0) +! H5T_NORM_MSBSET_F(1) +! H5T_NORM_NONE_F(2) +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5tset_norm_f(type_id, norm, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! SOURCE + SUBROUTINE h5tset_norm_f(type_id, norm, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: norm !mantissa normalization of a floating-point datatype @@ -1367,10 +1296,7 @@ CONTAINS !mantissa is always 1, H5T_NORM_NONE_F(2) !Mantissa is not normalize INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tset_norm_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tset_norm_c(type_id, norm) USE H5GLOBAL @@ -1385,37 +1311,36 @@ CONTAINS hdferr = h5tset_norm_c(type_id, norm) END SUBROUTINE h5tset_norm_f -!---------------------------------------------------------------------- -! Name: h5tget_inpad_f -! -! Purpose: Retrieves the internal padding type for unused bits -! in floating-point datatypes. -! -! Inputs: -! type_id - datatype identifier -! Outputs: -! padtype - padding type for unused bits -! Possible values of padding type are: -! H5T_PAD_ZERO_F = 0 -! H5T_PAD_ONE_F = 1 -! H5T_PAD_BACKGROUND_F = 2 -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_inpad_f(type_id, padtype, hdferr) +! +!****s* H5T/h5tget_inpad_f +! +! NAME +! h5tget_inpad_f +! +! PURPOSE +! Retrieves the internal padding type for unused bits +! in floating-point datatypes. +! +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! padtype - padding type for unused bits +! Possible values of padding type are: +! H5T_PAD_ZERO_F = 0 +! H5T_PAD_ONE_F = 1 +! H5T_PAD_BACKGROUND_F = 2 +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_inpad_f(type_id, padtype, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: padtype ! padding type for unused bits @@ -1426,10 +1351,7 @@ CONTAINS ! H5T__PAD_BACKGROUND_F = 2 INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_inpad_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_inpad_c(type_id, padtype) USE H5GLOBAL @@ -1444,36 +1366,35 @@ CONTAINS hdferr = h5tget_inpad_c(type_id, padtype) END SUBROUTINE h5tget_inpad_f -!---------------------------------------------------------------------- -! Name: h5tset_inpad_f ! -! Purpose: Fills unused internal floating point bits. +!****s* H5T/h5tset_inpad_f ! -! Inputs: -! type_id - datatype identifier -! padtype - padding type for unused bits -! Possible values of padding type are: -! H5T_PAD_ZERO_F = 0 -! H5T_PAD_ONE_F = 1 -! H5T_PAD_BACKGROUND_F = 2 -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tset_inpad_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Fills unused internal floating point bits. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! padtype - padding type for unused bits +! Possible values of padding type are: +! H5T_PAD_ZERO_F = 0 +! H5T_PAD_ONE_F = 1 +! H5T_PAD_BACKGROUND_F = 2 +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tset_inpad_f(type_id, padtype, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tset_inpad_f(type_id, padtype, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: padtype ! padding type for unused bits @@ -1483,10 +1404,7 @@ CONTAINS ! H5T__PAD_ONE_F = 1 ! H5T__PAD_BACKGROUND_F = 2 INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tset_inpad_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tset_inpad_c(type_id, padtype) USE H5GLOBAL @@ -1501,46 +1419,42 @@ CONTAINS hdferr = h5tset_inpad_c(type_id, padtype) END SUBROUTINE h5tset_inpad_f -!---------------------------------------------------------------------- -! Name: h5tget_cset_f ! -! Purpose: Retrieves the character set type of a string datatype. +!****s* H5T/h5tget_cset_f ! -! Inputs: -! type_id - datatype identifier -! Outputs: -! cset - character set type of a string datatype -! Possible values are: -! H5T_CSET_ASCII_F = 0 -! H5T_CSET_UTF8_F -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_cset_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Retrieves the character set type of a string datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - Datatype identifier +! OUTPUTS +! cset - Character set type of a string datatype +! Possible values are: +! H5T_CSET_ASCII_F = 0 +! H5T_CSET_UTF8_F +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_cset_f(type_id, cset, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_cset_f(type_id, cset, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier - INTEGER, INTENT(OUT) :: cset ! character set type of a string datatype - ! Possible values are: - ! H5T_CSET_ASCII_F = 0 - ! H5T_CSET_UTF8_F - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_cset_c -! MS FORTRAN needs explicit interface for C functions called here. -! + INTEGER, INTENT(OUT) :: cset ! character set type of a string datatype + ! Possible values are: + ! H5T_CSET_ASCII_F = 0 + ! H5T_CSET_UTF8_F + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTERFACE INTEGER FUNCTION h5tget_cset_c(type_id, cset) USE H5GLOBAL @@ -1555,47 +1469,42 @@ CONTAINS hdferr = h5tget_cset_c(type_id, cset) END SUBROUTINE h5tget_cset_f -!---------------------------------------------------------------------- -! Name: h5tset_cset_f ! -! Purpose: Sets character set to be used. +!****s* H5T/h5tset_cset_f ! -! Inputs: -! type_id - datatype identifier -! cset - character set type of a string datatype -! Possible values are: -! H5T_CSET_ASCII_F = 0 -! H5T_CSET_UTF8_F -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tset_cset_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Sets character set to be used. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! cset - character set type of a string datatype +! Possible values are: +! H5T_CSET_ASCII_F = 0 +! H5T_CSET_UTF8_F +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tset_cset_f(type_id, cset, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tset_cset_f(type_id, cset, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: cset !character set type of a string datatype - !Possible values are: - ! H5T_CSET_ASCII_F = 0 - ! H5T_CSET_UTF8_F - + ! Possible values of padding type are: + ! H5T_CSET_ASCII_F = 0 + ! H5T_CSET_UTF8_F INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tset_cset_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tset_cset_c(type_id, cset) USE H5GLOBAL @@ -1610,45 +1519,41 @@ CONTAINS hdferr = h5tset_cset_c(type_id, cset) END SUBROUTINE h5tset_cset_f -!---------------------------------------------------------------------- -! Name: h5tget_strpad_f -! -! Purpose: Retrieves the storage mechanism for a string datatype. -! -! Inputs: -! type_id - datatype identifier -! Outputs: -! strpad - storage method for a string datatype -! Possible values are: -! H5T_STR_NULLTERM_F, -! H5T_STR_NULLPAD_F, -! H5T_STR_SPACEPAD_F -! H5T_STR_ERROR_F -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_strpad_f(type_id, strpad, hdferr) +! +!****s* H5T/h5tget_strpad_f +! +! NAME +! h5tget_strpad_f +! +! PURPOSE +! Retrieves the storage mechanism for a string datatype. +! +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! strpad - storage method for a string datatype +! Possible values are: +! H5T_STR_NULLTERM_F, +! H5T_STR_NULLPAD_F, +! H5T_STR_SPACEPAD_F +! H5T_STR_ERROR_F +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_strpad_f(type_id, strpad, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: strpad INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_strpad_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_strpad_c(type_id, strpad) USE H5GLOBAL @@ -1663,45 +1568,41 @@ CONTAINS hdferr = h5tget_strpad_c(type_id, strpad) END SUBROUTINE h5tget_strpad_f -!---------------------------------------------------------------------- -! Name: h5tset_strpad_f -! -! Purpose: Defines the storage mechanism for character strings. -! -! Inputs: -! type_id - datatype identifier -! strpad - storage method for a string datatype -! Possible values are: -! H5T_STR_NULLTERM_F, -! H5T_STR_NULLPAD_F, -! H5T_STR_SPACEPAD_F -! H5T_STR_ERROR_F -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tset_strpad_f(type_id, strpad, hdferr) +! +!****s* H5T/h5tset_strpad_f +! +! NAME +! h5tset_strpad_f +! +! PURPOSE +! Defines the storage mechanism for character strings. +! +! INPUTS +! type_id - datatype identifier +! strpad - storage method for a string datatype +! Possible values are: +! H5T_STR_NULLTERM_F, +! H5T_STR_NULLPAD_F, +! H5T_STR_SPACEPAD_F +! H5T_STR_ERROR_F +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tset_strpad_f(type_id, strpad, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: strpad ! string padding method for a string datatype INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tset_strpad_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tset_strpad_c(type_id, strpad) USE H5GLOBAL @@ -1716,41 +1617,38 @@ CONTAINS hdferr = h5tset_strpad_c(type_id, strpad) END SUBROUTINE h5tset_strpad_f -!---------------------------------------------------------------------- -! Name: h5tget_nmembers_f ! -! Purpose: Retrieves the number of fields in a compound datatype. +!****s* H5T/h5tget_nmembers_f ! -! Inputs: -! type_id - datatype identifier -! Outputs: -! num_members - number of members -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_nmembers_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Retrieves the number of fields in a compound datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! num_members - number of members +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5tget_nmembers_f(type_id, num_members, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! SOURCE + SUBROUTINE h5tget_nmembers_f(type_id, num_members, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: num_members !number of fields in a compound datatype INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5tget_nmembers_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tget_nmembers_c(type_id, num_members) USE H5GLOBAL @@ -1765,34 +1663,33 @@ CONTAINS hdferr = h5tget_nmembers_c(type_id, num_members) END SUBROUTINE h5tget_nmembers_f -!---------------------------------------------------------------------- -! Name: h5tget_member_name_f ! -! Purpose: Retrieves the name of a field of a compound datatype. +!****s* H5T/h5tget_member_name_f ! -! Inputs: -! type_id - datatype identifier -! index - filed index (0-based) -! Outputs: -! member_name - buffer to hold member's name -! namelen - name length -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_member_name_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Retrieves the name of a field of a compound datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! index - filed index (0-based) +! OUTPUTS +! member_name - buffer to hold member's name +! namelen - name length +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_member_name_f(type_id, index, member_name, namelen, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_member_name_f(type_id, index, member_name, namelen, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: index !Field index (0-based) of the field name to retrieve @@ -1800,10 +1697,7 @@ CONTAINS !a compound datatype INTEGER, INTENT(OUT) :: namelen ! Length of the name INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_member_name_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_member_name_c(type_id, index, member_name, namelen) USE H5GLOBAL @@ -1821,43 +1715,39 @@ CONTAINS hdferr = h5tget_member_name_c(type_id, index, member_name, namelen) END SUBROUTINE h5tget_member_name_f -!---------------------------------------------------------------------- -! Name: h5tget_member_offset_f ! -! Purpose: Retrieves the offset of a field of a compound datatype. +!****s* H5T/h5tget_member_offset_f ! -! Inputs: -! type_id - datatype identifier -! member_no - number of the field -! Outputs: -! offset - byte offset of the requested field -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_member_offset_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Retrieves the offset of a field of a compound datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! member_no - number of the field +! OUTPUTS +! offset - byte offset of the requested field +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_member_offset_f(type_id, member_no, offset, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_member_offset_f(type_id, member_no, offset, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: member_no !Number of the field !whose offset is requested INTEGER(SIZE_T), INTENT(OUT) :: offset !byte offset of the beginning of the field INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_member_offset_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_member_offset_c(type_id, member_no, offset ) USE H5GLOBAL @@ -1872,37 +1762,35 @@ CONTAINS hdferr = h5tget_member_offset_c(type_id, member_no, offset ) END SUBROUTINE h5tget_member_offset_f -!---------------------------------------------------------------------- -! Name: h5tget_member_index_f ! -! Purpose: Retrieves the index of a compound or enumeration datatype member. +!****s* H5T/h5tget_member_index_f ! -! Inputs: -! type_id - datatype identifier -! name - name of the field or member whose index to -! to be retrieved from the datatype. -! Outputs: -! index - 0-based index of the filed or member (0 to N-1) -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_member_index_f ! -! Programmer: Elena Pourmal -! September 26, 2002 +! PURPOSE +! Retrieves the index of a compound or enumeration datatype member. ! -! Modifications: +! INPUTS +! type_id - datatype identifier +! name - name of the field or member whose index to +! to be retrieved from the datatype. +! OUTPUTS +! index - 0-based index of the filed or member (0 to N-1) +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_member_index_f(type_id, name, index, hdferr) +! AUTHOR +! Elena Pourmal +! September 26, 2002 +! +! SOURCE + SUBROUTINE h5tget_member_index_f(type_id, name, index, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier CHARACTER(LEN=*), INTENT(IN) :: name ! Field or member name INTEGER, INTENT(OUT) :: index ! Field or member index INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTEGER :: namelen ! Name length INTERFACE @@ -1924,83 +1812,82 @@ CONTAINS END SUBROUTINE h5tget_member_index_f -!---------------------------------------------------------------------- -! Name: h5tget_member_dim_f -! -! Purpose: This function is not supported in hdf5-1.4.* -! -! Inputs: -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - -! SUBROUTINE h5tget_member_dims_f(type_id, field_idx,dims, field_dims, perm, hdferr) -! -! IMPLICIT NONE -! INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier -! INTEGER, INTENT(IN) :: field_idx !Field index (0-based) of -! !field_dims, perm) -! INTEGER, INTENT(OUT) :: dims !number of dimensions of the field -! -! INTEGER(SIZE_T),DIMENSION(*), INTENT(OUT) :: field_dims !buffer to store the -! !dimensions of the field -! INTEGER, DIMENSION(*), INTENT(OUT) :: perm !buffer to store the -! !permutation vector of the field -! INTEGER, INTENT(OUT) :: hdferr ! Error code -! INTEGER, EXTERNAL :: h5tget_member_dims_c -! hdferr = h5tget_member_dims_c(type_id, field_idx, dims, field_dims, perm) -! -! END SUBROUTINE h5tget_member_dims_f - -!---------------------------------------------------------------------- -! Name: h5tget_array_dims_f -! -! Purpose: Returns sizes of array dimensions. -! -! Inputs: -! type_id - array datatype identifier -! Outputs: -! dims - buffer to store array datatype -! dimensions -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_array_dims_f(type_id, dims, hdferr) +! !$! +! !$!****s* H5T/h5tget_member_dim_f +! !$! +! !$! NAME +! !$! h5tget_member_dim_f +! !$! +! !$! PURPOSE +! !$! This function is not supported in hdf5-1.4.* +! !$! +! !$! INPUTS +! !$! OUTPUTS +! !$! hdferr: - error code +! !$! Success: 0 +! !$! Failure: -1 +! !$! +! !$! AUTHOR +! !$! Elena Pourmal +! !$! August 12, 1999 +! !$! +! !$! HISTORY +! !$! Explicit Fortran interfaces were added for +! !$! called C functions (it is needed for Windows +! !$! port). March 7, 2001 +! !$! +! !$! SOURCE +! !$! SUBROUTINE h5tget_member_dims_f(type_id, field_idx,dims, field_dims, perm, hdferr) +! !$! +! !$! IMPLICIT NONE +! !$! INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier +! !$! INTEGER, INTENT(IN) :: field_idx !Field index (0-based) of +! !$! !field_dims, perm) +! !$! INTEGER, INTENT(OUT) :: dims !number of dimensions of the field +! !$! +! !$! INTEGER(SIZE_T),DIMENSION(*), INTENT(OUT) :: field_dims !buffer to store the +! !$! !dimensions of the field +! !$! INTEGER, DIMENSION(*), INTENT(OUT) :: perm !buffer to store the +! !$! !permutation vector of the field +! !$! INTEGER, INTENT(OUT) :: hdferr ! Error code +! !$!*****! +! !$! INTEGER, EXTERNAL :: h5tget_member_dims_c +! !$! hdferr = h5tget_member_dims_c(type_id, field_idx, dims, field_dims, perm) +! !$! +! !$! END SUBROUTINE h5tget_member_dims_f + + +!****s* H5T/h5tget_array_dims_f +! +! NAME +! h5tget_array_dims_f +! +! PURPOSE +! Returns sizes of array dimensions. +! +! INPUTS +! type_id - array datatype identifier +! OUTPUTS +! dims - buffer to store array datatype dimensions +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_array_dims_f(type_id, dims, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Array datatype identifier INTEGER(HSIZE_T),DIMENSION(*), INTENT(OUT) :: dims !buffer to store array datatype ! dimensions INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5tget_array_dims_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tget_array_dims_c(type_id, dims) USE H5GLOBAL @@ -2016,40 +1903,36 @@ CONTAINS END SUBROUTINE h5tget_array_dims_f -!---------------------------------------------------------------------- -! Name: h5tget_array_ndims_f ! -! Purpose: Returns the rank of an array datatype. +!****s* H5T/h5tget_array_ndims_f ! -! Inputs: -! type_id - array datatype identifier -! Outputs: -! ndims - number of array dimensions -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_array_ndims_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Returns the rank of an array datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - array datatype identifier +! OUTPUTS +! ndims - number of array dimensions +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_array_ndims_f(type_id, ndims, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_array_ndims_f(type_id, ndims, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Array datatype identifier INTEGER, INTENT(OUT) :: ndims ! number of array dimensions INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_array_ndims_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_array_ndims_c(type_id, ndims) USE H5GLOBAL @@ -2065,41 +1948,37 @@ CONTAINS END SUBROUTINE h5tget_array_ndims_f -!---------------------------------------------------------------------- -! Name: h5tget_super_f ! -! Purpose: Returns the base datatype from which a datatype is derived. +!****s* H5T/h5tget_super_f ! -! Inputs: -! type_id - datatype identifier -! Outputs: -! base_type_id - identifier of the base type -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_super_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Returns the base datatype from which a datatype is derived. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! base_type_id - identifier of the base type +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_super_f(type_id, base_type_id, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_super_f(type_id, base_type_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! datatype identifier INTEGER(HID_T), INTENT(OUT) :: base_type_id ! identifier of the datatype ! from which datatype (type_id) was derived INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_super_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_super_c(type_id, base_type_id) USE H5GLOBAL @@ -2115,44 +1994,40 @@ CONTAINS END SUBROUTINE h5tget_super_f -!---------------------------------------------------------------------- -! Name: h5tget_member_type_f ! -! Purpose: Returns the datatype of the specified member. +!****s* H5T/h5tget_member_type_f ! -! Inputs: -! type_id - compound datatype identifier -! field_idx - field index (0-based) +! NAME +! h5tget_member_type_f ! -! Outputs: -! datatype - idnetifier of the member's datatype -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Returns the datatype of the specified member. ! -! Programmer: Elena Pourmal -! August 12, 1999 +! INPUTS +! type_id - compound datatype identifier +! field_idx - field index (0-based) ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! OUTPUTS +! datatype - idnetifier of the member's datatype +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_member_type_f(type_id, field_idx, datatype, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_member_type_f(type_id, field_idx, datatype, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: field_idx !Field index (0-based) of the field type to retrieve INTEGER(HID_T), INTENT(OUT) :: datatype !identifier of a copy of !the datatype of the field INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_member_type_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_member_type_c(type_id, field_idx , datatype) USE H5GLOBAL @@ -2168,37 +2043,35 @@ CONTAINS hdferr = h5tget_member_type_c(type_id, field_idx , datatype) END SUBROUTINE h5tget_member_type_f -!---------------------------------------------------------------------- -! Name: h5tcreate_f ! -! Purpose: Creates a new dataype +!****s* H5T/h5tcreate_f ! -! Inputs: -! class - datatype class, possible values are: -! H5T_COMPOUND_F -! H5T_ENUM_F -! H5T_OPAQUE_F -! size - datattype size -! Outputs: -! type_id - datatype identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tcreate_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Creates a new dataype ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! class - datatype class, possible values are: +! H5T_COMPOUND_F +! H5T_ENUM_F +! H5T_OPAQUE_F +! size - datattype size +! OUTPUTS +! type_id - datatype identifier +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - - SUBROUTINE h5tcreate_f(class, size, type_id, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tcreate_f(class, size, type_id, hdferr) IMPLICIT NONE INTEGER, INTENT(IN) :: class ! Datatype class can be one of ! H5T_COMPOUND_F @@ -2207,10 +2080,7 @@ CONTAINS INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the datatype INTEGER(HID_T), INTENT(OUT) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tcreate_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tcreate_c(class, size, type_id) USE H5GLOBAL @@ -2226,35 +2096,34 @@ CONTAINS hdferr = h5tcreate_c(class, size, type_id) END SUBROUTINE h5tcreate_f -!---------------------------------------------------------------------- -! Name: h5tinsert_f ! -! Purpose: Adds a new member to a compound datatype. +!****s* H5T/h5tinsert_f ! -! Inputs: -! type_id - compound dattype identifier -! name - name of the field to insert -! offset - start of the member in an instance of -! the compound datatype -! field_id - datatype identifier of the field to insert -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tinsert_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Adds a new member to a compound datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - compound dattype identifier +! name - name of the field to insert +! offset - start of the member in an instance of +! the compound datatype +! field_id - datatype identifier of the field to insert +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tinsert_f(type_id, name, offset, field_id, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tinsert_f(type_id, name, offset, field_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier CHARACTER(LEN=*), INTENT(IN) :: name !Name of the field to insert @@ -2263,11 +2132,9 @@ CONTAINS INTEGER(HID_T), INTENT(IN) :: field_id !datatype identifier of the new member INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTEGER :: namelen -! INTEGER, EXTERNAL :: h5tinsert_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tinsert_c(type_id, name, namelen, offset, field_id) USE H5GLOBAL @@ -2287,38 +2154,35 @@ CONTAINS hdferr = h5tinsert_c(type_id, name, namelen, offset, field_id ) END SUBROUTINE h5tinsert_f -!---------------------------------------------------------------------- -! Name: h5tpack_f ! -! Purpose: Recursively removes padding from within a compound datatype. +!****s* H5T/h5tpack_f ! -! Inputs: -! type_id - compound datatype identifier -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tpack_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Recursively removes padding from within a compound datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - compound datatype identifier +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tpack_f(type_id, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tpack_f(type_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5tpack_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tpack_c(type_id) USE H5GLOBAL @@ -2332,95 +2196,91 @@ CONTAINS hdferr = h5tpack_c(type_id) END SUBROUTINE h5tpack_f -!---------------------------------------------------------------------- -! Name: h5tinsert_array_f -! -! Purpose: This function is not available on hdf5-1.4.* -! -! Inputs: -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - -! SUBROUTINE h5tinsert_array_f(parent_id,name,offset, ndims, dims, member_id, hdferr, perm) -! IMPLICIT NONE -! INTEGER(HID_T), INTENT(IN) :: parent_id ! identifier of the parent compound datatype -! CHARACTER(LEN=*), INTENT(IN) :: name !Name of the new member -! INTEGER(SIZE_T), INTENT(IN) :: offset !Offset to start of new member -! !within compound datatype -! INTEGER, INTENT(IN) :: ndims !Dimensionality of new member. -! !Valid values are 0 (zero) through 4 (four) -! INTEGER(SIZE_T), DIMENSION(*), INTENT(IN) :: dims !Size of new member array -! INTEGER(HID_T), INTENT(IN) :: member_id ! identifier of the datatype of the new member -! INTEGER, INTENT(OUT) :: hdferr ! Error code -! -! INTEGER, DIMENSION(*), OPTIONAL, INTENT(IN) :: perm -! !Pointer to buffer to store -! !the permutation vector of the field -! INTEGER :: namelen, sizeofperm -! INTEGER, EXTERNAL :: h5tinsert_array_c, h5tinsert_array_c2 -! namelen = LEN(name) -! if (present(perm)) then -! hdferr = h5tinsert_array_c(parent_id, name, namelen, offset, ndims,dims, member_id, perm) -! else -! hdferr = h5tinsert_array_c2(parent_id, name, namelen, offset, ndims,dims, member_id) -! end if -! -! END SUBROUTINE h5tinsert_array_f - -!---------------------------------------------------------------------- -! Name: h5tarray_create_f -! -! Purpose: Creates an array datatype object. -! -! Inputs: -! base_id - datatype identifier for the array -! base datatype -! rank - rank of the array -! dims - array dimension sizes -! Outputs: -! type_id - array datatype identifier -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! August 12, 1999 -! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tarray_create_f(base_id, rank, dims, type_id, hdferr) +! !$! +! !$!****s* H5T/h5tinsert_array_f +! !$! +! !$! NAME +! !$! h5tinsert_array_f +! !$! +! !$! PURPOSE +! !$! This function is not available on hdf5-1.4.* +! !$! +! !$! INPUTS +! !$! OUTPUTS +! !$! hdferr: - error code +! !$! Success: 0 +! !$! Failure: -1 +! !$! +! !$! AUTHOR +! !$! Elena Pourmal +! !$! August 12, 1999 +! !$! +! !$! HISTORY +! !$! Explicit Fortran interfaces were added for +! !$! called C functions (it is needed for Windows +! !$! port). March 7, 2001 +! !$! SOURCE +! SUBROUTINE h5tinsert_array_f(parent_id,name,offset, ndims, dims, member_id, hdferr, perm) +! IMPLICIT NONE +! INTEGER(HID_T), INTENT(IN) :: parent_id ! identifier of the parent compound datatype +! CHARACTER(LEN=*), INTENT(IN) :: name !Name of the new member +! INTEGER(SIZE_T), INTENT(IN) :: offset !Offset to start of new member +! !within compound datatype +! INTEGER, INTENT(IN) :: ndims !Dimensionality of new member. +! !Valid values are 0 (zero) through 4 (four) +! INTEGER(SIZE_T), DIMENSION(*), INTENT(IN) :: dims !Size of new member array +! INTEGER(HID_T), INTENT(IN) :: member_id ! identifier of the datatype of the new member +! INTEGER, INTENT(OUT) :: hdferr ! Error code +! !*****! +! INTEGER, DIMENSION(*), OPTIONAL, INTENT(IN) :: perm +! !Pointer to buffer to store +! !the permutation vector of the field +! INTEGER :: namelen, sizeofperm +! INTEGER, EXTERNAL :: h5tinsert_array_c, h5tinsert_array_c2 +! namelen = LEN(name) +! if (present(perm)) then +! hdferr = h5tinsert_array_c(parent_id, name, namelen, offset, ndims,dims, member_id, perm) +! else +! hdferr = h5tinsert_array_c2(parent_id, name, namelen, offset, ndims,dims, member_id) +! end if +! +! END SUBROUTINE h5tinsert_array_f + +! +!****s* H5T/h5tarray_create_f +! +! NAME +! h5tarray_create_f +! +! PURPOSE +! Creates an array datatype object. +! +! INPUTS +! base_id - datatype identifier for the array +! base datatype +! rank - rank of the array +! dims - array dimension sizes +! OUTPUTS +! type_id - array datatype identifier +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tarray_create_f(base_id, rank, dims, type_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: base_id ! identifier of array base datatype INTEGER, INTENT(IN) :: rank ! Rank of the array INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: dims !Sizes of each array dimension INTEGER(HID_T), INTENT(OUT) :: type_id ! identifier of the array datatype INTEGER, INTENT(OUT) :: hdferr ! Error code - - -! INTEGER, EXTERNAL :: h5tarray_create_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tarray_create_c(base_id, rank, dims, type_id) USE H5GLOBAL @@ -2438,33 +2298,31 @@ CONTAINS END SUBROUTINE h5tarray_create_f -!---------------------------------------------------------------------- -! Name: h5tenum_create_f ! -! Purpose: Creates a new enumeration datatype. +!****s* H5T/h5tenum_create_f ! -! Inputs: -! parent_id - datatype identifier for base datatype -! Outputs: -! new_type_id - datatype identifier for the enumeration -! datatype -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tenum_create_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Creates a new enumeration datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! parent_id - datatype identifier for base datatype +! OUTPUTS +! new_type_id - datatype identifier for the enumeration datatype +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tenum_create_f(parent_id, new_type_id, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tenum_create_f(parent_id, new_type_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: parent_id ! Datatype identifier for ! the base datatype @@ -2472,10 +2330,8 @@ CONTAINS !datatype identifier for the ! new enumeration datatype INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5tenum_create_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tenum_create_c(parent_id, new_type_id) USE H5GLOBAL @@ -2490,41 +2346,38 @@ CONTAINS hdferr = h5tenum_create_c(parent_id, new_type_id) END SUBROUTINE h5tenum_create_f -!---------------------------------------------------------------------- -! Name: h5tenaum_insert_f ! -! Purpose: Inserts a new enumeration datatype member. +!****s* H5T/h5tenaum_insert_f ! -! Inputs: -! type_id - datatype identifier -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tenaum_insert_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Inserts a new enumeration datatype member. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tenum_insert_f(type_id, name, value, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tenum_insert_f(type_id, name, value, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier CHARACTER(LEN=*), INTENT(IN) :: name !Name of the new member INTEGER, INTENT(IN) :: value !value of the new member INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTEGER :: namelen -! INTEGER, EXTERNAL :: h5tenum_insert_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tenum_insert_c(type_id, name, namelen, value) USE H5GLOBAL @@ -2543,45 +2396,48 @@ CONTAINS hdferr = h5tenum_insert_c(type_id, name, namelen, value) END SUBROUTINE h5tenum_insert_f -!---------------------------------------------------------------------- -! Name: h5tenum_nameof_f ! -! Purpose: Returns the symbol name corresponding to a specified -! member of an enumeration datatype. +!****s* H5T/h5tenum_nameof_f ! -! Inputs: -! type_id - datatype identifier -! value - value of the enumeration datatype -! namelen - name buffer size -! Outputs: -! name - buffer to hold symbol name -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tenum_nameof_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Returns the symbol name corresponding to a specified +! member of an enumeration datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! value - value of the enumeration datatype +! namelen - name buffer size +! OUTPUTS +! name - buffer to hold symbol name +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tenum_nameof_f(type_id, value, namelen, name, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! NOTE +! According to the standard: Because an INTENT(OUT) variable is considered undefined +! on entry to the procedure, any default initialization specified for its type will +! be applied. So we need to blank out the "name" to be portable and eliminate any +! characters the "name' may contain upon entry, depending on compiler implementation. +! SOURCE + SUBROUTINE h5tenum_nameof_f(type_id, value, namelen, name, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier CHARACTER(LEN=*), INTENT(OUT) :: name !Name of the enumeration datatype. INTEGER(SIZE_T), INTENT(IN) :: namelen !length of the name INTEGER, INTENT(IN) :: value !value of the enumeration datatype. INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5tenum_nameof_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tenum_nameof_c(type_id, value, name, namelen) USE H5GLOBAL @@ -2596,47 +2452,47 @@ CONTAINS END FUNCTION h5tenum_nameof_c END INTERFACE + name(1:LEN(name)) = ' ' + hdferr = h5tenum_nameof_c(type_id, value, name, namelen) END SUBROUTINE h5tenum_nameof_f -!---------------------------------------------------------------------- -! Name: h5tenum_valuof_f ! -! Purpose: Returns the value corresponding to a specified -! member of an enumeration datatype. +!****s* H5T/h5tenum_valuof_f ! -! Inputs: -! type_id - datatype identifier -! name - symbol name -! Outputs: -! value - value of the enumeration datatype -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tenum_valuof_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Returns the value corresponding to a specified +! member of an enumeration datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! name - symbol name +! OUTPUTS +! value - value of the enumeration datatype +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tenum_valueof_f(type_id, name, value, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! SOURCE + SUBROUTINE h5tenum_valueof_f(type_id, name, value, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier CHARACTER(LEN=*), INTENT(IN) :: name !Name of the enumeration datatype. INTEGER, INTENT(OUT) :: value !value of the enumeration datatype. INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTEGER :: namelen -! INTEGER, EXTERNAL :: h5tenum_valueof_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tenum_valueof_c(type_id, name, namelen, value) USE H5GLOBAL @@ -2655,42 +2511,39 @@ CONTAINS hdferr = h5tenum_valueof_c(type_id, name, namelen, value) END SUBROUTINE h5tenum_valueof_f -!---------------------------------------------------------------------- -! Name: h5tget_member_value_f ! -! Purpose: Returns the value of an enumeration datatype member. +!****s* H5T/h5tget_member_value_f ! -! Inputs: -! type_id - datatype identifier -! member_no - number of the enumeration datatype member -! Outputs: -! value - value of the enumeration datatype -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_member_value_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Returns the value of an enumeration datatype member. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - datatype identifier +! member_no - number of the enumeration datatype member +! OUTPUTS +! value - value of the enumeration datatype +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_member_value_f(type_id, member_no, value, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_member_value_f(type_id, member_no, value, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: member_no !Number of the enumeration datatype member INTEGER, INTENT(OUT) :: value !value of the enumeration datatype. INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** -! INTEGER, EXTERNAL :: h5tget_member_value_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tget_member_value_c(type_id, member_no, value) USE H5GLOBAL @@ -2706,43 +2559,40 @@ CONTAINS hdferr = h5tget_member_value_c(type_id, member_no, value) END SUBROUTINE h5tget_member_value_f -!---------------------------------------------------------------------- -! Name: h5tset_tag_f ! -! Purpose: Tags an opaque datatype. +!****s* H5T/h5tset_tag_f ! -! Inputs: -! type_id - identifier for opaque datatype -! tag - unique ASCII string with which the opaque -! datatype is to be tagged. -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tset_tag_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Tags an opaque datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - identifier for opaque datatype +! tag - unique ASCII string with which the opaque +! datatype is to be tagged. +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tset_tag_f(type_id, tag, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tset_tag_f(type_id, tag, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier CHARACTER(LEN=*), INTENT(IN) :: tag !Unique ASCII string with which !the opaque datatype is to be tagged INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTEGER :: taglen -! INTEGER, EXTERNAL :: h5tset_tag_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tset_tag_c(type_id, tag, taglen) USE H5GLOBAL @@ -2760,45 +2610,42 @@ CONTAINS hdferr = h5tset_tag_c(type_id, tag, taglen) END SUBROUTINE h5tset_tag_f -!---------------------------------------------------------------------- -! Name: h5tget_tag_f ! -! Purpose: Gets the tag associated with an opaque datatype. +!****s* H5T/h5tget_tag_f ! -! Inputs: -! type_id - identifier for opaque datatype -! Outputs: -! tag - unique ASCII string associated with opaque -! datatype -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_tag_f ! -! Programmer: Elena Pourmal -! August 12, 1999 +! PURPOSE +! Gets the tag associated with an opaque datatype. ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). March 7, 2001 +! INPUTS +! type_id - identifier for opaque datatype +! OUTPUTS +! tag - unique ASCII string associated with opaque +! datatype +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_tag_f(type_id, tag,taglen, hdferr) +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! SOURCE + SUBROUTINE h5tget_tag_f(type_id, tag,taglen, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier - CHARACTER(LEN=*), INTENT(OUT) :: tag !Unique ASCII string with which - !the opaque datatype is to be tagged - INTEGER, INTENT(OUT) :: taglen !length of tag + CHARACTER(LEN=*), INTENT(OUT) :: tag ! Unique ASCII string with which + ! the opaque datatype is to be tagged + INTEGER, INTENT(OUT) :: taglen ! Length of tag + INTEGER(SIZE_T) :: tag_size ! Declared character length of tab INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5tget_tag_c -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE - INTEGER FUNCTION h5tget_tag_c(type_id, tag, taglen) + INTEGER FUNCTION h5tget_tag_c(type_id, tag, tag_size, taglen) USE H5GLOBAL !DEC$IF DEFINED(HDF5F90_WINDOWS) !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TGET_TAG_C'::h5tget_tag_c @@ -2806,42 +2653,45 @@ CONTAINS !DEC$ATTRIBUTES reference :: tag INTEGER(HID_T), INTENT(IN) :: type_id CHARACTER(LEN=*), INTENT(OUT) :: tag + INTEGER(SIZE_T), INTENT(IN) :: tag_size INTEGER, INTENT(OUT) :: taglen END FUNCTION h5tget_tag_c END INTERFACE - hdferr = h5tget_tag_c(type_id, tag, taglen) + tag_size = LEN(tag) + + hdferr = h5tget_tag_c(type_id, tag, tag_size, taglen ) END SUBROUTINE h5tget_tag_f -!---------------------------------------------------------------------- -! Name: h5tvlen_create_f ! -! Purpose: Creates a new variable-length datatype. +!****s* H5T/h5tvlen_create_f ! -! Inputs: -! type_id - identifier iof base datatype -! Outputs: -! vltype_id - identifier for VL datatype -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tvlen_create_f ! -! Programmer: Elena Pourmal -! Wednesday, October 23, 2002 +! PURPOSE +! Creates a new variable-length datatype. ! -! Modifications: +! INPUTS +! type_id - identifier iof base datatype +! OUTPUTS +! vltype_id - identifier for VL datatype +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: Only basic Fortran base datatypes are supported -!---------------------------------------------------------------------- - - SUBROUTINE h5tvlen_create_f(type_id, vltype_id, hdferr) +! AUTHOR +! Elena Pourmal +! Wednesday, October 23, 2002 +! +! NOTES +! Only basic Fortran base datatypes are supported +! +! SOURCE + SUBROUTINE h5tvlen_create_f(type_id, vltype_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(HID_T), INTENT(OUT) :: vltype_id ! VL datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - +!***** INTERFACE INTEGER FUNCTION h5tvlen_create_c(type_id, vltype_id) USE H5GLOBAL @@ -2856,42 +2706,37 @@ CONTAINS hdferr = h5tvlen_create_c(type_id, vltype_id) END SUBROUTINE h5tvlen_create_f -!---------------------------------------------------------------------- -! Name: h5tis_variable_str_f ! -! Purpose: Determines whether a dattype is a variable string. +!****s* H5T/h5tis_variable_str_f ! -! Inputs: -! type_id - - datartpe identifier -! Outputs: -! status - flag to indicate if datatype -! is a variable string -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tis_variable_str_f ! -! Programmer: Elena Pourmal -! March 12, 2003 +! PURPOSE +! Determines whether a dattype is a variable string. ! -! Modifications: +! INPUTS +! type_id - datartpe identifier +! OUTPUTS +! status - flag to indicate if datatype +! is a variable string +! hdferr - Returns 0 if successful and -1 if fails ! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tis_variable_str_f(type_id, status, hdferr) +! AUTHOR +! Elena Pourmal +! March 12, 2003 +! +! SOURCE + SUBROUTINE h5tis_variable_str_f(type_id, status, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier LOGICAL, INTENT(OUT) :: status ! Flag, idicates if datatype ! is a variable string or not ( TRUE or ! FALSE) INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** INTEGER :: flag ! "TRUE/FALSE/ERROR from C" -! INTEGER, EXTERNAL :: h5tis_variable_str_c -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tis_variable_str_c(type_id, flag) USE H5GLOBAL @@ -2909,52 +2754,47 @@ CONTAINS END SUBROUTINE h5tis_variable_str_f -!---------------------------------------------------------------------- -! Name: h5tget_member_class_f -! -! Purpose: Returns datatype class of compound datatype member. -! -! Inputs: -! type_id - - datartpe identifier -! member_no - index of compound datatype member -! Outputs: -! class - class type for compound dadtype member -! Can be one of the follwoing classes: -! H5T_NO_CLASS_F (error) -! H5T_INTEGER_F -! H5T_FLOAT_F -! H5T_TIME_F -! H5T_STRING_F -! H5T_BITFIELD_F -! H5T_OPAQUE_F -! H5T_COMPOUND_F -! H5T_REFERENCE_F -! H5T_ENUM_F -! H5T_VLEN_F -! H5T_ARRAY_F -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! April 6, 2005 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - - SUBROUTINE h5tget_member_class_f(type_id, member_no, class, hdferr) +! +!****s* H5T/h5tget_member_class_f +! +! NAME +! h5tget_member_class_f +! +! PURPOSE +! Returns datatype class of compound datatype member. +! +! INPUTS +! type_id - datartpe identifier +! member_no - index of compound datatype member +! OUTPUTS +! class - class type for compound dadtype member +! Valid classes: +! H5T_NO_CLASS_F (error) +! H5T_INTEGER_F +! H5T_FLOAT_F +! H5T_TIME_F +! H5T_STRING_F +! H5T_BITFIELD_F +! H5T_OPAQUE_F +! H5T_COMPOUND_F +! H5T_REFERENCE_F +! H5T_ENUM_F +! H5T_VLEN_F +! H5T_ARRAY_F +! hdferr - Returns 0 if successful and -1 if fails +! +! AUTHOR +! Elena Pourmal +! April 6, 2005 +! +! SOURCE + SUBROUTINE h5tget_member_class_f(type_id, member_no, class, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: member_no ! Member number INTEGER, INTENT(OUT) :: class ! Member class INTEGER, INTENT(OUT) :: hdferr ! Error code - -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_member_class_c(type_id, member_no, class) USE H5GLOBAL @@ -2971,36 +2811,35 @@ CONTAINS END SUBROUTINE h5tget_member_class_f -!---------------------------------------------------------------------- -! Name: h5tcommit_anon_f ! -! Purpose: Commits a transient datatype to a file, -! creating a new named datatype, -! but does not link it into the file structure. +!****s* H5T/h5tcommit_anon_f ! -! Inputs: -! loc_id - A file or group identifier specifying the file -! in which the new named datatype is to be created. -! dtype_id - A datatype identifier. +! NAME +! h5tcommit_anon_f ! -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! tcpl_id - A datatype creation property list identifier. -! (H5P_DEFAULT_F for the default property list.) -! tapl_id - A datatype access property list identifier. -! should always be passed as the value H5P_DEFAULT_F. +! PURPOSE +! Commits a transient datatype to a file, +! creating a new named datatype, +! but does not link it into the file structure. ! -! Programmer: M.S. Breitenfeld -! February 25, 2008 +! INPUTS +! loc_id - A file or group identifier specifying the file +! in which the new named datatype is to be created. +! dtype_id - A datatype identifier. ! -! Modifications: +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails +! OPTIONAL PARAMETERS +! tcpl_id - A datatype creation property list identifier. +! (H5P_DEFAULT_F for the default property list.) +! tapl_id - A datatype access property list identifier. +! should always be passed as the value H5P_DEFAULT_F. ! -! Comment: -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! February 25, 2008 +! +! SOURCE SUBROUTINE h5tcommit_anon_f(loc_id, dtype_id, hdferr, tcpl_id, tapl_id) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! A file or group identifier specifying @@ -3013,11 +2852,10 @@ CONTAINS ! (H5P_DEFAULT_F for the default property list.) INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tapl_id ! A datatype access property list identifier. ! should always be passed as the value H5P_DEFAULT_F. +!***** INTEGER(HID_T) :: tcpl_id_default INTEGER(HID_T) :: tapl_id_default -! MS FORTRAN needs explicit interface for C functions called here. -! INTERFACE INTEGER FUNCTION h5tcommit_anon_c(loc_id, dtype_id, & tcpl_id_default, tapl_id_default) @@ -3043,41 +2881,36 @@ CONTAINS END SUBROUTINE h5tcommit_anon_f -!---------------------------------------------------------------------- -! Name: h5tcommitted_f ! -! Purpose: Determines whether a datatype is a named type or a transient type. +!****s* H5T/h5tcommitted_f ! -! Inputs: -! dtype_id - A datatype identifier. +! NAME +! h5tcommitted_f ! -! Outputs: -! committed - .TRUE., if the datatype has been committed -! .FALSE., if the datatype has not been committed. -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: None +! PURPOSE +! Determines whether a datatype is a named type or a transient type. ! -! Programmer: M.S. Breitenfeld -! February 25, 2008 +! INPUTS +! dtype_id - A datatype identifier. ! -! Modifications: +! OUTPUTS +! committed - .TRUE., if the datatype has been committed +! .FALSE., if the datatype has not been committed. +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! M. Scot Breitenfeld +! February 25, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5tcommitted_f(dtype_id, committed, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dtype_id ! A datatype identifier LOGICAL, INTENT(OUT) :: committed ! .TRUE., if the datatype has been committed !.FALSE., if the datatype has not been committed. INTEGER, INTENT(OUT) :: hdferr ! Error code: -! Success: 0 -! Failure: -1 - -! MS FORTRAN needs explicit interface for C functions called here. -! +! Success: 0 +! Failure: -1 +!***** INTERFACE INTEGER FUNCTION h5tcommitted_c(dtype_id) USE H5GLOBAL @@ -3103,34 +2936,31 @@ CONTAINS END SUBROUTINE h5tcommitted_f -!---------------------------------------------------------------------- -! Name: H5Tdecode_f ! -! Purpose: Decode a binary object description of data type and return a new object handle. -! Inputs: -! buf - Buffer for the data space object to be decoded. -! obj_id - Object ID -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 +!****s* H5T/H5Tdecode_f ! -! Optional parameters: - NONE +! NAME +! H5Tdecode_f ! -! Programmer: M.S. Breitenfeld -! April 9, 2008 +! PURPOSE +! Decode a binary object description of data type and return a new object handle. +! INPUTS +! buf - Buffer for the data space object to be decoded. +! obj_id - Object ID +! OUTPUTS +! hdferr - Returns 0 if successful and -1 if fails ! -! Modifications: +! AUTHOR +! M. Scot Breitenfeld +! April 9, 2008 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5tdecode_f(buf, obj_id, hdferr) IMPLICIT NONE CHARACTER(LEN=*), INTENT(IN) :: buf ! Buffer for the data space object to be decoded. INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object ID INTEGER, INTENT(OUT) :: hdferr ! Error code - +!***** INTERFACE INTEGER FUNCTION h5tdecode_c(buf, obj_id) USE H5GLOBAL @@ -3147,38 +2977,34 @@ CONTAINS END SUBROUTINE h5tdecode_f -!---------------------------------------------------------------------- -! Name: H5Tencode_f -! -! Purpose: Encode a data type object description into a binary buffer. ! -! Inputs: -! obj_id - Identifier of the object to be encoded. -! buf - Buffer for the object to be encoded into. -! nalloc - The size of the allocated buffer. -! Outputs: -! nalloc - The size of the buffer needed. -! hdferr: - error code -! Success: 0 -! Failure: -1 +!****s* H5T/H5Tencode_f ! -! Optional parameters: - NONE +! NAME +! H5Tencode_f ! -! Programmer: M.S. Breitenfeld -! April 9, 2008 +! PURPOSE +! Encode a data type object description into a binary buffer. ! -! Modifications: +! INPUTS +! obj_id - Identifier of the object to be encoded. +! buf - Buffer for the object to be encoded into. +! nalloc - The size of the allocated buffer. +! OUTPUTS +! nalloc - The size of the buffer needed. +! hdferr - Returns 0 if successful and -1 if fails. ! -! Comment: -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! April 9, 2008 +! SOURCE SUBROUTINE h5tencode_f(obj_id, buf, nalloc, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: obj_id ! Identifier of the object to be encoded. CHARACTER(LEN=*), INTENT(OUT) :: buf ! Buffer for the object to be encoded into. INTEGER(SIZE_T), INTENT(INOUT) :: nalloc ! The size of the allocated buffer. INTEGER, INTENT(OUT) :: hdferr ! Error code - +!***** INTERFACE INTEGER FUNCTION h5tencode_c(buf, obj_id, nalloc) @@ -3197,37 +3023,33 @@ CONTAINS END SUBROUTINE h5tencode_f -!---------------------------------------------------------------------- -! Name: h5tget_create_plist_f ! -! Purpose: Returns a copy of a datatype creation property list. +!****s* H5T/h5tget_create_plist_f ! -! Inputs: -! dtype_id - Datatype identifier -! Outputs: -! dtpl_id - Datatype property list identifier -! hdferr: - Error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tget_create_plist_f ! -! Programmer: M.S. Breitenfeld -! April 9, 2008 +! PURPOSE +! Returns a copy of a datatype creation property list. ! -! Modifications: N/A +! INPUTS +! dtype_id - Datatype identifier +! OUTPUTS +! dtpl_id - Datatype property list identifier +! hdferr - Returns 0 if successful and -1 if fails ! -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! April 9, 2008 +! +! SOURCE SUBROUTINE h5tget_create_plist_f(dtype_id, dtpl_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dtype_id ! Datatype identifier INTEGER(HID_T), INTENT(OUT) :: dtpl_id ! Datatype property list identifier. INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure - -! MS FORTRAN needs explicit interface for C functions called here. -! +!***** INTERFACE INTEGER FUNCTION h5tget_create_plist_c(dtype_id, dtpl_id) USE H5GLOBAL @@ -3242,29 +3064,26 @@ CONTAINS hdferr = h5tget_create_plist_c(dtype_id, dtpl_id) END SUBROUTINE h5tget_create_plist_f -!---------------------------------------------------------------------- -! Name: h5tcompiler_conv_f ! -! Purpose: Check whether the library’s default conversion is hard conversion.R +!****s* H5T/h5tcompiler_conv_f ! -! Inputs: -! src_id - Identifier for the source datatype. -! dst_id - Identifier for the destination datatype. -! Outputs: -! flag - TRUE for compiler conversion, FALSE for library conversion -! hdferr: - Error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! NAME +! h5tcompiler_conv_f ! -! Programmer: M.S. Breitenfeld -! April 9, 2008 +! PURPOSE +! Check whether the library’s default conversion is hard conversion.R ! -! Modifications: N/A +! INPUTS +! src_id - Identifier for the source datatype. +! dst_id - Identifier for the destination datatype. +! OUTPUTS +! flag - TRUE for compiler conversion, FALSE for library conversion +! hdferr - Returns 0 if successful and -1 if fails ! -!---------------------------------------------------------------------- - +! AUTHOR +! M. Scot Breitenfeld +! April 9, 2008 +! SOURCE SUBROUTINE h5tcompiler_conv_f( src_id, dst_id, flag, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: src_id ! Identifier for the source datatype. @@ -3272,6 +3091,7 @@ CONTAINS LOGICAL, INTENT(OUT) :: flag ! .TRUE. for compiler conversion, .FALSE. for library conversion INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure +!***** INTEGER :: c_flag INTERFACE @@ -3293,35 +3113,31 @@ CONTAINS END SUBROUTINE h5tcompiler_conv_f -!---------------------------------------------------------------------- -! Name: h5tget_native_type_f ! -! Purpose: Returns the native datatype of a specified datatype. +!****s* H5T/h5tget_native_type_f ! -! Inputs: -! dtype_id - Datatype identifier for the dataset datatype. -! * -! direction - Direction of search: -! H5T_DIR_DEFAULT = 0, /*default direction is inscendent */ -! H5T_DIR_ASCEND = 1, /*in inscendent order */ -! H5T_DIR_DESCEND = 2 /*in descendent order */ -! * NOTE: In C it is defined as a structure: H5T_direction_t +! NAME +! h5tget_native_type_f ! -! Outputs: -! native_dtype_id - The native datatype identifier for the specified dataset datatype -! hdferr: - Error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Returns the native datatype of a specified datatype. ! -! Programmer: M.S. Breitenfeld -! June 18, 2008 +! INPUTS +! dtype_id - Datatype identifier for the dataset datatype. +! +! direction - Direction of search: +! H5T_DIR_DEFAULT = 0, /*default direction is inscendent */ +! H5T_DIR_ASCEND = 1, /*in inscendent order */ +! H5T_DIR_DESCEND = 2 /*in descendent order */ +! * NOTE: In C it is defined as a structure: H5T_direction_t ! -! Modifications: N/A -! -!---------------------------------------------------------------------- - +! OUTPUTS +! native_dtype_id - The native datatype identifier for the specified dataset datatype +! hdferr - Returns 0 if successful and -1 if fails +! AUTHOR +! M. Scot Breitenfeld +! June 18, 2008 +! SOURCE SUBROUTINE h5tget_native_type_f(dtype_id, direction, native_dtype_id, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dtype_id ! Datatype identifier @@ -3331,6 +3147,7 @@ CONTAINS INTEGER(HID_T), INTENT(OUT) :: native_dtype_id ! The native datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code: ! 0 on success and -1 on failure +!***** INTERFACE INTEGER FUNCTION h5tget_native_type_c(dtype_id, direction, native_dtype_id) USE H5GLOBAL diff --git a/fortran/src/H5Tff_F03.f90 b/fortran/src/H5Tff_F03.f90 new file mode 100644 index 0000000..925a5a8 --- /dev/null +++ b/fortran/src/H5Tff_F03.f90 @@ -0,0 +1,114 @@ +!****h* ROBODoc/H5T (F03) +! +! NAME +! H5T_PROVISIONAL +! +! PURPOSE +! This file contains Fortran 90 and Fortran 2003 interfaces for H5T functions. +! It contains the same functions as H5Tff_DEPRECIATE.f90 but includes the +! Fortran 2003 functions and the interface listings. This file will be compiled +! instead of H5Tff_DEPRECIATE.f90 if Fortran 2003 functions are enabled. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! *** IMPORTANT *** +! If you add a new H5T function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** + +MODULE H5T_PROVISIONAL + + USE H5GLOBAL + USE ISO_C_BINDING + + TYPE hvl_t + INTEGER(size_t) :: len ! Length of VL data (in base type units) + TYPE(C_PTR) :: p ! Pointer to VL data + END TYPE hvl_t + +CONTAINS + +!****s* H5T (F03)/H5Tconvert_f +! +! NAME +! H5Tconvert_f +! +! PURPOSE +! Converts data from between specified datatypes. +! +! INPUTS +! src_id - Identifier for the source datatype. +! dst_id - Identifier for the destination datatype. +! nelmts - Size of array buf. +! buf - Array containing pre-conversion values. +! background - Optional background buffer. +! plist_id - Dataset transfer property list identifier. +! +! OUTPUTS +! buf - Array containing post-conversion values. +! hdferr - error code: +! 0 on success and -1 on failure +! AUTHOR +! M. Scot Breitenfeld +! Decemember 8, 2008 +! +! SOURCE + SUBROUTINE h5tconvert_f(src_id, dst_id, nelmts, buf, hdferr, background, plist_id) + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(HID_T) , INTENT(IN) :: src_id + INTEGER(HID_T) , INTENT(IN) :: dst_id + INTEGER(SIZE_T), INTENT(IN) :: nelmts + TYPE(C_PTR) , INTENT(INOUT) :: buf + INTEGER , INTENT(OUT) :: hdferr + TYPE(C_PTR) , INTENT(INOUT), OPTIONAL :: background + INTEGER(HID_T) , INTENT(IN) , OPTIONAL :: plist_id +!***** + INTEGER(HID_T) :: plist_id_default + TYPE(C_PTR) :: background_default + + INTERFACE + INTEGER FUNCTION h5tconvert_c(src_id, dst_id, nelmts, buf, background, plist_id) + USE ISO_C_BINDING + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TCONVERT_C'::H5Tconvert_c + !DEC$ENDIF + INTEGER(HID_T) , INTENT(IN) :: src_id + INTEGER(HID_T) , INTENT(IN) :: dst_id + INTEGER(SIZE_T), INTENT(IN) :: nelmts + TYPE(C_PTR) , VALUE :: buf + TYPE(C_PTR) , VALUE :: background + INTEGER(HID_T) , INTENT(IN) :: plist_id + END FUNCTION h5tconvert_c + END INTERFACE + + plist_id_default = H5P_DEFAULT_F + IF(PRESENT(plist_id)) plist_id_default = plist_id + + background_default = C_NULL_PTR + IF(PRESENT(background)) background_default = background + + hdferr = H5Tconvert_c(src_id, dst_id, nelmts, buf, background_default, plist_id_default) + + END SUBROUTINE h5tconvert_f + +END MODULE H5T_PROVISIONAL + diff --git a/fortran/src/H5Tff_F90.f90 b/fortran/src/H5Tff_F90.f90 new file mode 100644 index 0000000..021773d --- /dev/null +++ b/fortran/src/H5Tff_F90.f90 @@ -0,0 +1,39 @@ +!****h* ROBODoc/H5T (F90) +! +! NAME +! MODULE H5T_PROVISIONAL +! +! PURPOSE +! This file contains Fortran 90 interfaces for H5T functions. It contains +! the same functions as H5Tff_F03.f90 but excludes the Fortran 2003 functions +! and the interface listings. This file will be compiled instead of H5Tff_F03.f90 +! if Fortran 2003 functions are not enabled. +! +! NOTE +! Currently contains no functions. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! *** IMPORTANT *** +! If you add a new H5D function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +!***** + +MODULE H5T_PROVISIONAL + +END MODULE H5T_PROVISIONAL diff --git a/fortran/src/H5Zf.c b/fortran/src/H5Zf.c index 8ad53c2..0427c23 100644 --- a/fortran/src/H5Zf.c +++ b/fortran/src/H5Zf.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5Zf/H5Zf + * PURPOSE + * This file contains C stubs for H5Z Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,23 +16,32 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for H5Z Fortran APIs */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" -/*---------------------------------------------------------------------------- - * Name: h5zunregister_c - * Purpose: Call H5Zunregister to unregister filter - * Inputs: filter identifier - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Zf/h5zunregister_c + * NAME + * h5zunregister_c + * PURPOSE + * Call H5Zunregister to unregister filter + * INPUTS + * filter identifier + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, March 12, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5zunregister_c (int_f *filter) +/******/ { int ret_value = -1; herr_t status; @@ -44,19 +58,28 @@ nh5zunregister_c (int_f *filter) ret_value = 0; return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5zfiletr_avail_c - * Purpose: Call H5Zfilter_avail to find if filter is available - * Inputs: filter - filter identifier - * Outputs: flag - status flag - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5Zf/h5zfiletr_avail_c + * NAME + * h5zfiletr_avail_c + * PURPOSE + * Call H5Zfilter_avail to find if filter is available + * INPUTS + * filter - filter identifier + * OUTPUTS + * flag - status flag + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Wednesday, March 12, 2003 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5zfilter_avail_c ( int_f *filter , int_f *flag ) +/******/ { int ret_value = 0; H5Z_filter_t c_filter; @@ -69,20 +92,29 @@ nh5zfilter_avail_c ( int_f *filter , int_f *flag ) return ret_value; } -/*---------------------------------------------------------------------------- - * Name: h5zget_filter_info_c - * Purpose: Call H5Zget_filter_info to find if filter has its encoder +/****if* H5Zf/h5zget_filter_info_c + * NAME + * h5zget_filter_info_c + * PURPOSE + * Call H5Zget_filter_info to find if filter has its encoder * and/or its decoder available - * Inputs: filter - filter identifier - * Outputs: flag - status flag - * Returns: 0 on success, -1 on failure - * Programmer: Nat Furrer and James Laird + * INPUTS + * filter - filter identifier + * OUTPUTS + * flag - status flag + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Nat Furrer and James Laird * Wednesday, June 16, 2004 - * Modifications: - *---------------------------------------------------------------------------*/ + * HISTORY + * + * SOURCE +*/ int_f nh5zget_filter_info_c ( int_f *filter , int_f *flag ) +/******/ { int ret_value = 0; H5Z_filter_t c_filter; diff --git a/fortran/src/H5Zff.f90 b/fortran/src/H5Zff.f90 index 750a7a5..ec68286 100644 --- a/fortran/src/H5Zff.f90 +++ b/fortran/src/H5Zff.f90 @@ -1,179 +1,196 @@ -! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -! Copyright by The HDF Group. * -! Copyright by the Board of Trustees of the University of Illinois. * -! All rights reserved. * -! * -! This file is part of HDF5. The full HDF5 copyright notice, including * -! terms governing use, modification, and redistribution, is contained in * -! the files COPYING and Copyright.html. COPYING can be found at the root * -! of the source code distribution tree; Copyright.html can be found at the * -! root level of an installed copy of the electronic HDF5 document set and * -! is linked from the top-level documents page. It can also be found at * -! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * -! access to either file, you may request a copy from help@hdfgroup.org. * -! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -! -! -! This file contains FORTRAN90 interfaces for H5I functions -! - MODULE H5Z - - USE H5GLOBAL - - CONTAINS - -!---------------------------------------------------------------------- -! Name: h5zunregister_f -! -! Purpose: Unregisters specified filetr -! -! Inputs: filter - filter; may have one of the following values: -! H5Z_FILTER_DEFLATE_F -! H5Z_FILTER_SHUFFLE_F -! H5Z_FILTER_FLETCHER32_F -! Outputs: -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! March 12, 2003 -! -! Modifications: -! -! Comment: -!---------------------------------------------------------------------- - SUBROUTINE h5zunregister_f(filter, hdferr) - IMPLICIT NONE - INTEGER, INTENT(IN) :: filter - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5zunregister_c -! Interface is needed for MS FORTRAN -! - INTERFACE - INTEGER FUNCTION h5zunregister_c (filter) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5ZUNREGISTER_C':: h5zunregister_c - !DEC$ENDIF - INTEGER, INTENT(IN) :: filter - END FUNCTION h5zunregister_c - END INTERFACE - hdferr = h5zunregister_c (filter) - END SUBROUTINE h5zunregister_f -!---------------------------------------------------------------------- -! Name: h5zfilter_avail_f -! -! Purpose: Queries if filter is available -! -! Inputs: -! filter - filter -! Outputs: -! status - status; .TRUE. if filter is available, -! .FALSE. otherwise -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! March 12, 2003 -! -! Modifications: -! -!---------------------------------------------------------------------- - SUBROUTINE h5zfilter_avail_f(filter, status, hdferr) - IMPLICIT NONE - INTEGER, INTENT(IN) :: filter ! Filter; may be one of the following: - ! H5Z_FILTER_DEFLATE_F - ! H5Z_FILTER_SHUFFLE_F - ! H5Z_FILTER_FLETCHER32_F - LOGICAL, INTENT(OUT) :: status ! Flag, idicates if filter - ! is availble not ( TRUE or - ! FALSE) - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: flag ! "TRUE/FALSE/ERROR from C" - -! INTEGER, EXTERNAL :: h5zfilter_avail_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5zfilter_avail_c(filter, flag) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5ZFILTER_AVAIL_C'::h5zfilter_avail_c - !DEC$ENDIF - INTEGER, INTENT(IN) :: filter - INTEGER :: flag - END FUNCTION h5zfilter_avail_c - END INTERFACE - - hdferr = h5zfilter_avail_c(filter, flag) - status = .TRUE. - if (flag .EQ. 0) status = .FALSE. - - END SUBROUTINE h5zfilter_avail_f - -!---------------------------------------------------------------------- -! Name: h5zget_filter_info_f -! -! Purpose: Queries if filter has its encoder and/or decoder -! available -! -! Inputs: -! filter - filter -! Outputs: -! config_flags - Bit vector possibly containing the -! following values: -! H5Z_FILTER_ENCODE_ENABLED_F -! H5Z_FILTER_DECODE_ENABLED_F -! hdferr: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Nat Furrer and James Laird -! June 16, 2004 -! -! Modifications: -! -!---------------------------------------------------------------------- - SUBROUTINE h5zget_filter_info_f(filter, config_flags, hdferr) - IMPLICIT NONE - INTEGER, INTENT(IN) :: filter ! Filter; may be one of the following: - ! H5Z_FILTER_DEFLATE_F - ! H5Z_FILTER_SHUFFLE_F - ! H5Z_FILTER_FLETCHER32_F - ! H5Z_FILTER_SZIP_F - INTEGER, INTENT(OUT) :: config_flags! Flag, indicates if filter - ! has its encoder and/or decoder - ! available - INTEGER, INTENT(OUT) :: hdferr ! Error code - -! INTEGER, EXTERNAL :: h5zget_filter_info_c -! MS FORTRAN needs explicit interface for C functions called here. -! - INTERFACE - INTEGER FUNCTION h5zget_filter_info_c(filter, config_flags) - USE H5GLOBAL - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5ZGET_FILTER_INFO_C'::h5zget_filter_info_c - !DEC$ENDIF - INTEGER, INTENT(IN) :: filter - INTEGER, INTENT(OUT) :: config_flags - END FUNCTION h5zget_filter_info_c - END INTERFACE - - hdferr = h5zget_filter_info_c(filter, config_flags) - - END SUBROUTINE h5zget_filter_info_f - - END MODULE H5Z +!****h* ROBODoc/H5Z +! +! NAME +! MODULE H5Z +! +! PURPOSE +! This file contains Fortran interfaces for H5Z functions. It includes +! all the functions that are independent on whether the Fortran 2003 functions +! are enabled or disabled. +! +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! *** IMPORTANT *** +! If you add a new H5Z function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** + +MODULE H5Z + + USE H5GLOBAL + +CONTAINS + +!****s* H5Z/h5zunregister_f +! +! NAME +! h5zunregister_f +! +! PURPOSE +! Unregisters specified filetr +! +! INPUTS +! filter - filter; may have one of the following values: +! H5Z_FILTER_DEFLATE_F +! H5Z_FILTER_SZIP_F +! H5Z_FILTER_NBIT_F +! H5Z_FILTER_SCALEOFFSET_F +! H5Z_FILTER_SHUFFLE_F +! H5Z_FILTER_FLETCHER32_F +! +! OUTPUTS +! hdferr - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! March 12, 2003 +! +! SOURCE + SUBROUTINE h5zunregister_f(filter, hdferr) + IMPLICIT NONE + INTEGER, INTENT(IN) :: filter + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTERFACE + INTEGER FUNCTION h5zunregister_c (filter) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5ZUNREGISTER_C':: h5zunregister_c + !DEC$ENDIF + INTEGER, INTENT(IN) :: filter + END FUNCTION h5zunregister_c + END INTERFACE + hdferr = h5zunregister_c (filter) + END SUBROUTINE h5zunregister_f + +!****s* H5Z/h5zfilter_avail_f +! NAME +! h5zfilter_avail_f +! +! PURPOSE +! Queries if filter is available +! +! INPUTS +! filter - filter +! OUTPUTS +! status - status; .TRUE. if filter is available, +! .FALSE. otherwise +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! March 12, 2003 +! +! SOURCE + SUBROUTINE h5zfilter_avail_f(filter, status, hdferr) + IMPLICIT NONE + INTEGER, INTENT(IN) :: filter ! Filter; may be one of the following: + ! H5Z_FILTER_DEFLATE_F + ! H5Z_FILTER_SZIP_F + ! H5Z_FILTER_NBIT_F + ! H5Z_FILTER_SCALEOFFSET_F + ! H5Z_FILTER_SHUFFLE_F + ! H5Z_FILTER_FLETCHER32_F + LOGICAL, INTENT(OUT) :: status ! Flag, idicates if filter + ! is availble not ( TRUE or + ! FALSE) + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + INTEGER :: flag ! "TRUE/FALSE/ERROR from C" + + INTERFACE + INTEGER FUNCTION h5zfilter_avail_c(filter, flag) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5ZFILTER_AVAIL_C'::h5zfilter_avail_c + !DEC$ENDIF + INTEGER, INTENT(IN) :: filter + INTEGER :: flag + END FUNCTION h5zfilter_avail_c + END INTERFACE + + hdferr = h5zfilter_avail_c(filter, flag) + status = .TRUE. + IF (flag .EQ. 0) status = .FALSE. + + END SUBROUTINE h5zfilter_avail_f +!****s* H5Z/h5zget_filter_info_f +! +! NAME +! h5zget_filter_info_f +! +! PURPOSE +! Queries if filter has its encoder and/or decoder +! available +! +! INPUTS +! filter - filter +! OUTPUTS +! config_flags - Bit vector possibly containing the +! following values: +! H5Z_FILTER_ENCODE_ENABLED_F +! H5Z_FILTER_DECODE_ENABLED_F +! hdferr: - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Nat Furrer and James Laird +! June 16, 2004 +! SOURCE + SUBROUTINE h5zget_filter_info_f(filter, config_flags, hdferr) + IMPLICIT NONE + INTEGER, INTENT(IN) :: filter ! Filter; may be one of the following: + ! H5Z_FILTER_DEFLATE_F + ! H5Z_FILTER_SZIP_F + ! H5Z_FILTER_NBIT_F + ! H5Z_FILTER_SCALEOFFSET_F + ! H5Z_FILTER_SHUFFLE_F + ! H5Z_FILTER_FLETCHER32_F + INTEGER, INTENT(OUT) :: config_flags! Flag, indicates if filter + ! has its encoder and/or decoder + ! available + INTEGER, INTENT(OUT) :: hdferr ! Error code +!***** + + INTERFACE + INTEGER FUNCTION h5zget_filter_info_c(filter, config_flags) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5ZGET_FILTER_INFO_C'::h5zget_filter_info_c + !DEC$ENDIF + INTEGER, INTENT(IN) :: filter + INTEGER, INTENT(OUT) :: config_flags + END FUNCTION h5zget_filter_info_c + END INTERFACE + + hdferr = h5zget_filter_info_c(filter, config_flags) + + END SUBROUTINE h5zget_filter_info_f + +END MODULE H5Z diff --git a/fortran/src/H5_DBLE_InterfaceExclude.f90 b/fortran/src/H5_DBLE_InterfaceExclude.f90 index b3bafa1..2a3e26f 100644 --- a/fortran/src/H5_DBLE_InterfaceExclude.f90 +++ b/fortran/src/H5_DBLE_InterfaceExclude.f90 @@ -29,7 +29,7 @@ ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! ! AUTHOR -! M.S. Breitenfeld +! M. Scot Breitenfeld ! !***** diff --git a/fortran/src/H5_DBLE_InterfaceInclude.f90 b/fortran/src/H5_DBLE_InterfaceInclude.f90 index 4e7dbfb..7006693 100644 --- a/fortran/src/H5_DBLE_InterfaceInclude.f90 +++ b/fortran/src/H5_DBLE_InterfaceInclude.f90 @@ -30,7 +30,7 @@ ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! ! AUTHOR -! M.S. Breitenfeld +! M. Scot Breitenfeld ! !***** diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c index 12c55af..05b7da0 100644 --- a/fortran/src/H5_f.c +++ b/fortran/src/H5_f.c @@ -1,4 +1,9 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****ih* H5_f/H5_f + * PURPOSE + * This file contains C stubs for H5 Fortran APIs + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,36 +16,42 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This files contains C stubs for H5 Fortran APIs */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "H5f90.h" -/*--------------------------------------------------------------------------- - * Name: h5init_types_c - * Purpose: Initialize predefined datatypes in Fortran - * Inputs: types - array with the predefined Native Fortran - * type, its element and length must be the - * same as the types array defined in the - * H5f90global.f90 - * floatingtypes - array with the predefined Floating Fortran - * type, its element and length must be the - * same as the floatingtypes array defined in the - * H5f90global.f90 - * integertypes - array with the predefined Integer Fortran - * type, its element and length must be the - * same as the integertypes array defined in the - * H5f90global.f90 - * Outputs: None - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Tuesday, August 3, 1999 - *---------------------------------------------------------------------------*/ +/****if* H5_f/h5init_types_c + * NAME + * h5init_types_c + * PURPOSE + * Initialize predefined datatypes in Fortran + * INPUTS + * types - array with the predefined Native Fortran + * type, its element and length must be the + * same as the types array defined in the + * H5f90global.f90 + * floatingtypes - array with the predefined Floating Fortran + * type, its element and length must be the + * same as the floatingtypes array defined in the + * H5f90global.f90 + * integertypes - array with the predefined Integer Fortran + * type, its element and length must be the + * same as the integertypes array defined in the + * H5f90global.f90 + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Tuesday, August 3, 1999 + * SOURCE +*/ int_f nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertypes ) +/******/ { - int ret_value = -1; hid_t c_type_id; size_t tmp_val; @@ -91,8 +102,6 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype if(H5Tset_strpad(c_type_id, H5T_STR_SPACEPAD) < 0) return ret_value; types[3] = (hid_t_f)c_type_id; - - /* if ((types[3] = H5Tcopy(H5T_C_S1)) < 0) return ret_value; if(H5Tset_strpad(types[3],H5T_STR_NULLTERM) < 0) return ret_value; @@ -104,7 +113,9 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype */ if ((types[4] = (hid_t_f)H5Tcopy(H5T_STD_REF_OBJ)) < 0) return ret_value; if ((types[5] = (hid_t_f)H5Tcopy(H5T_STD_REF_DSETREG)) < 0) return ret_value; - + /* + * FIND H5T_NATIVE_INTEGER_1 + */ if (sizeof(int_1_f) == sizeof(char)) { if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value; } /*end if */ @@ -117,7 +128,9 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype else if (sizeof(int_1_f) == sizeof(long long)) { if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; } /*end else */ - + /* + * FIND H5T_NATIVE_INTEGER_2 + */ if (sizeof(int_2_f) == sizeof(char)) { if ((types[7] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value; } /*end if */ @@ -130,7 +143,9 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype else if (sizeof(int_2_f) == sizeof(long long)) { if ((types[7] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; } /*end else */ - + /* + * FIND H5T_NATIVE_INTEGER_4 + */ if (sizeof(int_4_f) == sizeof(char)) { if ((types[8] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value; } /*end if */ @@ -143,7 +158,9 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype else if (sizeof(int_4_f) == sizeof(long long)) { if ((types[8] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; } /*end else */ - + /* + * FIND H5T_NATIVE_INTEGER_8 + */ if (sizeof(int_8_f) == sizeof(char)) { if ((types[9] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value; } /*end if */ @@ -156,7 +173,9 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype else if (sizeof(int_8_f) == sizeof(long long)) { if ((types[9] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; } /*end else */ - + /* + * FIND H5T_NATIVE_REAL_4 + */ if (sizeof(real_4_f) == sizeof(float)) { if ((types[10] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; } /*end if */ @@ -168,7 +187,9 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype if ((types[10] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; } /*end else */ #endif - + /* + * FIND H5T_NATIVE_REAL_8 + */ if (sizeof(real_8_f) == sizeof(float)) { if ((types[11] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; } /*end if */ @@ -180,7 +201,9 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype if ((types[11] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; } /*end else */ #endif - + /* + * FIND H5T_NATIVE_REAL_16 + */ if (sizeof(real_16_f) == sizeof(float)) { if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; } /*end if */ @@ -192,6 +215,13 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; } /*end else */ #endif + /* + * FIND H5T_NATIVE_B_8 + */ + if ((types[13] = (hid_t_f)H5Tcopy(H5T_NATIVE_B8)) < 0) return ret_value; + if ((types[14] = (hid_t_f)H5Tcopy(H5T_NATIVE_B16)) < 0) return ret_value; + if ((types[15] = (hid_t_f)H5Tcopy(H5T_NATIVE_B32)) < 0) return ret_value; + if ((types[16] = (hid_t_f)H5Tcopy(H5T_NATIVE_B64)) < 0) return ret_value; if ((floatingtypes[0] = (hid_t_f)H5Tcopy(H5T_IEEE_F32BE)) < 0) return ret_value; if ((floatingtypes[1] = (hid_t_f)H5Tcopy(H5T_IEEE_F32LE)) < 0) return ret_value; @@ -213,7 +243,18 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype if ((integertypes[12] = (hid_t_f)H5Tcopy(H5T_STD_U32BE)) < 0) return ret_value; if ((integertypes[13] = (hid_t_f)H5Tcopy(H5T_STD_U32LE)) < 0) return ret_value; if ((integertypes[14] = (hid_t_f)H5Tcopy(H5T_STD_U64BE)) < 0) return ret_value; - if ((integertypes[15] = (hid_t_f)H5Tcopy(H5T_STD_U64LE)) < 0) return ret_value; + if ((integertypes[15] = (hid_t_f)H5Tcopy(H5T_STD_U64LE)) < 0) return ret_value; + if ((integertypes[17] = (hid_t_f)H5Tcopy(H5T_STD_B8BE)) < 0) return ret_value; + if ((integertypes[18] = (hid_t_f)H5Tcopy(H5T_STD_B8LE)) < 0) return ret_value; + if ((integertypes[19] = (hid_t_f)H5Tcopy(H5T_STD_B16BE)) < 0) return ret_value; + if ((integertypes[20] = (hid_t_f)H5Tcopy(H5T_STD_B16LE)) < 0) return ret_value; + if ((integertypes[21] = (hid_t_f)H5Tcopy(H5T_STD_B32BE)) < 0) return ret_value; + if ((integertypes[22] = (hid_t_f)H5Tcopy(H5T_STD_B32LE)) < 0) return ret_value; + if ((integertypes[23] = (hid_t_f)H5Tcopy(H5T_STD_B64BE)) < 0) return ret_value; + if ((integertypes[24] = (hid_t_f)H5Tcopy(H5T_STD_B64LE)) < 0) return ret_value; + if ((integertypes[25] = (hid_t_f)H5Tcopy(H5T_FORTRAN_S1)) < 0) return ret_value; + if ((integertypes[26] = (hid_t_f)H5Tcopy(H5T_C_S1)) < 0) return ret_value; + /* * Define Fortran H5T_STRING type to store non-fixed size strings */ @@ -224,42 +265,46 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype ret_value = 0; return ret_value; } - -/*--------------------------------------------------------------------------- - * Name: h5close_types_c - * Purpose: Closes predefined datatype in Fortran - * Inputs: types - array with the predefined Native Fortran - * type, its element and length must be the - * same as the types array defined in the - * H5f90global.f90 - * lentypes - length of the types array, which must be the - * same as the length of types array defined - * in the H5f90global.f90 - * floatingtypes - array with the predefined Floating Fortran - * type, its element and length must be the - * same as the floatingtypes array defined in the - * H5f90global.f90 - * floatinglen - length of the floatingtypes array, which must be the - * same as the length of floatingtypes array defined - * in the H5f90global.f90 - * integertypes - array with the predefined Integer Fortran - * type, its element and length must be the - * same as the integertypes array defined in the - * H5f90global.f90 - * integerlen - length of the floatingtypes array, which must be the - * same as the length of floatingtypes array defined - * in the H5f90global.f90 - * Outputs: None - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Tuesday, August 3, 1999 - *---------------------------------------------------------------------------*/ +/****if* H5_f/h5close_types_c + * NAME + * h5close_types_c + * PURPOSE + * Closes predefined datatype in Fortran + * INPUTS + * types - array with the predefined Native Fortran + * type, its element and length must be the + * same as the types array defined in the + * H5f90global.f90 + * lentypes - length of the types array, which must be the + * same as the length of types array defined + * in the H5f90global.f90 + * floatingtypes - array with the predefined Floating Fortran + * type, its element and length must be the + * same as the floatingtypes array defined in the + * H5f90global.f90 + * floatinglen - length of the floatingtypes array, which must be the + * same as the length of floatingtypes array defined + * in the H5f90global.f90 + * integertypes - array with the predefined Integer Fortran + * type, its element and length must be the + * same as the integertypes array defined in the + * H5f90global.f90 + * integerlen - length of the floatingtypes array, which must be the + * same as the length of floatingtypes array defined + * in the H5f90global.f90 + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Tuesday, August 3, 1999 + * SOURCE + */ 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 ) +/******/ { - int ret_value = -1; hid_t c_type_id; int i; @@ -279,32 +324,52 @@ nh5close_types_c( hid_t_f * types, int_f *lentypes, ret_value = 0; return ret_value; } -/*--------------------------------------------------------------------------- - * Name: h5init_flags_c - * Purpose: Initialize Fortran flags - * Inputs: h5d_flags - H5D inteface flags - * h5f_flags - H5F interface flags - * h5fd_flags - H5FD interface flags - * h5fd_hid_flags- H5FD interface flags of type hid_t - * h5g_flags - H5G interface flags - * h5i_flags - H5I interface flags - * h5p_flags - H5P interface flags - * h5p_flags_int - H5P intger interface flags - * h5r_flags - H5R interface flags - * h5s_flags - H5S interface flags - * h5t_flags - H5T interface flags - * h5z_flags - H5Z interface flags - * Outputs: None - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal - * Tuesday, August 3, 1999 - *---------------------------------------------------------------------------*/ +/****if* H5_f/h5init_flags_c + * NAME + * h5init_flags_c + * PURPOSE + * Initialize Fortran flags + * INPUTS + * h5d_flags - H5D inteface flags + * h5e_flags - H5E inteface flags + * h5e_hid_flags - H5E inteface flags of type hid_t + * h5f_flags - H5F interface flags + * h5fd_flags - H5FD interface flags + * h5fd_hid_flags - H5FD interface flags of type hid_t + * h5g_flags - H5G interface flags + * h5i_flags - H5I interface flags + * h5p_flags - H5P interface flags + * h5p_flags_int - H5P interface flags of type integer + * h5r_flags - H5R interface flags + * h5s_flags - H5S interface flags + * h5t_flags - H5T interface flags + * h5z_flags - H5Z interface flags + * OUTPUTS + * None + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Tuesday, August 3, 1999 + * HISTORY + * Added Z flags. EIP, March 12, 2003 + * Added more FD flags and new H5LIB flags + * Added more FD flags for HDF5 file driver + * EIP, April 9, 2005 + * Added Generic flags introduced in version 1.8 + * MSB, January, 2008 + * Added types in lines h5*_flags = ( )variable to match input + * Added E flags. + * MSB, July 9, 2009 + * SOURCE + */ int_f -nh5init_flags_c( int_f *h5d_flags, int_f *h5f_flags, +nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int_f *h5f_flags, int_f *h5fd_flags, hid_t_f *h5fd_hid_flags, int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags, hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, int_f *h5s_flags, int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags) +/******/ { int ret_value = -1; /* @@ -334,6 +399,15 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5f_flags, h5d_flags[21] = (int_f)H5D_CHUNK_CACHE_W0_DEFAULT; /* + * H5E flags + */ + h5e_hid_flags[0] = (hid_t_f)H5E_DEFAULT; + h5e_flags[0] = (int_f)H5E_MAJOR; + h5e_flags[1] = (int_f)H5E_MINOR; + h5e_flags[2] = (int_f)H5E_WALK_UPWARD; + h5e_flags[3] = (int_f)H5E_WALK_DOWNWARD; + +/* * H5F flags */ h5f_flags[0] = (int_f)H5F_ACC_RDWR; @@ -354,6 +428,7 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5f_flags, h5f_flags[15] = (int_f)H5F_OBJ_ALL; h5f_flags[16] = (int_f)H5F_LIBVER_EARLIEST; h5f_flags[17] = (int_f)H5F_LIBVER_LATEST; + h5f_flags[18] = (int_f)H5F_UNLIMITED; /* * H5FD flags @@ -533,8 +608,6 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5f_flags, /* * H5T flags */ - - h5t_flags[0] = (int_f)H5T_NO_CLASS; h5t_flags[1] = (int_f)H5T_INTEGER; h5t_flags[2] = (int_f)H5T_FLOAT; @@ -547,33 +620,33 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5f_flags, h5t_flags[9] = (int_f)H5T_ENUM; h5t_flags[10] = (int_f)H5T_ORDER_LE; h5t_flags[11] = (int_f)H5T_ORDER_BE; - h5t_flags[12] = (int_f)H5T_ORDER_VAX; - h5t_flags[13] = (int_f)H5T_ORDER_NONE; - h5t_flags[14] = (int_f)H5T_PAD_ZERO; - h5t_flags[15] = (int_f)H5T_PAD_ONE; - h5t_flags[16] = (int_f)H5T_PAD_BACKGROUND; - h5t_flags[17] = (int_f)H5T_PAD_ERROR; - h5t_flags[18] = (int_f)H5T_SGN_NONE; - h5t_flags[19] = (int_f)H5T_SGN_2; - h5t_flags[20] = (int_f)H5T_SGN_ERROR; - h5t_flags[21] = (int_f)H5T_NORM_IMPLIED; - h5t_flags[22] = (int_f)H5T_NORM_MSBSET; - h5t_flags[23] = (int_f)H5T_NORM_NONE; - h5t_flags[24] = (int_f)H5T_CSET_ASCII; - h5t_flags[25] = (int_f)H5T_CSET_UTF8; - h5t_flags[26] = (int_f)H5T_STR_NULLTERM; - h5t_flags[27] = (int_f)H5T_STR_NULLPAD; - h5t_flags[28] = (int_f)H5T_STR_SPACEPAD; - h5t_flags[29] = (int_f)H5T_STR_ERROR; - h5t_flags[30] = (int_f)H5T_VLEN; - h5t_flags[31] = (int_f)H5T_ARRAY; - h5t_flags[32] = (int_f)H5T_DIR_ASCEND; - h5t_flags[33] = (int_f)H5T_DIR_DESCEND; + h5t_flags[12] = (int_f)H5T_ORDER_MIXED; + h5t_flags[13] = (int_f)H5T_ORDER_VAX; + h5t_flags[14] = (int_f)H5T_ORDER_NONE; + h5t_flags[15] = (int_f)H5T_PAD_ZERO; + h5t_flags[16] = (int_f)H5T_PAD_ONE; + h5t_flags[17] = (int_f)H5T_PAD_BACKGROUND; + h5t_flags[18] = (int_f)H5T_PAD_ERROR; + h5t_flags[19] = (int_f)H5T_SGN_NONE; + h5t_flags[20] = (int_f)H5T_SGN_2; + h5t_flags[21] = (int_f)H5T_SGN_ERROR; + h5t_flags[22] = (int_f)H5T_NORM_IMPLIED; + h5t_flags[23] = (int_f)H5T_NORM_MSBSET; + h5t_flags[24] = (int_f)H5T_NORM_NONE; + h5t_flags[25] = (int_f)H5T_CSET_ASCII; + h5t_flags[26] = (int_f)H5T_CSET_UTF8; + h5t_flags[27] = (int_f)H5T_STR_NULLTERM; + h5t_flags[28] = (int_f)H5T_STR_NULLPAD; + h5t_flags[29] = (int_f)H5T_STR_SPACEPAD; + h5t_flags[30] = (int_f)H5T_STR_ERROR; + h5t_flags[31] = (int_f)H5T_VLEN; + h5t_flags[32] = (int_f)H5T_ARRAY; + h5t_flags[33] = (int_f)H5T_DIR_ASCEND; + h5t_flags[34] = (int_f)H5T_DIR_DESCEND; /* * H5Z flags */ - h5z_flags[0] = (int_f)H5Z_FILTER_ERROR; h5z_flags[1] = (int_f)H5Z_FILTER_NONE; h5z_flags[2] = (int_f)H5Z_FILTER_DEFLATE; @@ -588,6 +661,12 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5f_flags, h5z_flags[11] = (int_f)H5Z_FILTER_CONFIG_ENCODE_ENABLED; h5z_flags[12] = (int_f)H5Z_FILTER_CONFIG_DECODE_ENABLED; h5z_flags[13] = (int_f)H5Z_FILTER_ALL; + h5z_flags[14] = (int_f)H5Z_FILTER_NBIT; + h5z_flags[15] = (int_f)H5Z_FILTER_SCALEOFFSET; + h5z_flags[16] = (int_f)H5Z_SO_FLOAT_DSCALE; + h5z_flags[17] = (int_f)H5Z_SO_FLOAT_ESCALE; + h5z_flags[18] = (int_f)H5Z_SO_INT; + h5z_flags[19] = (int_f)H5Z_SO_INT_MINBITS_DEFAULT; /* * H5A flags */ @@ -619,6 +698,7 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5f_flags, int_f nh5init1_flags_c(int_f *h5lib_flags) +/******/ { int ret_value = -1; unsigned prm_1 = H5_SZIP_EC_OPTION_MASK; @@ -629,15 +709,22 @@ nh5init1_flags_c(int_f *h5lib_flags) 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 - *---------------------------------------------------------------------------*/ +/****if* H5_f/h5open_c + * NAME + * h5open_c + * PURPOSE + * Calls H5open call to initialize C HDF5 library + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * Friday, November 17, 2000 + * + * SOURCE + */ int_f nh5open_c(void) +/******/ { int ret_value = -1; @@ -645,16 +732,20 @@ nh5open_c(void) 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 - *---------------------------------------------------------------------------*/ +/****if* H5_f/h5close_c + * NAME + * h5close_c + * PURPOSE + * Calls H5close call to close C HDF5 library + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal + * SOURCE + */ int_f nh5close_c(void) +/******/ { int ret_value = -1; @@ -663,22 +754,31 @@ nh5close_c(void) return ret_value; } -/*--------------------------------------------------------------------------- - * Name: h5get_libversion_c - * Purpose: Calls H5get_libversion function +/****if* H5_f/h5get_libversion_c + * NAME + * h5get_libversion_c + * PURPOSE + * Calls H5get_libversion function * to retrieve library version info. - * Inputs: + * INPUTS + * * None - * Outputs: + * OUTPUTS + * * majnum - the major version of the library * minnum - the minor version of the library * relnum - the release version of the library - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, September 24, 2002 - *---------------------------------------------------------------------------*/ + * SOURCE + * + */ int_f nh5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum) +/******/ { int ret_value = -1; @@ -693,22 +793,30 @@ nh5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum) return ret_value; } -/*--------------------------------------------------------------------------- - * Name: h5check_version_c - * Purpose: Calls H5check_version function +/****if* H5_f/h5check_version_c + * NAME + * h5check_version_c + * PURPOSE + * Calls H5check_version function * to verify library version info. - * Inputs: + * INPUTS + * * majnum - the major version of the library * minnum - the minor version of the library * relnum - the release version of the library - * Outputs: + * OUTPUTS + * * None - * Returns: 0 on success, aborts on failure - * Programmer: Elena Pourmal + * RETURNS + * 0 on success, aborts on failure + * AUTHOR + * Elena Pourmal * Tuesday, September 24, 2002 - *---------------------------------------------------------------------------*/ + * SOURCE + */ int_f nh5check_version_c(int_f *majnum, int_f *minnum, int_f *relnum) +/******/ { int ret_value = -1; unsigned c_majnum, c_minnum, c_relnum; @@ -723,15 +831,21 @@ nh5check_version_c(int_f *majnum, int_f *minnum, int_f *relnum) return ret_value; } -/*--------------------------------------------------------------------------- - * Name: h5garbage_collect_c - * Purpose: Calls H5garbage_collect to collect on all free-lists of all types - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5_f/h5garbage_collect_c + * NAME + * h5garbage_collect_c + * PURPOSE + * Calls H5garbage_collect to collect on all free-lists of all types + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, September 24, 2002 - *---------------------------------------------------------------------------*/ + * SOURCE + */ int_f nh5garbage_collect_c(void) +/******/ { int ret_value = -1; @@ -740,15 +854,21 @@ nh5garbage_collect_c(void) return ret_value; } -/*--------------------------------------------------------------------------- - * Name: h5dont_atexit_c - * Purpose: Calls H5dont_atexit not to install atexit cleanup routine - * Returns: 0 on success, -1 on failure - * Programmer: Elena Pourmal +/****if* H5_f/h5dont_atexit_c + * NAME + * h5dont_atexit_c + * PURPOSE + * Calls H5dont_atexit not to install atexit cleanup routine + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * Elena Pourmal * Tuesday, September 24, 2002 - *---------------------------------------------------------------------------*/ + * SOURCE + */ int_f nh5dont_atexit_c(void) +/******/ { int ret_value = -1; diff --git a/fortran/src/H5_ff.f90 b/fortran/src/H5_ff.f90 index 7dffd0a..fdb8748 100644 --- a/fortran/src/H5_ff.f90 +++ b/fortran/src/H5_ff.f90 @@ -1,3 +1,17 @@ +!****h* ROBODoc/H5LIB +! +! NAME +! MODULE H5LIB +! +! PURPOSE +! This module provides fortran specific helper functions for the HDF library +! +! USES +! H5LIB_PROVISIONAL - This module provides helper functions for Fortran 2003 +! only features. If Fortran 2003 functions are enabled then +! H5_ff_F03.f90 is compiled, else H5_ff_F90.f90, +! which is just a place holder blank module, is compiled. +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,45 +27,55 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! NOTES +! *** IMPORTANT *** +! If you add a new function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +! +!***** + MODULE H5LIB + USE H5LIB_PROVISIONAL ! helper functions for Fortran 2003 features: + ! pre-Fortran 2003 - empty module + ! Forttran 2003 - contains functions + USE H5GLOBAL CONTAINS -!---------------------------------------------------------------------- -! Name: h5open_f +!****s* H5LIB/h5open_f ! -! Purpose: Initializes the HDF5 library and Fortran90 interface. +! NAME +! h5open_f ! -! Inputs: -! Outputs: -! error: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Initializes the HDF5 library and Fortran90 interface. ! -! Programmer: Elena Pourmal -! August 12, 1999 +! OUTPUTS +! error - error code +! Success: 0 +! Failure: -1 +! AUTHOR +! Elena Pourmal +! August 12, 1999 ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 ! -! Comment: -!---------------------------------------------------------------------- +! SOURCE SUBROUTINE h5open_f(error) USE H5GLOBAL - IMPLICIT NONE INTEGER, INTENT(OUT) :: error +!***** INTEGER :: error_0, error_1, error_2, error_3 -! INTEGER, EXTERNAL :: h5init_types_c -! INTEGER, EXTERNAL :: h5init_flags_c -! INTEGER, EXTERNAL :: h5init1_flags_c -! INTEGER, EXTERNAL :: h5open_c -! -! MS FORTRAN needs explicit interfaces for C functions called here. -! +! INTEGER, EXTERNAL :: h5init_types_c +! INTEGER, EXTERNAL :: h5init_flags_c +! INTEGER, EXTERNAL :: h5init1_flags_c +! INTEGER, EXTERNAL :: h5open_c + INTERFACE INTEGER FUNCTION h5open_c() !DEC$IF DEFINED(HDF5F90_WINDOWS) @@ -72,6 +96,8 @@ CONTAINS END INTERFACE INTERFACE INTEGER FUNCTION h5init_flags_c(i_H5D_flags, & + i_H5E_flags, & + i_H5E_hid_flags, & i_H5F_flags, & i_H5FD_flags, & i_H5FD_hid_flags, & @@ -87,9 +113,11 @@ CONTAINS i_H5Z_flags, & i_H5generic_flags) USE H5GLOBAL + INTEGER i_H5D_flags(H5D_FLAGS_LEN) + INTEGER i_H5E_flags(H5E_FLAGS_LEN) + INTEGER(HID_T) i_H5E_hid_flags(H5E_HID_FLAGS_LEN) INTEGER i_H5F_flags(H5F_FLAGS_LEN) INTEGER i_H5G_flags(H5G_FLAGS_LEN) - INTEGER i_H5D_flags(H5D_FLAGS_LEN) INTEGER i_H5FD_flags(H5FD_FLAGS_LEN) INTEGER(HID_T) i_H5FD_hid_flags(H5FD_HID_FLAGS_LEN) INTEGER i_H5I_flags(H5I_FLAGS_LEN) @@ -102,9 +130,9 @@ CONTAINS INTEGER i_H5T_flags(H5T_FLAGS_LEN) INTEGER i_H5Z_flags(H5Z_FLAGS_LEN) INTEGER i_H5generic_flags(H5generic_FLAGS_LEN) - !DEC$IF DEFINED(HDF5F90_WINDOWS) - !DEC$ATTRIBUTES C,reference,decorate,alias:'H5INIT_FLAGS_C'::h5init_flags_c - !DEC$ENDIF + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5INIT_FLAGS_C'::h5init_flags_c + !DEC$ENDIF END FUNCTION h5init_flags_c END INTERFACE INTERFACE @@ -119,6 +147,8 @@ CONTAINS error_0 = h5open_c() error_1 = h5init_types_c(predef_types, floating_types, integer_types) error_2 = h5init_flags_c(H5D_flags, & + H5E_flags, & + H5E_hid_flags, & H5F_flags, & H5FD_flags, & H5FD_hid_flags, & @@ -137,35 +167,36 @@ CONTAINS error = error_0 + error_1 + error_2 + error_3 END SUBROUTINE h5open_f -!---------------------------------------------------------------------- -! Name: h5close_f +!****s* H5LIB/h5close_f ! -! Purpose: Closes the HDF5 library and Fortran90 interface. +! NAME +! h5close_f ! -! Inputs: -! Outputs: -! error: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Closes the HDF5 library and Fortran90 interface. ! -! Programmer: Elena Pourmal -! August 12, 1999 +! OUTPUTS +! error - error code +! Success: 0 +! Failure: -1 ! -! Modifications: Explicit Fortran interfaces were added for -! called C functions (it is needed for Windows -! port). February 28, 2001 -! -! Comment: -!---------------------------------------------------------------------- +! AUTHOR +! Elena Pourmal +! August 12, 1999 +! +! HISTORY +! Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! SOURCE SUBROUTINE h5close_f(error) USE H5GLOBAL - IMPLICIT NONE - INTEGER :: error_1, error_2 INTEGER, INTENT(OUT) :: error +!***** + INTEGER :: error_1, error_2 ! INTEGER, EXTERNAL :: h5close_types_c, h5close_c INTERFACE INTEGER FUNCTION h5close_c() @@ -198,33 +229,32 @@ CONTAINS END SUBROUTINE h5close_f -!---------------------------------------------------------------------- -! Name: h5get_libversion_f -! -! Purpose: Returns the HDF5 LIbrary release number -! -! Inputs: -! Outputs: -! majnum: - major version of the library -! minum: - minor version of the library -! relnum: - release version of the library -! error: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! September 24, 2002 -! -! Comment: -!---------------------------------------------------------------------- - +!****s* H5LIB/h5get_libversion_f +! +! NAME +! h5get_libversion_f +! +! PURPOSE +! Returns the HDF5 LIbrary release number +! +! OUTPUTS +! majnum - major version of the library +! minum - minor version of the library +! relnum - release version of the library +! error - error code +! Success: 0 +! Failure: -1 +! +! AUTHOR +! Elena Pourmal +! September 24, 2002 +! +! SOURCE SUBROUTINE h5get_libversion_f(majnum, minnum, relnum, error) USE H5GLOBAL - IMPLICIT NONE INTEGER, INTENT(OUT) :: majnum, minnum, relnum, error +!***** INTERFACE INTEGER FUNCTION h5get_libversion_c(majnum, minnum, relnum) !DEC$IF DEFINED(HDF5F90_WINDOWS) @@ -238,34 +268,34 @@ CONTAINS END SUBROUTINE h5get_libversion_f -!---------------------------------------------------------------------- -! Name: h5check_version_f -! -! Purpose: Verifies that library versions are consistent. -! -! Inputs: -! majnum: - major version of the library -! minum: - minor version of the library -! relnum: - release version of the library -! Outputs: -! error: - error code -! Success: 0 -! Failure: application aborts -! Optional parameters: -! NONE -! -! Programmer: Elena Pourmal -! September 24, 2002 -! -! Comment: -!---------------------------------------------------------------------- - +!****s* H5LIB/h5check_version_f +! +! NAME +! h5check_version_f +! +! PURPOSE +! Verifies that library versions are consistent. +! +! INPUTS +! majnum - major version of the library +! minum - minor version of the library +! relnum - release version of the library +! OUTPUTS +! error - error code +! Success: 0 +! Failure: application aborts +! +! AUTHOR +! Elena Pourmal +! September 24, 2002 +! +! SOURCE SUBROUTINE h5check_version_f(majnum, minnum, relnum, error) USE H5GLOBAL - IMPLICIT NONE INTEGER, INTENT(IN) :: majnum, minnum, relnum INTEGER, INTENT(OUT) :: error +!***** INTERFACE INTEGER FUNCTION h5check_version_c(majnum, minnum, relnum) !DEC$IF DEFINED(HDF5F90_WINDOWS) @@ -278,32 +308,29 @@ CONTAINS error = h5check_version_c(majnum, minnum, relnum) END SUBROUTINE h5check_version_f - -!---------------------------------------------------------------------- -! Name: h5garbage_collect_f +!****s* H5LIB/h5garbage_collect_f ! -! Purpose: Garbage collects on all free-lists of all types. +! NAME +! h5garbage_collect_f ! -! Inputs: -! Outputs: -! error: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Garbage collects on all free-lists of all types. ! -! Programmer: Elena Pourmal -! September 24, 2002 +! OUTPUTS +! error - error code +! Success: 0 +! Failure: -1 ! +! AUTHOR +! Elena Pourmal +! September 24, 2002 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5garbage_collect_f(error) USE H5GLOBAL - IMPLICIT NONE INTEGER, INTENT(OUT) :: error +!***** INTERFACE INTEGER FUNCTION h5garbage_collect_c() !DEC$IF DEFINED(HDF5F90_WINDOWS) @@ -315,32 +342,29 @@ CONTAINS error = h5garbage_collect_c() END SUBROUTINE h5garbage_collect_f - -!---------------------------------------------------------------------- -! Name: h5dont_atexit_f +!****s* H5LIB/h5dont_atexit_f ! -! Purpose: Instructs library not to install atexit cleanup routine. +! NAME +! h5dont_atexit_f ! -! Inputs: -! Outputs: -! error: - error code -! Success: 0 -! Failure: -1 -! Optional parameters: -! NONE +! PURPOSE +! Instructs library not to install atexit cleanup routine. ! -! Programmer: Elena Pourmal -! September 24, 2002 +! OUTPUTS +! error - error code +! Success: 0 +! Failure: -1 ! +! AUTHOR +! Elena Pourmal +! September 24, 2002 ! -! Comment: -!---------------------------------------------------------------------- - +! SOURCE SUBROUTINE h5dont_atexit_f(error) USE H5GLOBAL - IMPLICIT NONE INTEGER, INTENT(OUT) :: error +!***** INTERFACE INTEGER FUNCTION h5dont_atexit_c() !DEC$IF DEFINED(HDF5F90_WINDOWS) @@ -352,4 +376,54 @@ CONTAINS error = h5dont_atexit_c() END SUBROUTINE h5dont_atexit_f + +!****f* H5LIB/h5kind_to_type +! +! NAME +! h5kind_to_type +! +! PURPOSE +! Converts the KIND to the correct HDF type +! +! INPUTS +! kind - Fortran KIND parameter +! flag - whether KIND is of type INTEGER or REAL: +! H5_INTEGER_KIND - integer +! H5_REAL_KIND - real +! OUTPUTS +! h5_type - returns the type +! +! AUTHOR +! M. Scot Breitenfeld +! Augest 25, 2008 +! +! SOURCE + INTEGER(HID_T) FUNCTION h5kind_to_type(kind, flag) RESULT(h5_type) + USE H5GLOBAL + IMPLICIT NONE + INTEGER, INTENT(IN) :: kind + INTEGER, INTENT(IN) :: flag +!***** + IF(flag.EQ.H5_INTEGER_KIND)THEN + IF(kind.EQ.Fortran_INTEGER_1)THEN + h5_type = H5T_NATIVE_INTEGER_1 + ELSE IF(kind.EQ.Fortran_INTEGER_2)THEN + h5_type = H5T_NATIVE_INTEGER_2 + ELSE IF(kind.EQ.Fortran_INTEGER_4)THEN + h5_type = H5T_NATIVE_INTEGER_4 + ELSE IF(kind.EQ.Fortran_INTEGER_8)THEN + h5_type = H5T_NATIVE_INTEGER_8 + ENDIF + ELSE IF(flag.EQ.H5_REAL_KIND)THEN + IF(kind.EQ.Fortran_REAL_4)THEN + h5_type = H5T_NATIVE_REAL_4 + ELSE IF(kind.EQ.Fortran_REAL_8)THEN + h5_type = H5T_NATIVE_REAL_8 + ELSE IF(kind.EQ.Fortran_REAL_16)THEN + h5_type = H5T_NATIVE_REAL_16 + ENDIF + ENDIF + + END FUNCTION h5kind_to_type + END MODULE H5LIB diff --git a/fortran/src/H5_ff_F03.f90 b/fortran/src/H5_ff_F03.f90 new file mode 100644 index 0000000..57b186d --- /dev/null +++ b/fortran/src/H5_ff_F03.f90 @@ -0,0 +1,72 @@ +!****h* ROBODoc/H5LIB_PROVISIONAL +! +! NAME +! MODULE H5LIB_PROVISIONAL +! +! PURPOSE +! This file contains helper functions for Fortran 2003 features and is +! only compiled when Fortran 2003 features are enabled, otherwise +! the file H5_ff_F90.f90 is compiled. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! NOTES +! *** IMPORTANT *** +! If you add a new function you must add the function name to the +! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory. +! This is needed for Windows based operating systems. +!***** + +MODULE H5LIB_PROVISIONAL + +CONTAINS +!****f* H5LIB_PROVISIONAL/h5offsetof +! +! NAME +! h5offsetof +! +! PURPOSE +! Computes the offset in memory +! +! INPUTS +! start - starting pointer address +! end - ending pointer address +! +! OUTPUTS +! offset - offset +! +! AUTHOR +! M. Scot Breitenfeld +! Augest 25, 2008 +! +! SOURCE + FUNCTION h5offsetof(start,end) RESULT(offset) + USE, INTRINSIC :: ISO_C_BINDING + USE H5GLOBAL + IMPLICIT NONE + INTEGER(SIZE_T) :: offset + TYPE(C_PTR), VALUE, INTENT(IN) :: start, end +!***** + INTEGER(C_INTPTR_T) :: int_address_start, int_address_end + int_address_start = TRANSFER(start, int_address_start) + int_address_end = TRANSFER(end , int_address_end ) + + offset = int_address_end - int_address_start + + END FUNCTION h5offsetof + +END MODULE H5LIB_PROVISIONAL diff --git a/fortran/src/H5_ff_F90.f90 b/fortran/src/H5_ff_F90.f90 new file mode 100644 index 0000000..a5d303a --- /dev/null +++ b/fortran/src/H5_ff_F90.f90 @@ -0,0 +1,34 @@ +!****h* ROBODoc/H5LIB_PROVISIONAL (F90) +! +! NAME +! MODULE H5LIB_PROVISIONAL +! +! FILE +! fortran/src/H5_ff_F90.f90 +! +! PURPOSE +! This file is a dummy module for when Fortran 2003 features are not enabled. +! It is compiled in place of H5_ff_F03.f90 and is empty. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +!***** + +MODULE H5LIB_PROVISIONAL + + +END MODULE H5LIB_PROVISIONAL diff --git a/fortran/src/H5f90global.f90 b/fortran/src/H5f90global.f90 index 05ec366..da7a736 100644 --- a/fortran/src/H5f90global.f90 +++ b/fortran/src/H5f90global.f90 @@ -1,22 +1,25 @@ -!****h* fortran/src/H5f90global.f90 +!****h* ROBODoc/H5GLOBAL ! ! NAME -! H5GLOBAL +! MODULE H5GLOBAL ! -! FUNCTION -! This module is used to pass C stubs for H5 Fortran APIs. The C stubs are -! packed into arrays in H5_f.c and these arrays are then passed to Fortran. -! This module then uses EQUIVALENCE to assign elements of the arrays to -! Fortran equivalent C stubs. +! FILE +! src/fortran/H5f90global.f90 +! +! PURPOSE +! This module is used to pass C stubs for H5 Fortran APIs. The C stubs are +! packed into arrays in H5_f.c and these arrays are then passed to Fortran. +! This module then uses EQUIVALENCE to assign elements of the arrays to +! Fortran equivalent C stubs. ! ! NOTES -! The size of the C arrays in H5_f.c have to match the values of the variables -! declared as PARAMETER, hence if the size of an array in H5_f.c is changed -! then the PARAMETER of that corresponding array in Fortran must also be changed. +! The size of the C arrays in H5_f.c has to match the values of the variables +! declared as PARAMETER, hence if the size of an array in H5_f.c is changed +! then the PARAMETER of that corresponding array in Fortran must also be changed. ! ! USES -! H5FORTRAN_TYPES - This module is generated at run time. See -! H5fortran_types.f90 for further informaton. +! H5FORTRAN_TYPES - This module is generated at run time. See +! ! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * @@ -61,7 +64,7 @@ MODULE H5GLOBAL INTEGER, DIMENSION(1:REF_REG_BUF_LEN) :: ref END TYPE hdset_reg_ref_t_f - INTEGER, PARAMETER :: PREDEF_TYPES_LEN = 13 ! Do not forget to change this + INTEGER, PARAMETER :: PREDEF_TYPES_LEN = 17 ! Do not forget to change this ! value when new predefined ! datatypes are added @@ -71,7 +74,7 @@ MODULE H5GLOBAL ! Do not forget to change the following line when new predefined ! integer data types are added - INTEGER, PARAMETER :: INTEGER_TYPES_LEN = 17 + INTEGER, PARAMETER :: INTEGER_TYPES_LEN = 27 INTEGER(HID_T) H5T_NATIVE_INTEGER_1, & H5T_NATIVE_INTEGER_2, & @@ -106,7 +109,21 @@ MODULE H5GLOBAL H5T_STD_U32LE, & H5T_STD_U64BE, & H5T_STD_U64LE, & - H5T_STRING + H5T_STRING, & + H5T_STD_B8BE, & + H5T_STD_B8LE, & + H5T_STD_B16BE, & + H5T_STD_B16LE, & + H5T_STD_B32BE, & + H5T_STD_B32LE, & + H5T_STD_B64BE, & + H5T_STD_B64LE, & + H5T_NATIVE_B8, & + H5T_NATIVE_B16, & + H5T_NATIVE_B32, & + H5T_NATIVE_B64, & + H5T_FORTRAN_S1, & + H5T_C_S1 INTEGER(HID_T), DIMENSION(PREDEF_TYPES_LEN) :: predef_types @@ -123,7 +140,10 @@ MODULE H5GLOBAL EQUIVALENCE (predef_types(11), H5T_NATIVE_REAL_4) EQUIVALENCE (predef_types(12), H5T_NATIVE_REAL_8) EQUIVALENCE (predef_types(13), H5T_NATIVE_REAL_16) - + EQUIVALENCE (predef_types(14), H5T_NATIVE_B8 ) + EQUIVALENCE (predef_types(15), H5T_NATIVE_B16) + EQUIVALENCE (predef_types(16), H5T_NATIVE_B32) + EQUIVALENCE (predef_types(17), H5T_NATIVE_B64) INTEGER(HID_T), DIMENSION(FLOATING_TYPES_LEN) :: floating_types EQUIVALENCE (floating_types(1), H5T_IEEE_F32BE ) @@ -149,6 +169,16 @@ MODULE H5GLOBAL EQUIVALENCE (integer_types(15), H5T_STD_U64BE) EQUIVALENCE (integer_types(16), H5T_STD_U64LE) EQUIVALENCE (integer_types(17), H5T_STRING) + EQUIVALENCE (integer_types(18), H5T_STD_B8BE) + EQUIVALENCE (integer_types(19), H5T_STD_B8LE) + EQUIVALENCE (integer_types(20), H5T_STD_B16BE) + EQUIVALENCE (integer_types(21), H5T_STD_B16LE) + EQUIVALENCE (integer_types(22), H5T_STD_B32BE) + EQUIVALENCE (integer_types(23), H5T_STD_B32LE) + EQUIVALENCE (integer_types(24), H5T_STD_B64BE) + EQUIVALENCE (integer_types(25), H5T_STD_B64LE) + EQUIVALENCE (integer_types(26), H5T_FORTRAN_S1) + EQUIVALENCE (integer_types(27), H5T_C_S1) ! COMMON /PREDEFINED_TYPES/ H5T_NATIVE_INTEGER, & @@ -195,7 +225,7 @@ MODULE H5GLOBAL ! Fortran flags ! ! - ! H5F flags (DO NOT FORGET TO UPDATE WHEN NEW FLAGS ARE ADDEDD !) + ! H5F flags (DO NOT FORGET TO UPDATE WHEN NEW FLAGS ARE ADDED !) ! ! H5F flags declaration ! @@ -224,6 +254,7 @@ MODULE H5GLOBAL INTEGER :: H5F_OBJ_ALL_F INTEGER :: H5F_LIBVER_EARLIEST_F INTEGER :: H5F_LIBVER_LATEST_F + INTEGER :: H5F_UNLIMITED_F EQUIVALENCE(H5F_flags(1), H5F_ACC_RDWR_F) EQUIVALENCE(H5F_flags(2), H5F_ACC_RDONLY_F) @@ -243,6 +274,7 @@ MODULE H5GLOBAL EQUIVALENCE(H5F_flags(16), H5F_OBJ_ALL_F) EQUIVALENCE(H5F_flags(17), H5F_LIBVER_EARLIEST_F) EQUIVALENCE(H5F_flags(18), H5F_LIBVER_LATEST_F) + EQUIVALENCE(H5F_flags(19), H5F_UNLIMITED_F) ! ! H5generic flags declaration ! @@ -384,6 +416,32 @@ MODULE H5GLOBAL EQUIVALENCE(H5D_flags(22), H5D_CHUNK_CACHE_W0_DFLT_F) ! + ! H5E flags declaration + ! + INTEGER, PARAMETER :: H5E_FLAGS_LEN = 4 + INTEGER H5E_flags(H5E_FLAGS_LEN) + INTEGER, PARAMETER :: H5E_HID_FLAGS_LEN = 1 + INTEGER(HID_T) H5E_hid_flags(H5E_HID_FLAGS_LEN) + !DEC$if defined(BUILD_HDF5_DLL) + !DEC$ATTRIBUTES DLLEXPORT :: /H5E_FLAGS/ + !DEC$ATTRIBUTES DLLEXPORT :: /H5E_HID_FLAGS/ + !DEC$endif + COMMON /H5E_FLAGS/ H5E_flags + COMMON /H5E_HID_FLAGS/ H5E_hid_flags + + INTEGER(HID_T) :: H5E_DEFAULT_F + INTEGER :: H5E_MAJOR_F + INTEGER :: H5E_MINOR_F + INTEGER :: H5E_WALK_UPWARD_F + INTEGER :: H5E_WALK_DOWNWARD_F + + EQUIVALENCE(H5E_hid_flags(1), H5E_DEFAULT_F) + EQUIVALENCE(H5E_flags(1) , H5E_MAJOR_F) + EQUIVALENCE(H5E_flags(2) , H5E_MINOR_F) + EQUIVALENCE(H5E_flags(3) , H5E_WALK_UPWARD_F) + EQUIVALENCE(H5E_flags(4) , H5E_WALK_DOWNWARD_F) + + ! ! H5FD flags declaration ! INTEGER, PARAMETER :: H5FD_FLAGS_LEN = 11 @@ -501,10 +559,10 @@ MODULE H5GLOBAL !DEC$endif COMMON /H5O_FLAGS/ H5O_flags - INTEGER :: H5O_COPY_SHALLOW_HIERARCHY_F ! * THESE VARIABLES DO - INTEGER :: H5O_COPY_EXPAND_SOFT_LINK_F ! NOT MATCH THE C VARIABLE - INTEGER :: H5O_COPY_EXPAND_EXT_LINK_F ! IN ORDER - INTEGER :: H5O_COPY_EXPAND_REFERENCE_F ! TO STAY UNDER THE + INTEGER :: H5O_COPY_SHALLOW_HIERARCHY_F ! *** THESE VARIABLES DO + INTEGER :: H5O_COPY_EXPAND_SOFT_LINK_F ! NOT MATCH THE C VARIABLE + INTEGER :: H5O_COPY_EXPAND_EXT_LINK_F ! IN ORDER + INTEGER :: H5O_COPY_EXPAND_REFERENCE_F ! TO STAY UNDER THE INTEGER :: H5O_COPY_WITHOUT_ATTR_FLAG_F INTEGER :: H5O_COPY_PRESERVE_NULL_FLAG_F INTEGER :: H5O_COPY_ALL_F @@ -518,7 +576,7 @@ MODULE H5GLOBAL INTEGER :: H5O_HDR_CHUNK0_SIZE_F INTEGER :: H5O_HDR_ATTR_CRT_ORDER_TRACK_F ! 32 CHARACTER INTEGER :: H5O_HDR_ATTR_CRT_ORDER_INDEX_F ! VARIABLE - INTEGER :: H5O_HDR_ATTR_STORE_PHASE_CHA_F ! LENGTH * + INTEGER :: H5O_HDR_ATTR_STORE_PHASE_CHA_F ! LENGTH *** INTEGER :: H5O_HDR_STORE_TIMES_F INTEGER :: H5O_HDR_ALL_FLAGS_F INTEGER :: H5O_SHMESG_MAX_NINDEXES_F @@ -682,52 +740,51 @@ MODULE H5GLOBAL EQUIVALENCE(H5S_flags(18), H5S_SEL_POINTS_F) EQUIVALENCE(H5S_flags(19), H5S_SEL_HYPERSLABS_F) EQUIVALENCE(H5S_flags(20), H5S_SEL_ALL_F) - - ! ! H5T flags declaration ! - INTEGER, PARAMETER :: H5T_FLAGS_LEN = 34 + INTEGER, PARAMETER :: H5T_FLAGS_LEN = 35 INTEGER H5T_flags(H5T_FLAGS_LEN) !DEC$if defined(BUILD_HDF5_DLL) !DEC$ATTRIBUTES DLLEXPORT :: /H5T_FLAGS/ !DEC$endif COMMON /H5T_FLAGS/ H5T_flags - INTEGER :: H5T_NO_CLASS_F - INTEGER :: H5T_INTEGER_F - INTEGER :: H5T_FLOAT_F - INTEGER :: H5T_TIME_F - INTEGER :: H5T_STRING_F - INTEGER :: H5T_BITFIELD_F - INTEGER :: H5T_OPAQUE_F - INTEGER :: H5T_COMPOUND_F - INTEGER :: H5T_REFERENCE_F - INTEGER :: H5T_ENUM_F - INTEGER :: H5T_VLEN_F - INTEGER :: H5T_ARRAY_F - INTEGER :: H5T_ORDER_LE_F - INTEGER :: H5T_ORDER_BE_F - INTEGER :: H5T_ORDER_VAX_F - INTEGER :: H5T_ORDER_NONE_F - INTEGER :: H5T_PAD_ZERO_F - INTEGER :: H5T_PAD_ONE_F - INTEGER :: H5T_PAD_BACKGROUND_F - INTEGER :: H5T_PAD_ERROR_F - INTEGER :: H5T_SGN_NONE_F - INTEGER :: H5T_SGN_2_F - INTEGER :: H5T_SGN_ERROR_F - INTEGER :: H5T_NORM_IMPLIED_F - INTEGER :: H5T_NORM_MSBSET_F - INTEGER :: H5T_NORM_NONE_F - INTEGER :: H5T_CSET_ASCII_F - INTEGER :: H5T_CSET_UTF8_F - INTEGER :: H5T_STR_NULLTERM_F - INTEGER :: H5T_STR_NULLPAD_F - INTEGER :: H5T_STR_SPACEPAD_F - INTEGER :: H5T_STR_ERROR_F - INTEGER :: H5T_DIR_ASCEND_F - INTEGER :: H5T_DIR_DESCEND_F + INTEGER :: H5T_NO_CLASS_F + INTEGER :: H5T_INTEGER_F + INTEGER :: H5T_FLOAT_F + INTEGER :: H5T_TIME_F + INTEGER :: H5T_STRING_F + INTEGER :: H5T_BITFIELD_F + INTEGER :: H5T_OPAQUE_F + INTEGER :: H5T_COMPOUND_F + INTEGER :: H5T_REFERENCE_F + INTEGER :: H5T_ENUM_F + INTEGER :: H5T_VLEN_F + INTEGER :: H5T_ARRAY_F + INTEGER :: H5T_ORDER_LE_F + INTEGER :: H5T_ORDER_BE_F + INTEGER :: H5T_ORDER_VAX_F + INTEGER :: H5T_ORDER_NONE_F + INTEGER :: H5T_ORDER_MIXED_F + INTEGER :: H5T_PAD_ZERO_F + INTEGER :: H5T_PAD_ONE_F + INTEGER :: H5T_PAD_BACKGROUND_F + INTEGER :: H5T_PAD_ERROR_F + INTEGER :: H5T_SGN_NONE_F + INTEGER :: H5T_SGN_2_F + INTEGER :: H5T_SGN_ERROR_F + INTEGER :: H5T_NORM_IMPLIED_F + INTEGER :: H5T_NORM_MSBSET_F + INTEGER :: H5T_NORM_NONE_F + INTEGER :: H5T_CSET_ASCII_F + INTEGER :: H5T_CSET_UTF8_F + INTEGER :: H5T_STR_NULLTERM_F + INTEGER :: H5T_STR_NULLPAD_F + INTEGER :: H5T_STR_SPACEPAD_F + INTEGER :: H5T_STR_ERROR_F + INTEGER :: H5T_DIR_ASCEND_F + INTEGER :: H5T_DIR_DESCEND_F EQUIVALENCE(H5T_flags(1), H5T_NO_CLASS_F) EQUIVALENCE(H5T_flags(2), H5T_INTEGER_F) @@ -741,33 +798,33 @@ MODULE H5GLOBAL EQUIVALENCE(H5T_flags(10), H5T_ENUM_F) EQUIVALENCE(H5T_flags(11), H5T_ORDER_LE_F) EQUIVALENCE(H5T_flags(12), H5T_ORDER_BE_F) - EQUIVALENCE(H5T_flags(13), H5T_ORDER_VAX_F) - EQUIVALENCE(H5T_flags(14), H5T_ORDER_NONE_F) - EQUIVALENCE(H5T_flags(15), H5T_PAD_ZERO_F) - EQUIVALENCE(H5T_flags(16), H5T_PAD_ONE_F) - EQUIVALENCE(H5T_flags(17), H5T_PAD_BACKGROUND_F) - EQUIVALENCE(H5T_flags(18), H5T_PAD_ERROR_F) - EQUIVALENCE(H5T_flags(19), H5T_SGN_NONE_F) - EQUIVALENCE(H5T_flags(20), H5T_SGN_2_F) - EQUIVALENCE(H5T_flags(21), H5T_SGN_ERROR_F) - EQUIVALENCE(H5T_flags(22), H5T_NORM_IMPLIED_F) - EQUIVALENCE(H5T_flags(23), H5T_NORM_MSBSET_F) - EQUIVALENCE(H5T_flags(24), H5T_NORM_NONE_F) - EQUIVALENCE(H5T_flags(25), H5T_CSET_ASCII_F) - EQUIVALENCE(H5T_flags(26), H5T_CSET_UTF8_F) - EQUIVALENCE(H5T_flags(27), H5T_STR_NULLTERM_F) - EQUIVALENCE(H5T_flags(28), H5T_STR_NULLPAD_F) - EQUIVALENCE(H5T_flags(29), H5T_STR_SPACEPAD_F) - EQUIVALENCE(H5T_flags(30), H5T_STR_ERROR_F) - EQUIVALENCE(H5T_flags(31), H5T_VLEN_F) - EQUIVALENCE(H5T_flags(32), H5T_ARRAY_F) - EQUIVALENCE(H5T_flags(33), H5T_DIR_ASCEND_F) - EQUIVALENCE(H5T_flags(34), H5T_DIR_DESCEND_F) - + EQUIVALENCE(H5T_flags(13), H5T_ORDER_MIXED_F) + EQUIVALENCE(H5T_flags(14), H5T_ORDER_VAX_F) + EQUIVALENCE(H5T_flags(15), H5T_ORDER_NONE_F) + EQUIVALENCE(H5T_flags(16), H5T_PAD_ZERO_F) + EQUIVALENCE(H5T_flags(17), H5T_PAD_ONE_F) + EQUIVALENCE(H5T_flags(18), H5T_PAD_BACKGROUND_F) + EQUIVALENCE(H5T_flags(19), H5T_PAD_ERROR_F) + EQUIVALENCE(H5T_flags(20), H5T_SGN_NONE_F) + EQUIVALENCE(H5T_flags(21), H5T_SGN_2_F) + EQUIVALENCE(H5T_flags(22), H5T_SGN_ERROR_F) + EQUIVALENCE(H5T_flags(23), H5T_NORM_IMPLIED_F) + EQUIVALENCE(H5T_flags(24), H5T_NORM_MSBSET_F) + EQUIVALENCE(H5T_flags(25), H5T_NORM_NONE_F) + EQUIVALENCE(H5T_flags(26), H5T_CSET_ASCII_F) + EQUIVALENCE(H5T_flags(27), H5T_CSET_UTF8_F) + EQUIVALENCE(H5T_flags(28), H5T_STR_NULLTERM_F) + EQUIVALENCE(H5T_flags(29), H5T_STR_NULLPAD_F) + EQUIVALENCE(H5T_flags(30), H5T_STR_SPACEPAD_F) + EQUIVALENCE(H5T_flags(31), H5T_STR_ERROR_F) + EQUIVALENCE(H5T_flags(32), H5T_VLEN_F) + EQUIVALENCE(H5T_flags(33), H5T_ARRAY_F) + EQUIVALENCE(H5T_flags(34), H5T_DIR_ASCEND_F) + EQUIVALENCE(H5T_flags(35), H5T_DIR_DESCEND_F) ! ! H5Z flags declaration ! - INTEGER, PARAMETER :: H5Z_FLAGS_LEN = 14 + INTEGER, PARAMETER :: H5Z_FLAGS_LEN = 20 INTEGER H5Z_flags(H5Z_FLAGS_LEN) !DEC$if defined(BUILD_HDF5_DLL) !DEC$ATTRIBUTES DLLEXPORT :: /H5Z_FLAGS/ @@ -788,6 +845,12 @@ MODULE H5GLOBAL INTEGER :: H5Z_FLAG_OPTIONAL_F INTEGER :: H5Z_FILTER_ENCODE_ENABLED_F INTEGER :: H5Z_FILTER_DECODE_ENABLED_F + INTEGER :: H5Z_FILTER_NBIT_F + INTEGER :: H5Z_FILTER_SCALEOFFSET_F + INTEGER :: H5Z_SO_FLOAT_DSCALE_F + INTEGER :: H5Z_SO_FLOAT_ESCALE_F + INTEGER :: H5Z_SO_INT_F + INTEGER :: H5Z_SO_INT_MINBITS_DEFAULT_F EQUIVALENCE(H5Z_flags(1), H5Z_FILTER_ERROR_F) EQUIVALENCE(H5Z_flags(2), H5Z_FILTER_NONE_F) @@ -803,7 +866,12 @@ MODULE H5GLOBAL EQUIVALENCE(H5Z_flags(12), H5Z_FILTER_ENCODE_ENABLED_F) EQUIVALENCE(H5Z_flags(13), H5Z_FILTER_DECODE_ENABLED_F) EQUIVALENCE(H5Z_flags(14), H5Z_FILTER_ALL_F) - + EQUIVALENCE(H5Z_flags(15), H5Z_FILTER_NBIT_F) + EQUIVALENCE(H5Z_flags(16), H5Z_FILTER_SCALEOFFSET_F) + EQUIVALENCE(H5Z_flags(17), H5Z_SO_FLOAT_DSCALE_F) + EQUIVALENCE(H5Z_flags(18), H5Z_SO_FLOAT_ESCALE_F) + EQUIVALENCE(H5Z_flags(19), H5Z_SO_INT_F) + EQUIVALENCE(H5Z_flags(20), H5Z_SO_INT_MINBITS_DEFAULT_F) ! ! H5 Library flags declaration diff --git a/fortran/src/H5f90kit.c b/fortran/src/H5f90kit.c index a809229..059685e 100644 --- a/fortran/src/H5f90kit.c +++ b/fortran/src/H5f90kit.c @@ -1,4 +1,12 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* H5f90kit/H5f90kit + * PURPOSE + * Routines from HDF4 to deal with C-FORTRAN issues: + * + * HD5f2cstring -- convert a Fortran string to a C string + * HD5packFstring -- convert a C string into a Fortran string + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,39 +19,33 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include #include #include "H5f90.h" - -/* - * Routines from HDF4 to deal with C-FORTRAN issues. - * - * HD5f2cstring -- convert a Fortran string to a C string - * HD5packFstring -- convert a C string into a Fortran string +/****if* H5f90kit/HDf2cstring + * NAME + * HD5f2cstring -- convert a Fortran string to a C string + * char * HDf2cstring(fdesc, len) + * INPUTS + * _fcd fdesc; IN: Fortran string descriptor + * int len; IN: length of Fortran string + * RETURNS + * Pointer to the C string if success, else NULL + * PURPOSE + * Chop off trailing blanks off of a Fortran string and + * move it into a newly allocated C string. It is up + * to the user to free this string. + * SOURCE */ - -/* ----------------------------- HDf2cstring ------------------------------ */ -/* -NAME - HD5f2cstring -- convert a Fortran string to a C string -USAGE - char * HDf2cstring(fdesc, len) - _fcd fdesc; IN: Fortran string descriptor - int len; IN: length of Fortran string -RETURNS - Pointer to the C string if success, else NULL -DESCRIPTION - Chop off trailing blanks off of a Fortran string and - move it into a newly allocated C string. It is up - to the user to free this string. - ----------------------------------------------------------------------------*/ char * HD5f2cstring(_fcd fdesc, size_t len) +/******/ { char *cstr; /* C string to return */ char *str; /* Pointer to FORTRAN string */ @@ -67,28 +69,29 @@ HD5f2cstring(_fcd fdesc, size_t len) return cstr; } /* HD5f2cstring */ -/* ---------------------------- HD5packFstring ----------------------------- */ -/* -NAME - HD5packFstring -- convert a C string into a Fortran string -USAGE - int HD5packFstring(src, dest, len) - char * src; IN: source string - char * dest; OUT: destination - int len; IN: length of string -RETURNS - SUCCEED / FAIL -DESCRIPTION - given a NULL terminated C string 'src' convert it to - a space padded Fortran string 'dest' of length 'len' - - This is very similar to HDc2fstr except that function does - it in place and this one copies. We should probably only - support one of these. - ----------------------------------------------------------------------------*/ +/****if* H5f90kit/HD5packFstring + * NAME + * HD5packFstring -- convert a C string into a Fortran string + * int HD5packFstring(src, dest, len) + * INPUTS + * char * src; IN: source string + * int len; IN: length of string + * OUTPUTS + * char * dest; OUT: destination + * RETURNS + * SUCCEED / FAIL + * PURPOSE + * given a NULL terminated C string 'src' convert it to + * a space padded Fortran string 'dest' of length 'len' + * + * This is very similar to HDc2fstr except that function does + * it in place and this one copies. We should probably only + * support one of these. + * SOURCE + */ void HD5packFstring(char *src, char *dest, size_t dst_len) +/******/ { size_t src_len=HDstrlen(src); @@ -99,5 +102,6 @@ HD5packFstring(char *src, char *dest, size_t dst_len) /* Pad out any remaining space in the FORTRAN string with ' 's */ if(src_len #include @@ -35,11 +47,19 @@ FILE * fort_header; #define CFILE "H5f90i_gen.h" #define FFILE "H5fortran_types.f90" +/* Prototypes for the write routines */ +void writeTypedef(const char* c_type, unsigned int size); +void writeFloatTypedef(const char* c_type, unsigned int size); +void writeTypedefDefault(unsigned int size); +void writeToFiles(const char* fortran_type, const char* c_type, unsigned int size, unsigned int kind); +void writeFloatToFiles(const char* fortran_type, const char* c_type, unsigned int size, unsigned int kind); + static void initCfile(void) { fprintf(c_header, - "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\ + "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\ + * Copyright by The HDF Group. *\n\ * Copyright by the Board of Trustees of the University of Illinois. *\n\ * All rights reserved. *\n\ * *\n\ @@ -49,8 +69,8 @@ initCfile(void) * of the source code distribution tree; Copyright.html can be found at the *\n\ * root level of an installed copy of the electronic HDF5 document set and *\n\ * is linked from the top-level documents page. It can also be found at *\n\ - * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *\n\ - * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *\n\ + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *\n\ + * access to either file, you may request a copy from help@hdfgroup.org. *\n\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\ \n\n\ #ifndef _H5f90i_gen_H\n\ @@ -66,6 +86,7 @@ initFfile(void) { fprintf(fort_header, "! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n\ +! Copyright by The HDF Group. *\n\ ! Copyright by the Board of Trustees of the University of Illinois. *\n\ ! All rights reserved. *\n\ ! *\n\ @@ -75,8 +96,8 @@ initFfile(void) ! of the source code distribution tree; Copyright.html can be found at the *\n\ ! root level of an installed copy of the electronic HDF5 document set and *\n\ ! is linked from the top-level documents page. It can also be found at *\n\ -! http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *\n\ -! access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *\n\ +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *\n\ +! access to either file, you may request a copy from help@hdfgroup.org. *\n\ ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\ !\n!\n\ ! This file is automatically generated and contains HDF5 Fortran90 type definitions.\n!\n\ @@ -120,24 +141,26 @@ void writeTypedefDefault(unsigned int size) } /* Create matching Fortran and C types by writing to both files */ -void writeToFiles(const char* fortran_type, const char* c_type, unsigned int size) +void writeToFiles(const char* fortran_type, const char* c_type, unsigned int size, unsigned int kind) { - fprintf(fort_header, " INTEGER, PARAMETER :: %s = %u\n", fortran_type, size); + fprintf(fort_header, " INTEGER, PARAMETER :: %s = %u\n", fortran_type, kind); fprintf(c_header, "typedef c_int_%u %s;\n", size, c_type); } /* Create matching Fortran and C floating types by writing to both files */ -void writeFloatToFiles(const char* fortran_type, const char* c_type, unsigned int size) +void writeFloatToFiles(const char* fortran_type, const char* c_type, unsigned int size, unsigned int kind) { - fprintf(fort_header, " INTEGER, PARAMETER :: %s = %u\n", fortran_type, size); + fprintf(fort_header, " INTEGER, PARAMETER :: %s = %u\n", fortran_type, kind); fprintf(c_header, "typedef c_float_%u %s;\n", size, c_type); } -int main() +int main(void) { int FoundIntSize[4]; + int FoundIntSizeKind[4]; int FoundRealSize[4]; + int FoundRealSizeKind[4]; int i,j,flag; char chrA[20],chrB[20]; int H5_C_HAS_REAL_NATIVE_16; @@ -147,10 +170,9 @@ int main() c_header = fopen(CFILE, "w"); fort_header = fopen(FFILE, "w"); - -/* Default is C has 16 byte float */ + /* Default is C has 16 byte float */ H5_C_HAS_REAL_NATIVE_16 = 1; -/* Default is C has 12 byte float */ + /* Default is C has 12 byte float */ H5_C_HAS_REAL_NATIVE_12 = 1; /* Write copyright, boilerplate to both files */ @@ -159,7 +181,7 @@ int main() /* First, define c_int_x */ -#if defined H5_FORTRAN_HAS_INTEGER_1 +#if defined H5_FORTRAN_HAS_INTEGER_1_KIND if(sizeof(long long) == 1) writeTypedef("long long", 1); else if(sizeof(long) == 1) @@ -173,9 +195,9 @@ int main() /* Actually, char is not necessarily one byte. * But if char isn't, then nothing is, so this * is as close as we can get. */ -#endif /*H5_FORTRAN_HAS_INTEGER_1 */ +#endif /*H5_FORTRAN_HAS_INTEGER_1_KIND*/ -#if defined H5_FORTRAN_HAS_INTEGER_2 +#if defined H5_FORTRAN_HAS_INTEGER_2_KIND if(sizeof(long long) == 2) writeTypedef("long long", 2); else if(sizeof(long) == 2) @@ -186,9 +208,9 @@ int main() writeTypedef("short", 2); else writeTypedefDefault(2); -#endif /*H5_FORTRAN_HAS_INTEGER_2 */ +#endif /*H5_FORTRAN_HAS_INTEGER_2_KIND*/ -#if defined H5_FORTRAN_HAS_INTEGER_4 +#if defined H5_FORTRAN_HAS_INTEGER_4_KIND if(sizeof(long long) == 4) writeTypedef("long long", 4); else if(sizeof(long) == 4) @@ -199,9 +221,9 @@ int main() writeTypedef("short", 4); else writeTypedefDefault(4); -#endif /*H5_FORTRAN_HAS_INTEGER_4 */ +#endif /*H5_FORTRAN_HAS_INTEGER_4_KIND*/ -#if defined H5_FORTRAN_HAS_INTEGER_8 +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND if(sizeof(long long) == 8) writeTypedef("long long", 8); else if(sizeof(long) == 8) @@ -212,11 +234,11 @@ int main() writeTypedef("short", 8); else writeTypedefDefault(8); -#endif /*H5_FORTRAN_HAS_INTEGER_8 */ +#endif /*H5_FORTRAN_HAS_INTEGER_8_KIND*/ /* Define c_float_x */ -#if defined H5_FORTRAN_HAS_REAL_NATIVE_4 || defined H5_FORTRAN_HAS_REAL_4 +#if defined H5_FORTRAN_HAS_REAL_NATIVE_4_KIND || defined H5_FORTRAN_HAS_REAL_4_KIND if(sizeof(long double) == 4) writeFloatTypedef("long double", 4); else if(sizeof(double) == 4) @@ -228,9 +250,9 @@ int main() printf("Quitting....\n"); return -1; } -#endif /*H5_FORTRAN_HAS_REAL_NATIVE_4*/ +#endif /*H5_FORTRAN_HAS_REAL_NATIVE_4_KIND*/ -#if defined H5_FORTRAN_HAS_REAL_NATIVE_8 || defined H5_FORTRAN_HAS_REAL_8 +#if defined H5_FORTRAN_HAS_REAL_NATIVE_8_KIND || defined H5_FORTRAN_HAS_REAL_8_KIND if(sizeof(long double) == 8) writeFloatTypedef("long double", 8); else if(sizeof(double) == 8) @@ -242,9 +264,10 @@ int main() printf("Quitting....\n"); return -1; } -#endif /*H5_FORTRAN_HAS_REAL_NATIVE_8*/ +#endif /*H5_FORTRAN_HAS_REAL_NATIVE_8_KIND*/ -#if defined H5_FORTRAN_HAS_REAL_NATIVE_12 || defined H5_FORTRAN_HAS_REAL_12 + +#if defined H5_FORTRAN_HAS_REAL_NATIVE_12_KIND || defined H5_FORTRAN_HAS_REAL_12_KIND if(sizeof(long double) == 12) writeFloatTypedef("long double", 12); else if(sizeof(double) == 12) @@ -256,9 +279,9 @@ int main() printf(" Disabling Fortran 12 byte REALs\n"); H5_C_HAS_REAL_NATIVE_12 = 0; } -#endif /*H5_FORTRAN_HAS_REAL_NATIVE_8*/ +#endif /*H5_FORTRAN_HAS_REAL_NATIVE_12_KIND*/ -#if defined H5_FORTRAN_HAS_REAL_NATIVE_16 || defined H5_FORTRAN_HAS_REAL_16 +#if defined H5_FORTRAN_HAS_REAL_NATIVE_16_KIND || defined H5_FORTRAN_HAS_REAL_16_KIND if(sizeof(long double) == 16) writeFloatTypedef("long double", 16); else if(sizeof(double) == 16) @@ -270,47 +293,47 @@ int main() printf(" Disabling Fortran 16 byte REALs\n"); H5_C_HAS_REAL_NATIVE_16 = 0; } -#endif /*H5_FORTRAN_HAS_REAL_NATIVE_16*/ +#endif /*H5_FORTRAN_HAS_REAL_NATIVE_16_KIND*/ /* Now begin defining fortran types. */ fprintf(c_header, "\n"); /* haddr_t */ -#if defined H5_FORTRAN_HAS_INTEGER_8 && H5_SIZEOF_HADDR_T >= 8 - writeToFiles("HADDR_T", "haddr_t_f", 8); -#elif defined H5_FORTRAN_HAS_INTEGER_4 && H5_SIZEOF_HADDR_T >= 4 - writeToFiles("HADDR_T", "haddr_t_f", 4); -#elif defined H5_FORTRAN_HAS_INTEGER_2 && H5_SIZEOF_HADDR_T >= 2 - writeToFiles("HADDR_T", "haddr_t_f", 2); -#elif defined H5_FORTRAN_HAS_INTEGER_1 && H5_SIZEOF_HADDR_T >= 1 - writeToFiles("HADDR_T", "haddr_t_f", 1); +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND && H5_SIZEOF_HADDR_T >= 8 + writeToFiles("HADDR_T", "haddr_t_f", 8, H5_FORTRAN_HAS_INTEGER_8_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_4_KIND && H5_SIZEOF_HADDR_T >= 4 + writeToFiles("HADDR_T", "haddr_t_f", 4, H5_FORTRAN_HAS_INTEGER_4_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_2_KIND && H5_SIZEOF_HADDR_T >= 2 + writeToFiles("HADDR_T", "haddr_t_f", 2, H5_FORTRAN_HAS_INTEGER_2_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_1_KIND && H5_SIZEOF_HADDR_T >= 1 + writeToFiles("HADDR_T", "haddr_t_f", 1, H5_FORTRAN_HAS_INTEGER_1_KIND); #else /* Error: couldn't find a size for haddr_t */ return -1; #endif /* hsize_t */ -#if defined H5_FORTRAN_HAS_INTEGER_8 && H5_SIZEOF_HSIZE_T >= 8 - writeToFiles("HSIZE_T", "hsize_t_f", 8); -#elif defined H5_FORTRAN_HAS_INTEGER_4 && H5_SIZEOF_HSIZE_T >= 4 - writeToFiles("HSIZE_T", "hsize_t_f", 4); -#elif defined H5_FORTRAN_HAS_INTEGER_2 && H5_SIZEOF_HSIZE_T >= 2 - writeToFiles("HSIZE_T", "hsize_t_f", 2); -#elif defined H5_FORTRAN_HAS_INTEGER_1 && H5_SIZEOF_HSIZE_T >= 1 - writeToFiles("HSIZE_T", "hsize_t_f", 1); +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND && H5_SIZEOF_HSIZE_T >= 8 + writeToFiles("HSIZE_T", "hsize_t_f", 8, H5_FORTRAN_HAS_INTEGER_8_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_4_KIND && H5_SIZEOF_HSIZE_T >= 4 + writeToFiles("HSIZE_T", "hsize_t_f", 4, H5_FORTRAN_HAS_INTEGER_4_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_2_KIND && H5_SIZEOF_HSIZE_T >= 2 + writeToFiles("HSIZE_T", "hsize_t_f", 2, H5_FORTRAN_HAS_INTEGER_2_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_1_KIND && H5_SIZEOF_HSIZE_T >= 1 + writeToFiles("HSIZE_T", "hsize_t_f", 1, H5_FORTRAN_HAS_INTEGER_1_KIND); #else /* Error: couldn't find a size for hsize_t */ return -1; #endif /* hssize_t */ -#if defined H5_FORTRAN_HAS_INTEGER_8 && H5_SIZEOF_HSSIZE_T >= 8 - writeToFiles("HSSIZE_T", "hssize_t_f", 8); -#elif defined H5_FORTRAN_HAS_INTEGER_4 && H5_SIZEOF_HSSIZE_T >= 4 - writeToFiles("HSSIZE_T", "hssize_t_f", 4); -#elif defined H5_FORTRAN_HAS_INTEGER_2 && H5_SIZEOF_HSSIZE_T >= 2 - writeToFiles("HSSIZE_T", "hssize_t_f", 2); -#elif defined H5_FORTRAN_HAS_INTEGER_1 && H5_SIZEOF_HSSIZE_T >= 1 - writeToFiles("HSSIZE_T", "hssize_t_f", 1); +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND && H5_SIZEOF_HSSIZE_T >= 8 + writeToFiles("HSSIZE_T", "hssize_t_f", 8, H5_FORTRAN_HAS_INTEGER_8_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_4_KIND && H5_SIZEOF_HSSIZE_T >= 4 + writeToFiles("HSSIZE_T", "hssize_t_f", 4, H5_FORTRAN_HAS_INTEGER_4_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_2_KIND && H5_SIZEOF_HSSIZE_T >= 2 + writeToFiles("HSSIZE_T", "hssize_t_f", 2, H5_FORTRAN_HAS_INTEGER_2_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_1_KIND && H5_SIZEOF_HSSIZE_T >= 1 + writeToFiles("HSSIZE_T", "hssize_t_f", 1, H5_FORTRAN_HAS_INTEGER_1_KIND); #else /* Error: couldn't find a size for hssize_t */ return -1; @@ -318,34 +341,33 @@ int main() /* size_t */ -#if defined H5_FORTRAN_HAS_INTEGER_8 && H5_SIZEOF_SIZE_T >= 8 - writeToFiles("SIZE_T", "size_t_f", 8); -#elif defined H5_FORTRAN_HAS_INTEGER_4 && H5_SIZEOF_SIZE_T >= 4 - writeToFiles("SIZE_T", "size_t_f", 4); -#elif defined H5_FORTRAN_HAS_INTEGER_2 && H5_SIZEOF_SIZE_T >= 2 - writeToFiles("SIZE_T", "size_t_f", 2); -#elif defined H5_FORTRAN_HAS_INTEGER_1 && H5_SIZEOF_SIZE_T >= 1 - writeToFiles("SIZE_T", "size_t_f", 1); +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND && H5_SIZEOF_SIZE_T >= 8 + writeToFiles("SIZE_T", "size_t_f", 8, H5_FORTRAN_HAS_INTEGER_8_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_4_KIND && H5_SIZEOF_SIZE_T >= 4 + writeToFiles("SIZE_T", "size_t_f", 4, H5_FORTRAN_HAS_INTEGER_4_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_2_KIND && H5_SIZEOF_SIZE_T >= 2 + writeToFiles("SIZE_T", "size_t_f", 2, H5_FORTRAN_HAS_INTEGER_2_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_1_KIND && H5_SIZEOF_SIZE_T >= 1 + writeToFiles("SIZE_T", "size_t_f", 1, H5_FORTRAN_HAS_INTEGER_1_KIND); #else /* Error: couldn't find a size for size_t */ return -1; #endif /* int */ -#if defined H5_FORTRAN_HAS_NATIVE_8 - writeToFiles("Fortran_INTEGER", "int_f", 8); -#elif defined H5_FORTRAN_HAS_NATIVE_4 - writeToFiles("Fortran_INTEGER", "int_f", 4); -#elif defined H5_FORTRAN_HAS_NATIVE_2 - writeToFiles("Fortran_INTEGER", "int_f", 2); -#elif defined H5_FORTRAN_HAS_NATIVE_1 - writeToFiles("Fortran_INTEGER", "int_f", 1); +#if defined H5_FORTRAN_HAS_NATIVE_8_KIND + writeToFiles("Fortran_INTEGER", "int_f", 8, H5_FORTRAN_HAS_NATIVE_8_KIND); +#elif defined H5_FORTRAN_HAS_NATIVE_4_KIND + writeToFiles("Fortran_INTEGER", "int_f", 4, H5_FORTRAN_HAS_NATIVE_4_KIND); +#elif defined H5_FORTRAN_HAS_NATIVE_2_KIND + writeToFiles("Fortran_INTEGER", "int_f", 2, H5_FORTRAN_HAS_NATIVE_2_KIND); +#elif defined H5_FORTRAN_HAS_NATIVE_1_KIND + writeToFiles("Fortran_INTEGER", "int_f", 1, H5_FORTRAN_HAS_NATIVE_1_KIND); #else /* Error: couldn't find a size for int */ return -1; #endif - /* int_1, int_2, int_4, int_8 */ /* Defined different KINDs of integers: */ @@ -358,17 +380,21 @@ int main() FoundIntSize[2] = -4; FoundIntSize[3] = -8; -#if defined H5_FORTRAN_HAS_INTEGER_1 +#if defined H5_FORTRAN_HAS_INTEGER_1_KIND FoundIntSize[0] = 1; + FoundIntSizeKind[0] = H5_FORTRAN_HAS_INTEGER_1_KIND; #endif -#if defined H5_FORTRAN_HAS_INTEGER_2 +#if defined H5_FORTRAN_HAS_INTEGER_2_KIND FoundIntSize[1] = 2; + FoundIntSizeKind[1] = H5_FORTRAN_HAS_INTEGER_2_KIND; #endif -#if defined H5_FORTRAN_HAS_INTEGER_4 +#if defined H5_FORTRAN_HAS_INTEGER_4_KIND FoundIntSize[2] = 4; + FoundIntSizeKind[2] = H5_FORTRAN_HAS_INTEGER_4_KIND; #endif -#if defined H5_FORTRAN_HAS_INTEGER_8 +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND FoundIntSize[3] = 8; + FoundIntSizeKind[3] = H5_FORTRAN_HAS_INTEGER_8_KIND ; #endif for(i=0;i<4;i++) { @@ -376,7 +402,7 @@ int main() { sprintf(chrA, "Fortran_INTEGER_%d", FoundIntSize[i]); sprintf(chrB, "int_%d_f", FoundIntSize[i]); - writeToFiles(chrA, chrB, FoundIntSize[i]); + writeToFiles(chrA, chrB, FoundIntSize[i], FoundIntSizeKind[i]); } else /* Did not find the integer type */ { @@ -387,7 +413,7 @@ int main() { sprintf(chrA, "Fortran_INTEGER_%d", (-1)*FoundIntSize[i]); sprintf(chrB, "int_%d_f", (-1)*FoundIntSize[i]); - writeToFiles(chrA, chrB, FoundIntSize[j]); + writeToFiles(chrA, chrB, FoundIntSize[j], FoundIntSizeKind[j]); flag = 1; break; } @@ -400,7 +426,7 @@ int main() { sprintf(chrA, "Fortran_INTEGER_%d", (-1)*FoundIntSize[i]); sprintf(chrB, "int_%d_f", (-1)*FoundIntSize[i]); - writeToFiles(chrA, chrB, FoundIntSize[j]); + writeToFiles(chrA, chrB, FoundIntSize[j], FoundIntSizeKind[j]); flag = 1; break; } @@ -425,20 +451,24 @@ int main() FoundRealSize[2] = -12; FoundRealSize[3] = -16; -#if defined H5_FORTRAN_HAS_REAL_4 +#if defined H5_FORTRAN_HAS_REAL_4_KIND FoundRealSize[0] = 4; + FoundRealSizeKind[0] = H5_FORTRAN_HAS_REAL_4_KIND; #endif -#if defined H5_FORTRAN_HAS_REAL_8 +#if defined H5_FORTRAN_HAS_REAL_8_KIND FoundRealSize[1] = 8; + FoundRealSizeKind[1] = H5_FORTRAN_HAS_REAL_8_KIND; #endif -#if defined H5_FORTRAN_HAS_REAL_12 +#if defined H5_FORTRAN_HAS_REAL_12_KIND if(H5_C_HAS_REAL_NATIVE_12 != 0) { FoundRealSize[2] = 12; + FoundRealSizeKind[2] = H5_FORTRAN_HAS_REAL_12_KIND; } #endif -#if defined H5_FORTRAN_HAS_REAL_16 +#if defined H5_FORTRAN_HAS_REAL_16_KIND if(H5_C_HAS_REAL_NATIVE_16 != 0) { FoundRealSize[3] = 16; + FoundRealSizeKind[3] = H5_FORTRAN_HAS_REAL_16_KIND; } #endif @@ -447,7 +477,7 @@ int main() { sprintf(chrA, "Fortran_REAL_%d", FoundRealSize[i]); sprintf(chrB, "real_%d_f", FoundRealSize[i]); - writeFloatToFiles(chrA, chrB, FoundRealSize[i]); + writeFloatToFiles(chrA, chrB, FoundRealSize[i], FoundRealSizeKind[i]); } else /* Did not find the real type */ { @@ -459,7 +489,7 @@ int main() sprintf(chrA, "Fortran_REAL_%d", (-1)*FoundRealSize[i]); sprintf(chrB, "real_%d_f", (-1)*FoundRealSize[i]); if(FoundRealSize[j]>4) { - writeFloatToFiles(chrA, chrB, FoundRealSize[j]); + writeFloatToFiles(chrA, chrB, FoundRealSize[j], FoundRealSizeKind[j]); flag = 1; } /* else { */ @@ -478,7 +508,7 @@ int main() sprintf(chrA, "Fortran_REAL_%d", (-1)*FoundRealSize[i]); sprintf(chrB, "real_%d_f", (-1)*FoundRealSize[i]); if(FoundRealSize[j]>4) { - writeFloatToFiles(chrA, chrB, FoundRealSize[j]); + writeFloatToFiles(chrA, chrB, FoundRealSize[j], FoundRealSizeKind[j]); } /* else { */ /* writeFloatToFiles(chrA, chrB, FoundRealSize[j]); */ @@ -496,44 +526,44 @@ int main() } /* hid_t */ -#if defined H5_FORTRAN_HAS_INTEGER_8 && H5_SIZEOF_HID_T >= 8 - writeToFiles("HID_T", "hid_t_f", 8); -#elif defined H5_FORTRAN_HAS_INTEGER_4 && H5_SIZEOF_HID_T >= 4 - writeToFiles("HID_T", "hid_t_f", 4); -#elif defined H5_FORTRAN_HAS_INTEGER_2 && H5_SIZEOF_HID_T >= 2 - writeToFiles("HID_T", "hid_t_f", 2); -#elif defined H5_FORTRAN_HAS_INTEGER_1 && H5_SIZEOF_HID_T >= 1 - writeToFiles("HID_T", "hid_t_f", 1); -#elif defined H5_FORTRAN_HAS_INTEGER_8 && H5_SIZEOF_HID_T >= 4 - writeToFiles("HID_T", "hid_t_f", 8); +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND && H5_SIZEOF_HID_T >= 8 + writeToFiles("HID_T", "hid_t_f", 8, H5_FORTRAN_HAS_INTEGER_8_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_4_KIND && H5_SIZEOF_HID_T >= 4 + writeToFiles("HID_T", "hid_t_f", 4, H5_FORTRAN_HAS_INTEGER_4_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_2_KIND && H5_SIZEOF_HID_T >= 2 + writeToFiles("HID_T", "hid_t_f", 2, H5_FORTRAN_HAS_INTEGER_2_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_1_KIND && H5_SIZEOF_HID_T >= 1 + writeToFiles("HID_T", "hid_t_f", 1, H5_FORTRAN_HAS_INTEGER_1_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_8_KIND && H5_SIZEOF_HID_T >= 4 + writeToFiles("HID_T", "hid_t_f", 8, H5_FORTRAN_HAS_INTEGER_8_KIND); #else /* Error: couldn't find a size for hid_t */ return -1; #endif /* real_f */ -#if defined H5_FORTRAN_HAS_REAL_NATIVE_16 +#if defined H5_FORTRAN_HAS_REAL_NATIVE_16_KIND if(H5_C_HAS_REAL_NATIVE_16 != 0) { - writeFloatToFiles("Fortran_REAL", "real_f", 16); + writeFloatToFiles("Fortran_REAL", "real_f", 16, H5_FORTRAN_HAS_REAL_NATIVE_16_KIND); } -#elif defined H5_FORTRAN_HAS_REAL_NATIVE_12 +#elif defined H5_FORTRAN_HAS_REAL_NATIVE_12_KIND if(H5_C_HAS_REAL_NATIVE_12 != 0) { - writeFloatToFiles("Fortran_REAL", "real_f", 12); + writeFloatToFiles("Fortran_REAL", "real_f", 12, H5_FORTRAN_HAS_REAL_NATIVE_12_KIND); } -#elif defined H5_FORTRAN_HAS_REAL_NATIVE_8 - writeFloatToFiles("Fortran_REAL", "real_f", 8); -#elif defined H5_FORTRAN_HAS_REAL_NATIVE_4 - writeFloatToFiles("Fortran_REAL", "real_f", 4); +#elif defined H5_FORTRAN_HAS_REAL_NATIVE_8_KIND + writeFloatToFiles("Fortran_REAL", "real_f", 8, H5_FORTRAN_HAS_REAL_NATIVE_8_KIND); +#elif defined H5_FORTRAN_HAS_REAL_NATIVE_4_KIND + writeFloatToFiles("Fortran_REAL", "real_f", 4, H5_FORTRAN_HAS_REAL_NATIVE_4_KIND); #else /* Error: couldn't find a size for real_f */ return -1; #endif /* double_f */ -#if defined H5_FORTRAN_HAS_DOUBLE_NATIVE_16 - writeFloatToFiles("Fortran_DOUBLE", "double_f", 16); -#elif defined H5_FORTRAN_HAS_DOUBLE_NATIVE_8 - writeFloatToFiles("Fortran_DOUBLE", "double_f", 8); +#if defined H5_FORTRAN_HAS_DOUBLE_NATIVE_16_KIND + writeFloatToFiles("Fortran_DOUBLE", "double_f", 16, H5_FORTRAN_HAS_DOUBLE_NATIVE_16_KIND); +#elif defined H5_FORTRAN_HAS_DOUBLE_NATIVE_8_KIND + writeFloatToFiles("Fortran_DOUBLE", "double_f", 8, H5_FORTRAN_HAS_DOUBLE_NATIVE_8_KIND); #else /* Error: couldn't find a size for real_f */ return -1; diff --git a/fortran/src/H5test_kind.f90 b/fortran/src/H5test_kind.f90 index bdf5f5b..3182853 100644 --- a/fortran/src/H5test_kind.f90 +++ b/fortran/src/H5test_kind.f90 @@ -1,9 +1,12 @@ -!****h* fortran/src/H5test_kind.f90 +!****p* Program/H5test_kind ! ! NAME -! H5test_kind +! Executable: H5test_kind ! -! FUNCTION +! FILE +! fortran/src/H5test_kind.f90 +! +! PURPOSE ! This stand alone program is used at build time to generate the program ! H5fortran_detect.f90. It cycles through all the available KIND parameters for ! integers and reals. The appropriate program and subroutines are then generated @@ -19,20 +22,20 @@ ! condition is set in the configure variable "FORTRAN_HAVE_SIZEOF". ! ! COPYRIGHT -! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -! Copyright by The HDF Group. * -! Copyright by the Board of Trustees of the University of Illinois. * -! All rights reserved. * -! * -! This file is part of HDF5. The full HDF5 copyright notice, including * -! terms governing use, modification, and redistribution, is contained in * -! the files COPYING and Copyright.html. COPYING can be found at the root * -! of the source code distribution tree; Copyright.html can be found at the * -! root level of an installed copy of the electronic HDF5 document set and * -! is linked from the top-level documents page. It can also be found at * -! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * -! access to either file, you may request a copy from help@hdfgroup.org. * -! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! ! AUTHOR ! Elena Pourma @@ -42,7 +45,7 @@ PROGRAM test_kind IMPLICIT NONE INTEGER :: i, j, ii, ir, last, ikind_numbers(10), rkind_numbers(10) - INTEGER :: jr, jd + INTEGER :: ji, jr, jd last = -1 ii = 0 j = SELECTED_INT_KIND(18) @@ -72,15 +75,15 @@ PROGRAM test_kind ENDIF ENDDO -! Generate program information: +! Generate program information: WRITE(*,'(40(A,/))') & -'!****h* fortran/src/H5fortran_detect.f90',& +'!****h* ROBODoc/H5fortran_detect.f90',& '!',& '! NAME',& '! H5fortran_detect',& '! ',& -'! FUNCTION',& +'! PURPOSE',& '! This stand alone program is used at build time to generate the header file',& '! H5fort_type_defines.h. The source code itself was automatically generated by',& '! the program H5test_kind.f90',& @@ -110,12 +113,12 @@ WRITE(*,'(40(A,/))') & '!',& '!*****' -! Generate a program +! Generate a program WRITE(*,*) "PROGRAM int_kind" WRITE(*,*) "WRITE(*,*) "" /*generating header file*/ """ - j = 0 - WRITE(*, "("" CALL i"", i2.2,""()"")") j + ji = 0 + WRITE(*, "("" CALL i"", i2.2,""()"")") ji jr = 0 WRITE(*, "("" CALL r"", i2.2,""()"")") jr jd = 0 @@ -130,62 +133,76 @@ WRITE(*,'(40(A,/))') & ENDDO WRITE(*,*) "END PROGRAM int_kind" j = 0 + ji = KIND(1) WRITE(*, "("" SUBROUTINE i"", i2.2,""()"")") j WRITE(*,*)" IMPLICIT NONE" WRITE(*,*)" INTEGER :: a = 0" WRITE(*,*)" INTEGER :: a_size" + WRITE(*,*)" CHARACTER(LEN=2) :: jchr2" WRITE(*,*)" a_size = BIT_SIZE(a)" WRITE(*,*)" IF (a_size .EQ. 8) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_NATIVE_1"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",ji + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_NATIVE_1_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" endif" WRITE(*,*)" IF (a_size .EQ. 16) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_NATIVE_2"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",ji + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_NATIVE_2_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" endif" WRITE(*,*)" IF (a_size .EQ. 32) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_NATIVE_4"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",ji + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_NATIVE_4_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" IF (a_size .EQ. 64) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_NATIVE_8"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",ji + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_NATIVE_8_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" IF (a_size .EQ. 128) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_NATIVE_16"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",ji + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_NATIVE_16_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" RETURN" WRITE(*,*)"END SUBROUTINE" - jr = 0 + jr = KIND(1.0) WRITE(*, "("" SUBROUTINE r"", i2.2,""()"")") j WRITE(*,*)" IMPLICIT NONE" WRITE(*,*)" REAL :: b(32)" WRITE(*,*)" INTEGER :: a(1)" WRITE(*,*)" INTEGER :: a_size" WRITE(*,*)" INTEGER :: real_size" + WRITE(*,*)" CHARACTER(LEN=2) :: jchr2" WRITE(*,*)" a_size = BIT_SIZE(a(1)) ! Size in bits for integer" WRITE(*,*)" real_size = (SIZE(TRANSFER(b,a))*a_size)/SIZE(b)" WRITE(*,*)" IF (real_size .EQ. 32) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_REAL_NATIVE_4"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",jr + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_NATIVE_4_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" IF (real_size .EQ. 64) THEN" - WRITE(*,*)" write(*,*) ""#define H5_FORTRAN_HAS_REAL_NATIVE_8"" " - WRITE(*,*)" endif" + WRITE(*,*)" WRITE(jchr2,'(I2)')",jr + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_NATIVE_8_KIND "'//"//ADJUSTL(jchr2)" + WRITE(*,*)" ENDIF" WRITE(*,*)" IF (real_size .EQ. 128) THEN" - WRITE(*,*)" write(*,*) ""#define H5_FORTRAN_HAS_REAL_NATIVE_16"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",jr + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_NATIVE_16_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" RETURN" WRITE(*,*)"END SUBROUTINE" - jd = 0 - WRITE(*, "("" SUBROUTINE d"", i2.2,""()"")") jd + jd = KIND(1.d0) + WRITE(*, "("" SUBROUTINE d"", i2.2,""()"")") j WRITE(*,*)" IMPLICIT NONE" WRITE(*,*)" DOUBLE PRECISION :: b=0" WRITE(*,*)" INTEGER :: a(8)=0" WRITE(*,*)" INTEGER :: a_size" WRITE(*,*)" INTEGER :: b_size" + WRITE(*,*)" CHARACTER(LEN=2) :: jchr2" WRITE(*,*)" a_size = BIT_SIZE(a(1))" WRITE(*,*)" b_size = SIZE(transfer(b,a))*a_size" WRITE(*,*)" IF (b_size .EQ. 64) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_DOUBLE_NATIVE_8"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",jd + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_DOUBLE_NATIVE_8_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" IF (b_size .EQ. 128) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_DOUBLE_NATIVE_16"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",jd + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_DOUBLE_NATIVE_16_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" RETURN" WRITE(*,*)"END SUBROUTINE" @@ -195,21 +212,27 @@ WRITE(*,'(40(A,/))') & WRITE(*,*)" IMPLICIT NONE" WRITE(*,*)" INTEGER(",j,") :: a = 0" WRITE(*,*)" INTEGER :: a_size" + WRITE(*,*)" CHARACTER(LEN=2) :: jchr2" WRITE(*,*)" a_size = BIT_SIZE(a)" WRITE(*,*)" IF (a_size .EQ. 8) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_INTEGER_1"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",j + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_INTEGER_1_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" IF (a_size .EQ. 16) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_INTEGER_2"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",j + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_INTEGER_2_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" IF (a_size .EQ. 32) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_INTEGER_4"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",j + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_INTEGER_4_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" IF (a_size .EQ. 64) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_INTEGER_8"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",j + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_INTEGER_8_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" IF (a_size .EQ. 128) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_INTEGER_16"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",j + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_INTEGER_16_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" RETURN" WRITE(*,*)" END SUBROUTINE" @@ -222,16 +245,20 @@ WRITE(*,'(40(A,/))') & WRITE(*,*)" INTEGER :: a(1)" WRITE(*,*)" INTEGER :: a_size" WRITE(*,*)" INTEGER :: real_size" + WRITE(*,*)" CHARACTER(LEN=2) :: jchr2" WRITE(*,*)" a_size = BIT_SIZE(a(1)) ! Size in bits for integer" WRITE(*,*)" real_size = (SIZE(TRANSFER(b,a))*a_size)/SIZE(b)" WRITE(*,*)" IF (real_size .EQ. 32) THEN" - WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_REAL_4"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",j + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_4_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" IF (real_size .EQ. 64) THEN" - WRITE(*,*)" write(*,*) ""#define H5_FORTRAN_HAS_REAL_8"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",j + WRITE(*,*)' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_8_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" endif" WRITE(*,*)" IF (real_size .EQ. 128) THEN" - WRITE(*,*)" write(*,*) ""#define H5_FORTRAN_HAS_REAL_16"" " + WRITE(*,*)" WRITE(jchr2,'(I2)')",j + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_16_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" ENDIF" WRITE(*,*)" RETURN" WRITE(*,*)" END SUBROUTINE" diff --git a/fortran/src/H5test_kind_SIZEOF.f90 b/fortran/src/H5test_kind_SIZEOF.f90 index fbbe8e9..ba982ee 100644 --- a/fortran/src/H5test_kind_SIZEOF.f90 +++ b/fortran/src/H5test_kind_SIZEOF.f90 @@ -1,9 +1,12 @@ -!****h* fortran/src/H5test_kind_SIZEOF.f90 +!****p* Program/H5test_kind_SIZEOF ! ! NAME -! H5test_kind +! Executable: H5test_kind ! -! FUNCTION +! FILE +! fortran/src/H5test_kind_SIZEOF.f90 +! +! PURPOSE ! This stand alone program is used at build time to generate the program ! H5fortran_detect.f90. It cycles through all the available KIND parameters for ! integers and reals. The appropriate program and subroutines are then generated @@ -18,30 +21,30 @@ ! condition is set in the configure variable "FORTRAN_HAVE_SIZEOF". ! ! COPYRIGHT -! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -! Copyright by The HDF Group. * -! Copyright by the Board of Trustees of the University of Illinois. * -! All rights reserved. * -! * -! This file is part of HDF5. The full HDF5 copyright notice, including * -! terms governing use, modification, and redistribution, is contained in * -! the files COPYING and Copyright.html. COPYING can be found at the root * -! of the source code distribution tree; Copyright.html can be found at the * -! root level of an installed copy of the electronic HDF5 document set and * -! is linked from the top-level documents page. It can also be found at * -! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * -! access to either file, you may request a copy from help@hdfgroup.org. * -! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! ! AUTHOR -! M.S. Breitenfeld +! M. Scot Breitenfeld ! !***** PROGRAM test_kind IMPLICIT NONE - INTEGER :: i, j, ii, ir, last, ikind_numbers(10),rkind_numbers(10) - INTEGER :: jr, jd + INTEGER :: i, j, ii, ir, last, ikind_numbers(10), rkind_numbers(10) + INTEGER :: ji, jr, jd last = -1 ii = 0 DO i = 1,100 @@ -70,15 +73,15 @@ PROGRAM test_kind ENDIF ENDDO -! Generate program information: +! Generate program information: WRITE(*,'(40(A,/))') & -'!****h* fortran/src/H5fortran_detect.f90',& +'!****h* ROBODoc/H5fortran_detect.f90',& '!',& '! NAME',& '! H5fortran_detect',& '! ',& -'! FUNCTION',& +'! PURPOSE',& '! This stand alone program is used at build time to generate the header file',& '! H5fort_type_defines.h. The source code itself was automatically generated by',& '! the program H5test_kind_SIZEOF.f90',& @@ -109,11 +112,11 @@ WRITE(*,'(40(A,/))') & '!',& '!*****' -! Generate a program +! Generate a program WRITE(*,*) "PROGRAM int_kind" WRITE(*,*) "WRITE(*,*) "" /*generating header file*/ """ - j = 0 - WRITE(*, "("" CALL i"", i2.2,""()"")") j + ji = 0 + WRITE(*, "("" CALL i"", i2.2,""()"")") ji jr = 0 WRITE(*, "("" CALL r"", i2.2,""()"")") jr jd = 0 @@ -128,48 +131,59 @@ WRITE(*,'(40(A,/))') & ENDDO WRITE(*,*) "END PROGRAM int_kind" j = 0 + ji = KIND(1) WRITE(*, "("" SUBROUTINE i"", i2.2,""()"")") j WRITE(*,*)" IMPLICIT NONE" WRITE(*,*)" INTEGER :: a" WRITE(*,*)" INTEGER :: a_size" - WRITE(*,*)" CHARACTER(LEN=2) :: ichr2" + WRITE(*,*)" CHARACTER(LEN=2) :: ichr2, jchr2" WRITE(*,*)" a_size = SIZEOF(a)" WRITE(*,*)" WRITE(ichr2,'(I2)') a_size" - WRITE(*,*)' WRITE(*,*) "#define H5_FORTRAN_HAS_NATIVE_"'//"//ADJUSTL(ichr2)" + WRITE(*,'(A,I0)')" WRITE(jchr2,'(I2)') ",ji + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_NATIVE_"'// & + "//TRIM(ADJUSTL(ichr2))//"//'"_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" RETURN" WRITE(*,*)"END SUBROUTINE" jr = 0 - WRITE(*, "("" SUBROUTINE r"", i2.2,""()"")") j + j = KIND(1.0) + WRITE(*, "("" SUBROUTINE r"", i2.2,""()"")") jr WRITE(*,*)" IMPLICIT NONE" WRITE(*,*)" REAL :: a" WRITE(*,*)" INTEGER :: a_size" - WRITE(*,*)" CHARACTER(LEN=2) :: ichr2" + WRITE(*,*)" CHARACTER(LEN=2) :: ichr2, jchr2" WRITE(*,*)" a_size = SIZEOF(a)" WRITE(*,*)" WRITE(ichr2,'(I2)') a_size" - WRITE(*,*)' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_NATIVE_"'//"//ADJUSTL(ichr2)" + WRITE(*,'(A,I0)')" WRITE(jchr2,'(I2)') ",j + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_NATIVE_"'// & + "//TRIM(ADJUSTL(ichr2))//"//'"_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" RETURN" WRITE(*,*)"END SUBROUTINE" jd = 0 + j = KIND(1.d0) WRITE(*, "("" SUBROUTINE d"", i2.2,""()"")") jd WRITE(*,*)" IMPLICIT NONE" WRITE(*,*)" DOUBLE PRECISION :: a" WRITE(*,*)" INTEGER :: a_size" - WRITE(*,*)" CHARACTER(LEN=2) :: ichr2" + WRITE(*,*)" CHARACTER(LEN=2) :: ichr2, jchr2" WRITE(*,*)" a_size = SIZEOF(a)" WRITE(*,*)" WRITE(ichr2,'(I2)') a_size" - WRITE(*,*)' WRITE(*,*) "#define H5_FORTRAN_HAS_DOUBLE_NATIVE_"'//"//ADJUSTL(ichr2)" + WRITE(*,'(A,I0)')" WRITE(jchr2,'(I2)') ",j + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_DOUBLE_NATIVE_"'// & + "//TRIM(ADJUSTL(ichr2))//"//'"_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" RETURN" WRITE(*,*)"END SUBROUTINE" DO i = 1, ii j = ikind_numbers(i) WRITE(*, "("" SUBROUTINE i"", i2.2,""()"")") j WRITE(*,*)" IMPLICIT NONE" - WRITE(*,*)" INTEGER(",j,") :: a" + WRITE(*,'(A,I0,A)')" INTEGER(KIND=",j,") :: a" WRITE(*,*)" INTEGER :: a_size" - WRITE(*,*)" CHARACTER(LEN=2) :: ichr2" + WRITE(*,*)" CHARACTER(LEN=2) :: ichr2, jchr2" WRITE(*,*)" a_size = SIZEOF(a)" WRITE(*,*)" WRITE(ichr2,'(I2)') a_size" - WRITE(*,*)' WRITE(*,*) "#define H5_FORTRAN_HAS_INTEGER_"'//"//ADJUSTL(ichr2)" + WRITE(*,'(A,I0)')" WRITE(jchr2,'(I2)') ",j + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_INTEGER_"'// & + "//TRIM(ADJUSTL(ichr2))//"//'"_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" RETURN" WRITE(*,*)"END SUBROUTINE" ENDDO @@ -177,12 +191,14 @@ WRITE(*,'(40(A,/))') & j = rkind_numbers(i) WRITE(*, "("" SUBROUTINE r"", i2.2,""()"")") j WRITE(*,*)" IMPLICIT NONE" - WRITE(*,*)" REAL(KIND=",j,") :: a" + WRITE(*,'(A,I0,A)')" REAL(KIND= ",j,") :: a" WRITE(*,*)" INTEGER :: a_size" - WRITE(*,*)" CHARACTER(LEN=2) :: ichr2" + WRITE(*,*)" CHARACTER(LEN=2) :: ichr2, jchr2" WRITE(*,*)" a_size = SIZEOF(a)" WRITE(*,*)" WRITE(ichr2,'(I2)') a_size" - WRITE(*,*)' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_"'//"//ADJUSTL(ichr2)" + WRITE(*,'(A,I0)')" WRITE(jchr2,'(I2)') ", j + WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_"'// & + "//TRIM(ADJUSTL(ichr2))//"//'"_KIND "'//"//ADJUSTL(jchr2)" WRITE(*,*)" RETURN" WRITE(*,*)"END SUBROUTINE" ENDDO diff --git a/fortran/src/HDF5.f90 b/fortran/src/HDF5.f90 index b18591d..cb3d8bf 100644 --- a/fortran/src/HDF5.f90 +++ b/fortran/src/HDF5.f90 @@ -1,3 +1,15 @@ +!****h* ROBODoc/HDF5 +! +! NAME +! MODULE HDF5 +! +! FILE +! src/fortran/src/HDF5.f90 +! +! PURPOSE +! This is the main module used for linking to the Fortran HDF library. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,22 +25,31 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +!***** + MODULE HDF5 USE H5GLOBAL USE H5F USE H5G USE H5E + USE H5E_PROVISIONAL USE H5I USE H5L + USE H5L_PROVISIONAL USE H5S USE H5D + USE H5D_PROVISIONAL USE H5A + USE H5A_PROVISIONAL USE H5T + USE H5T_PROVISIONAL USE H5O + USE H5O_PROVISIONAL USE H5P + USE H5P_PROVISIONAL USE H5R + USE H5R_PROVISIONAL USE H5Z USE H5_DBLE_INTERFACE USE H5LIB - END MODULE HDF5 diff --git a/fortran/src/HDF5mpio.f90 b/fortran/src/HDF5mpio.f90 index 15d3a93..ac4d2b1 100644 --- a/fortran/src/HDF5mpio.f90 +++ b/fortran/src/HDF5mpio.f90 @@ -1,34 +1,54 @@ -! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -! Copyright by The HDF Group. * -! Copyright by the Board of Trustees of the University of Illinois. * -! All rights reserved. * -! * -! This file is part of HDF5. The full HDF5 copyright notice, including * -! terms governing use, modification, and redistribution, is contained in * -! the files COPYING and Copyright.html. COPYING can be found at the root * -! of the source code distribution tree; Copyright.html can be found at the * -! root level of an installed copy of the electronic HDF5 document set and * -! is linked from the top-level documents page. It can also be found at * -! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * -! access to either file, you may request a copy from help@hdfgroup.org. * -! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +!****h* ROBODoc/HDF5 (mpio) ! - MODULE HDF5 - USE H5GLOBAL - USE H5F - USE H5E - USE H5G - USE H5I - USE H5L - USE H5S - USE H5D - USE H5A - USE H5T - USE H5O - USE H5P - USE H5FDMPIO - USE H5R - USE H5Z - USE H5_DBLE_INTERFACE - USE H5LIB - END MODULE HDF5 +! NAME +! HDF5 +! +! PURPOSE +! This is the main module used for linking to the Fortran parallel HDF library. +! This file replaces HDF5.f90 when compiling the parallel library. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +!***** + +MODULE HDF5 + USE H5GLOBAL + USE H5F + USE H5G + USE H5E + USE H5E_PROVISIONAL + USE H5I + USE H5L + USE H5L_PROVISIONAL + USE H5S + USE H5D + USE H5D_PROVISIONAL + USE H5A + USE H5A_PROVISIONAL + USE H5T + USE H5T_PROVISIONAL + USE H5O + USE H5O_PROVISIONAL + USE H5P + USE H5P_PROVISIONAL + USE H5FDMPIO + USE H5R + USE H5R_PROVISIONAL + USE H5Z + USE H5_DBLE_INTERFACE + USE H5LIB +END MODULE HDF5 diff --git a/fortran/src/Makefile.am b/fortran/src/Makefile.am index c6a40e7..72a2ac6 100644 --- a/fortran/src/Makefile.am +++ b/fortran/src/Makefile.am @@ -49,6 +49,14 @@ else PARALLEL_COND_SRC = HDF5.f90 endif +# Check if the compiler supports the Fortran 2003 standard +# which should include the intrinsic module iso_c_binding +if FORTRAN_2003_CONDITIONAL_F + F_STATUS = _F03 +else + F_STATUS = _F90 +endif + # Condition for including/excluding the DBLE interfaces for when the # default REAL is of type DOUBLE PRECISION. # We do not include the double precision interfaces if the defaut REAL is @@ -61,14 +69,15 @@ else endif # Source files for the library. -libhdf5_fortran_la_SOURCES= H5f90global.f90 \ - H5fortran_types.f90 H5_ff.f90 H5Aff.f90 H5Dff.f90 H5Eff.f90 \ - H5Fff.f90 H5Gff.f90 H5Iff.f90 H5Lff.f90 H5Off.f90 H5Pff.f90 H5Rff.f90 H5Sff.f90 \ - H5Tff.f90 H5Zff.f90 \ - H5_DBLE_Interface$(F_DBLE).f90 \ - H5f90kit.c H5_f.c H5Af.c H5Df.c H5Ef.c H5Ff.c H5Gf.c \ - H5If.c H5Lf.c H5Of.c H5Pf.c H5Rf.c H5Sf.c H5Tf.c H5Zf.c \ - $(PARALLEL_COND_SRC) +libhdf5_fortran_la_SOURCES=H5f90global.f90 \ + H5fortran_types.f90 H5_ff$(F_STATUS).f90 H5_ff.f90 H5Aff.f90 H5Dff.f90 H5Eff.f90 \ + H5Fff.f90 H5Gff.f90 H5Iff.f90 H5Lff.f90 H5Off.f90 H5Pff.f90 H5Rff.f90 H5Sff.f90 \ + H5Tff.f90 H5Zff.f90 \ + H5_DBLE_Interface$(F_DBLE).f90 \ + H5f90kit.c H5_f.c H5Af.c H5Df.c H5Ef.c H5Ff.c H5Gf.c \ + H5If.c H5Lf.c H5Of.c H5Pf.c H5Rf.c H5Sf.c H5Tf.c H5Zf.c \ + H5Aff$(F_STATUS).f90 H5Dff$(F_STATUS).f90 H5Eff$(F_STATUS).f90 H5Lff$(F_STATUS).f90 \ + H5Off$(F_STATUS).f90 H5Pff$(F_STATUS).f90 H5Rff$(F_STATUS).f90 H5Tff$(F_STATUS).f90 $(PARALLEL_COND_SRC) # HDF5 Fortran library depends on HDF5 Library. libhdf5_fortran_la_LIBADD=$(LIBHDF5) @@ -185,10 +194,19 @@ H5f90global.lo: $(srcdir)/H5f90global.f90 H5fortran_types.lo H5fortran_types.lo: H5fortran_types.f90 H5fortran_detect.lo: H5fortran_detect.f90 H5test_kind.lo: $(srcdir)/H5test_kind.f90 +H5_ff$(F_STATUS).lo: $(srcdir)/H5_ff$(F_STATUS).f90 H5f90global.lo +H5_ff.lo: $(srcdir)/H5_ff.f90 H5f90global.lo H5_ff$(F_STATUS).lo H5test_kind_SIZEOF.lo: $(srcdir)/H5test_kind_SIZEOF.f90 -H5_ff.lo: $(srcdir)/H5_ff.f90 H5f90global.lo H5Aff.lo: $(srcdir)/H5Aff.f90 H5f90global.lo H5Dff.lo: $(srcdir)/H5Dff.f90 H5f90global.lo +H5Aff$(F_STATUS).lo: $(srcdir)/H5Aff$(F_STATUS).f90 H5f90global.lo +H5Dff$(F_STATUS).lo: $(srcdir)/H5Dff$(F_STATUS).f90 H5f90global.lo +H5Eff$(F_STATUS).lo: $(srcdir)/H5Eff$(F_STATUS).f90 H5f90global.lo +H5Lff$(F_STATUS).lo: $(srcdir)/H5Lff$(F_STATUS).f90 H5f90global.lo +H5Off$(F_STATUS).lo: $(srcdir)/H5Off$(F_STATUS).f90 H5f90global.lo +H5Pff$(F_STATUS).lo: $(srcdir)/H5Pff$(F_STATUS).f90 H5f90global.lo +H5Rff$(F_STATUS).lo: $(srcdir)/H5Rff$(F_STATUS).f90 H5f90global.lo +H5Tff$(F_STATUS).lo: $(srcdir)/H5Tff$(F_STATUS).f90 H5f90global.lo H5Eff.lo: $(srcdir)/H5Eff.f90 H5f90global.lo H5Fff.lo: $(srcdir)/H5Fff.f90 H5f90global.lo H5Gff.lo: $(srcdir)/H5Gff.f90 H5f90global.lo @@ -200,15 +218,22 @@ H5Rff.lo: $(srcdir)/H5Rff.f90 H5f90global.lo H5Sff.lo: $(srcdir)/H5Sff.f90 H5f90global.lo H5Tff.lo: $(srcdir)/H5Tff.f90 H5f90global.lo H5Zff.lo: $(srcdir)/H5Zff.f90 H5f90global.lo -H5_DBLE_Interface$(F_DBLE).lo: $(srcdir)/H5_DBLE_Interface$(F_DBLE).f90 H5Aff.lo H5Dff.lo H5Pff.lo - -HDF5.lo: $(srcdir)/HDF5.f90 H5f90global.lo H5Aff.lo \ - H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo \ - H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo H5Zff.lo \ - H5_DBLE_Interface$(F_DBLE).lo +H5_DBLE_Interface$(F_DBLE).lo: $(srcdir)/H5_DBLE_Interface$(F_DBLE).f90 H5Aff$(F_STATUS).lo H5Dff$(F_STATUS).lo H5Eff$(F_STATUS).lo H5Pff$(F_STATUS).lo +HDF5.lo: $(srcdir)/HDF5.f90 H5f90global.lo H5Aff.lo H5Aff$(F_STATUS).lo \ + H5Dff.lo H5Dff$(F_STATUS).lo \ + H5Eff.lo H5Eff$(F_STATUS).lo \ + H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo H5Lff$(F_STATUS).lo \ + H5Off.lo H5Off$(F_STATUS).lo H5Pff.lo H5Pff$(F_STATUS).lo H5Rff$(F_STATUS).lo H5Rff.lo \ + H5Sff.lo H5Tff.lo H5Tff$(F_STATUS).lo H5Zff.lo \ + H5_DBLE_Interface$(F_DBLE).lo H5FDmpioff.lo: $(srcdir)/H5FDmpioff.f90 H5f90global.lo -HDF5mpio.lo: $(srcdir)/H5FDmpioff.f90 H5f90global.lo H5Aff.lo \ - H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo \ - H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo H5Zff.lo H5_DBLE_Interface$(F_DBLE).lo H5FDmpioff.lo +HDF5mpio.lo: $(srcdir)/H5FDmpioff.f90 H5f90global.lo \ + H5Aff.lo H5Aff$(F_STATUS).lo \ + H5Dff.lo H5Dff$(F_STATUS).lo \ + H5Eff.lo H5Eff$(F_STATUS).lo \ + H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo H5Lff$(F_STATUS).lo \ + H5Off.lo H5Off$(F_STATUS).lo H5Pff.lo H5Pff$(F_STATUS).lo H5Rff$(F_STATUS).lo H5Rff.lo \ + H5Sff.lo H5Tff.lo H5Tff$(F_STATUS).lo H5Zff.lo \ + H5_DBLE_Interface$(F_DBLE).lo H5FDmpioff.lo include $(top_srcdir)/config/conclude.am diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in index 1d210f4..27104e1 100644 --- a/fortran/src/Makefile.in +++ b/fortran/src/Makefile.in @@ -98,21 +98,28 @@ am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libhdf5_fortran_la_DEPENDENCIES = $(LIBHDF5) am__libhdf5_fortran_la_SOURCES_DIST = H5f90global.f90 \ - H5fortran_types.f90 H5_ff.f90 H5Aff.f90 H5Dff.f90 H5Eff.f90 \ - H5Fff.f90 H5Gff.f90 H5Iff.f90 H5Lff.f90 H5Off.f90 H5Pff.f90 \ - H5Rff.f90 H5Sff.f90 H5Tff.f90 H5Zff.f90 \ + H5fortran_types.f90 H5_ff$(F_STATUS).f90 H5_ff.f90 H5Aff.f90 \ + H5Dff.f90 H5Eff.f90 H5Fff.f90 H5Gff.f90 H5Iff.f90 H5Lff.f90 \ + H5Off.f90 H5Pff.f90 H5Rff.f90 H5Sff.f90 H5Tff.f90 H5Zff.f90 \ H5_DBLE_Interface$(F_DBLE).f90 H5f90kit.c H5_f.c H5Af.c H5Df.c \ H5Ef.c H5Ff.c H5Gf.c H5If.c H5Lf.c H5Of.c H5Pf.c H5Rf.c H5Sf.c \ - H5Tf.c H5Zf.c HDF5.f90 H5FDmpiof.c HDF5mpio.f90 H5FDmpioff.f90 + H5Tf.c H5Zf.c H5Aff$(F_STATUS).f90 H5Dff$(F_STATUS).f90 \ + H5Eff$(F_STATUS).f90 H5Lff$(F_STATUS).f90 H5Off$(F_STATUS).f90 \ + H5Pff$(F_STATUS).f90 H5Rff$(F_STATUS).f90 H5Tff$(F_STATUS).f90 \ + HDF5.f90 H5FDmpiof.c HDF5mpio.f90 H5FDmpioff.f90 @BUILD_PARALLEL_CONDITIONAL_FALSE@am__objects_1 = HDF5.lo @BUILD_PARALLEL_CONDITIONAL_TRUE@am__objects_1 = H5FDmpiof.lo \ @BUILD_PARALLEL_CONDITIONAL_TRUE@ HDF5mpio.lo H5FDmpioff.lo am_libhdf5_fortran_la_OBJECTS = H5f90global.lo H5fortran_types.lo \ - H5_ff.lo H5Aff.lo H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo \ - H5Lff.lo H5Off.lo H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo H5Zff.lo \ - H5_DBLE_Interface$(F_DBLE).lo H5f90kit.lo H5_f.lo H5Af.lo \ - H5Df.lo H5Ef.lo H5Ff.lo H5Gf.lo H5If.lo H5Lf.lo H5Of.lo \ - H5Pf.lo H5Rf.lo H5Sf.lo H5Tf.lo H5Zf.lo $(am__objects_1) + H5_ff$(F_STATUS).lo H5_ff.lo H5Aff.lo H5Dff.lo H5Eff.lo \ + H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo H5Off.lo H5Pff.lo H5Rff.lo \ + H5Sff.lo H5Tff.lo H5Zff.lo H5_DBLE_Interface$(F_DBLE).lo \ + H5f90kit.lo H5_f.lo H5Af.lo H5Df.lo H5Ef.lo H5Ff.lo H5Gf.lo \ + H5If.lo H5Lf.lo H5Of.lo H5Pf.lo H5Rf.lo H5Sf.lo H5Tf.lo \ + H5Zf.lo H5Aff$(F_STATUS).lo H5Dff$(F_STATUS).lo \ + H5Eff$(F_STATUS).lo H5Lff$(F_STATUS).lo H5Off$(F_STATUS).lo \ + H5Pff$(F_STATUS).lo H5Rff$(F_STATUS).lo H5Tff$(F_STATUS).lo \ + $(am__objects_1) libhdf5_fortran_la_OBJECTS = $(am_libhdf5_fortran_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) @@ -251,6 +258,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ +FC2003 = @FC2003@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ @@ -271,10 +279,12 @@ H5_LONE_COLON = @H5_LONE_COLON@ H5_VERSION = @H5_VERSION@ HADDR_T = @HADDR_T@ HAVE_DMALLOC = @HAVE_DMALLOC@ +HAVE_FORTRAN_2003 = @HAVE_FORTRAN_2003@ HDF5_HL = @HDF5_HL@ HDF5_INTERFACES = @HDF5_INTERFACES@ HDF_CXX = @HDF_CXX@ HDF_FORTRAN = @HDF_FORTRAN@ +HDF_FORTRAN2003 = @HDF_FORTRAN2003@ HID_T = @HID_T@ HL = @HL@ HL_FOR = @HL_FOR@ @@ -485,6 +495,11 @@ libhdf5_fortran_la_LDFLAGS = -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISI # Include HDF5.f90 if parallel is disabled, HDF5mpiof* if parallel is enabled @BUILD_PARALLEL_CONDITIONAL_TRUE@PARALLEL_COND_SRC = H5FDmpiof.c HDF5mpio.f90 H5FDmpioff.f90 +@FORTRAN_2003_CONDITIONAL_F_FALSE@F_STATUS = _F90 + +# Check if the compiler supports the Fortran 2003 standard +# which should include the intrinsic module iso_c_binding +@FORTRAN_2003_CONDITIONAL_F_TRUE@F_STATUS = _F03 @FORTRAN_DEFAULT_REALisDBLE_F_FALSE@F_DBLE = Include # Condition for including/excluding the DBLE interfaces for when the @@ -495,14 +510,15 @@ libhdf5_fortran_la_LDFLAGS = -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISI @FORTRAN_DEFAULT_REALisDBLE_F_TRUE@F_DBLE = Exclude # Source files for the library. -libhdf5_fortran_la_SOURCES = H5f90global.f90 \ - H5fortran_types.f90 H5_ff.f90 H5Aff.f90 H5Dff.f90 H5Eff.f90 \ - H5Fff.f90 H5Gff.f90 H5Iff.f90 H5Lff.f90 H5Off.f90 H5Pff.f90 H5Rff.f90 H5Sff.f90 \ - H5Tff.f90 H5Zff.f90 \ - H5_DBLE_Interface$(F_DBLE).f90 \ - H5f90kit.c H5_f.c H5Af.c H5Df.c H5Ef.c H5Ff.c H5Gf.c \ - H5If.c H5Lf.c H5Of.c H5Pf.c H5Rf.c H5Sf.c H5Tf.c H5Zf.c \ - $(PARALLEL_COND_SRC) +libhdf5_fortran_la_SOURCES = H5f90global.f90 \ + H5fortran_types.f90 H5_ff$(F_STATUS).f90 H5_ff.f90 H5Aff.f90 H5Dff.f90 H5Eff.f90 \ + H5Fff.f90 H5Gff.f90 H5Iff.f90 H5Lff.f90 H5Off.f90 H5Pff.f90 H5Rff.f90 H5Sff.f90 \ + H5Tff.f90 H5Zff.f90 \ + H5_DBLE_Interface$(F_DBLE).f90 \ + H5f90kit.c H5_f.c H5Af.c H5Df.c H5Ef.c H5Ff.c H5Gf.c \ + H5If.c H5Lf.c H5Of.c H5Pf.c H5Rf.c H5Sf.c H5Tf.c H5Zf.c \ + H5Aff$(F_STATUS).f90 H5Dff$(F_STATUS).f90 H5Eff$(F_STATUS).f90 H5Lff$(F_STATUS).f90 \ + H5Off$(F_STATUS).f90 H5Pff$(F_STATUS).f90 H5Rff$(F_STATUS).f90 H5Tff$(F_STATUS).f90 $(PARALLEL_COND_SRC) # HDF5 Fortran library depends on HDF5 Library. @@ -1022,10 +1038,19 @@ H5f90global.lo: $(srcdir)/H5f90global.f90 H5fortran_types.lo H5fortran_types.lo: H5fortran_types.f90 H5fortran_detect.lo: H5fortran_detect.f90 H5test_kind.lo: $(srcdir)/H5test_kind.f90 +H5_ff$(F_STATUS).lo: $(srcdir)/H5_ff$(F_STATUS).f90 H5f90global.lo +H5_ff.lo: $(srcdir)/H5_ff.f90 H5f90global.lo H5_ff$(F_STATUS).lo H5test_kind_SIZEOF.lo: $(srcdir)/H5test_kind_SIZEOF.f90 -H5_ff.lo: $(srcdir)/H5_ff.f90 H5f90global.lo H5Aff.lo: $(srcdir)/H5Aff.f90 H5f90global.lo H5Dff.lo: $(srcdir)/H5Dff.f90 H5f90global.lo +H5Aff$(F_STATUS).lo: $(srcdir)/H5Aff$(F_STATUS).f90 H5f90global.lo +H5Dff$(F_STATUS).lo: $(srcdir)/H5Dff$(F_STATUS).f90 H5f90global.lo +H5Eff$(F_STATUS).lo: $(srcdir)/H5Eff$(F_STATUS).f90 H5f90global.lo +H5Lff$(F_STATUS).lo: $(srcdir)/H5Lff$(F_STATUS).f90 H5f90global.lo +H5Off$(F_STATUS).lo: $(srcdir)/H5Off$(F_STATUS).f90 H5f90global.lo +H5Pff$(F_STATUS).lo: $(srcdir)/H5Pff$(F_STATUS).f90 H5f90global.lo +H5Rff$(F_STATUS).lo: $(srcdir)/H5Rff$(F_STATUS).f90 H5f90global.lo +H5Tff$(F_STATUS).lo: $(srcdir)/H5Tff$(F_STATUS).f90 H5f90global.lo H5Eff.lo: $(srcdir)/H5Eff.f90 H5f90global.lo H5Fff.lo: $(srcdir)/H5Fff.f90 H5f90global.lo H5Gff.lo: $(srcdir)/H5Gff.f90 H5f90global.lo @@ -1037,16 +1062,23 @@ H5Rff.lo: $(srcdir)/H5Rff.f90 H5f90global.lo H5Sff.lo: $(srcdir)/H5Sff.f90 H5f90global.lo H5Tff.lo: $(srcdir)/H5Tff.f90 H5f90global.lo H5Zff.lo: $(srcdir)/H5Zff.f90 H5f90global.lo -H5_DBLE_Interface$(F_DBLE).lo: $(srcdir)/H5_DBLE_Interface$(F_DBLE).f90 H5Aff.lo H5Dff.lo H5Pff.lo - -HDF5.lo: $(srcdir)/HDF5.f90 H5f90global.lo H5Aff.lo \ - H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo \ - H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo H5Zff.lo \ - H5_DBLE_Interface$(F_DBLE).lo +H5_DBLE_Interface$(F_DBLE).lo: $(srcdir)/H5_DBLE_Interface$(F_DBLE).f90 H5Aff$(F_STATUS).lo H5Dff$(F_STATUS).lo H5Eff$(F_STATUS).lo H5Pff$(F_STATUS).lo +HDF5.lo: $(srcdir)/HDF5.f90 H5f90global.lo H5Aff.lo H5Aff$(F_STATUS).lo \ + H5Dff.lo H5Dff$(F_STATUS).lo \ + H5Eff.lo H5Eff$(F_STATUS).lo \ + H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo H5Lff$(F_STATUS).lo \ + H5Off.lo H5Off$(F_STATUS).lo H5Pff.lo H5Pff$(F_STATUS).lo H5Rff$(F_STATUS).lo H5Rff.lo \ + H5Sff.lo H5Tff.lo H5Tff$(F_STATUS).lo H5Zff.lo \ + H5_DBLE_Interface$(F_DBLE).lo H5FDmpioff.lo: $(srcdir)/H5FDmpioff.f90 H5f90global.lo -HDF5mpio.lo: $(srcdir)/H5FDmpioff.f90 H5f90global.lo H5Aff.lo \ - H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo \ - H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo H5Zff.lo H5_DBLE_Interface$(F_DBLE).lo H5FDmpioff.lo +HDF5mpio.lo: $(srcdir)/H5FDmpioff.f90 H5f90global.lo \ + H5Aff.lo H5Aff$(F_STATUS).lo \ + H5Dff.lo H5Dff$(F_STATUS).lo \ + H5Eff.lo H5Eff$(F_STATUS).lo \ + H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo H5Lff$(F_STATUS).lo \ + H5Off.lo H5Off$(F_STATUS).lo H5Pff.lo H5Pff$(F_STATUS).lo H5Rff$(F_STATUS).lo H5Rff.lo \ + H5Sff.lo H5Tff.lo H5Tff$(F_STATUS).lo H5Zff.lo \ + H5_DBLE_Interface$(F_DBLE).lo H5FDmpioff.lo # lib/progs/tests targets recurse into subdirectories. build-* targets # build files in this directory. diff --git a/fortran/test/Makefile.am b/fortran/test/Makefile.am index fb4d6ca..b261785 100644 --- a/fortran/test/Makefile.am +++ b/fortran/test/Makefile.am @@ -35,8 +35,21 @@ else AM_LDFLAGS+=-static endif +# Check if the compiler supports the Fortran 2003 standard +# which should include the intrinsic module iso_c_binding +if FORTRAN_2003_CONDITIONAL_F + ff_PREFIX = F03 +else + ff_PREFIX = F90 +endif + # Our main targets, the tests themselves TEST_PROG=fortranlib_test fflush1 fflush2 fortranlib_test_1_8 + +if FORTRAN_2003_CONDITIONAL_F + TEST_PROG += fortranlib_test_F03 +endif + check_PROGRAMS=$(TEST_PROG) libh5test_fortran_la_SOURCES= tf.f90 t.c @@ -51,8 +64,14 @@ fortranlib_test_SOURCES = fortranlib_test.f90 \ tH5Sselect.f90 tH5P.f90 tH5A.f90 tH5I.f90 tH5G.f90 tH5E.f90 fortranlib_test_1_8_SOURCES = fortranlib_test_1_8.f90 \ - tH5F.f90 tH5O.f90 tH5A_1_8.f90 tH5G_1_8.f90 - + tH5F.f90 tH5O.f90 tH5A_1_8.f90 tH5G_1_8.f90 + +if FORTRAN_2003_CONDITIONAL_F + fortranlib_test_F03_SOURCES = fortranlib_test_F03.f90 \ + tH5F.f90 tH5E_F03.f90 tH5L_F03.f90 tH5P_F03.f90 tH5T_F03.f90 +endif + + fflush1_SOURCES=fflush1.f90 fflush2_SOURCES=fflush2.f90 diff --git a/fortran/test/Makefile.in b/fortran/test/Makefile.in index 080544c..27198a8 100644 --- a/fortran/test/Makefile.in +++ b/fortran/test/Makefile.in @@ -59,7 +59,8 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ # want to build a shared C library and a static Fortran library. If so, # pass the -static flag to the library linker. @FORTRAN_SHARED_CONDITIONAL_FALSE@am__append_1 = -static -check_PROGRAMS = $(am__EXEEXT_1) +@FORTRAN_2003_CONDITIONAL_F_TRUE@am__append_2 = fortranlib_test_F03 +check_PROGRAMS = $(am__EXEEXT_2) TESTS = $(check_PROGRAMS) subdir = fortran/test ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -77,8 +78,10 @@ libh5test_fortran_la_OBJECTS = $(am_libh5test_fortran_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent -am__EXEEXT_1 = fortranlib_test$(EXEEXT) fflush1$(EXEEXT) \ - fflush2$(EXEEXT) fortranlib_test_1_8$(EXEEXT) +@FORTRAN_2003_CONDITIONAL_F_TRUE@am__EXEEXT_1 = \ +@FORTRAN_2003_CONDITIONAL_F_TRUE@ fortranlib_test_F03$(EXEEXT) +am__EXEEXT_2 = fortranlib_test$(EXEEXT) fflush1$(EXEEXT) \ + fflush2$(EXEEXT) fortranlib_test_1_8$(EXEEXT) $(am__EXEEXT_1) am_fflush1_OBJECTS = fflush1.$(OBJEXT) fflush1_OBJECTS = $(am_fflush1_OBJECTS) fflush1_LDADD = $(LDADD) @@ -114,6 +117,18 @@ fortranlib_test_1_8_OBJECTS = $(am_fortranlib_test_1_8_OBJECTS) fortranlib_test_1_8_LDADD = $(LDADD) fortranlib_test_1_8_DEPENDENCIES = libh5test_fortran.la $(LIBH5TEST) \ $(LIBH5F) $(LIBHDF5) +am__fortranlib_test_F03_SOURCES_DIST = fortranlib_test_F03.f90 \ + tH5F.f90 tH5E_F03.f90 tH5L_F03.f90 tH5P_F03.f90 tH5T_F03.f90 +@FORTRAN_2003_CONDITIONAL_F_TRUE@am_fortranlib_test_F03_OBJECTS = fortranlib_test_F03.$(OBJEXT) \ +@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5F.$(OBJEXT) \ +@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5E_F03.$(OBJEXT) \ +@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5L_F03.$(OBJEXT) \ +@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5P_F03.$(OBJEXT) \ +@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5T_F03.$(OBJEXT) +fortranlib_test_F03_OBJECTS = $(am_fortranlib_test_F03_OBJECTS) +fortranlib_test_F03_LDADD = $(LDADD) +fortranlib_test_F03_DEPENDENCIES = libh5test_fortran.la $(LIBH5TEST) \ + $(LIBH5F) $(LIBHDF5) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src depcomp = $(SHELL) $(top_srcdir)/bin/depcomp am__depfiles_maybe = depfiles @@ -155,10 +170,11 @@ am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libh5test_fortran_la_SOURCES) $(fflush1_SOURCES) \ $(fflush2_SOURCES) $(fortranlib_test_SOURCES) \ - $(fortranlib_test_1_8_SOURCES) + $(fortranlib_test_1_8_SOURCES) $(fortranlib_test_F03_SOURCES) DIST_SOURCES = $(libh5test_fortran_la_SOURCES) $(fflush1_SOURCES) \ $(fflush2_SOURCES) $(fortranlib_test_SOURCES) \ - $(fortranlib_test_1_8_SOURCES) + $(fortranlib_test_1_8_SOURCES) \ + $(am__fortranlib_test_F03_SOURCES_DIST) ETAGS = etags CTAGS = ctags am__tty_colors = \ @@ -232,6 +248,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ +FC2003 = @FC2003@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ @@ -252,10 +269,12 @@ H5_LONE_COLON = @H5_LONE_COLON@ H5_VERSION = @H5_VERSION@ HADDR_T = @HADDR_T@ HAVE_DMALLOC = @HAVE_DMALLOC@ +HAVE_FORTRAN_2003 = @HAVE_FORTRAN_2003@ HDF5_HL = @HDF5_HL@ HDF5_INTERFACES = @HDF5_INTERFACES@ HDF_CXX = @HDF_CXX@ HDF_FORTRAN = @HDF_FORTRAN@ +HDF_FORTRAN2003 = @HDF_FORTRAN2003@ HID_T = @HID_T@ HL = @HL@ HL_FOR = @HL_FOR@ @@ -451,9 +470,15 @@ INCLUDES = -I$(top_srcdir)/src -I$(top_builddir)/fortran/src # The Fortran test library noinst_LTLIBRARIES = libh5test_fortran.la +@FORTRAN_2003_CONDITIONAL_F_FALSE@ff_PREFIX = F90 + +# Check if the compiler supports the Fortran 2003 standard +# which should include the intrinsic module iso_c_binding +@FORTRAN_2003_CONDITIONAL_F_TRUE@ff_PREFIX = F03 # Our main targets, the tests themselves -TEST_PROG = fortranlib_test fflush1 fflush2 fortranlib_test_1_8 +TEST_PROG = fortranlib_test fflush1 fflush2 fortranlib_test_1_8 \ + $(am__append_2) libh5test_fortran_la_SOURCES = tf.f90 t.c # Source files are used for both the library and fortranlib_test. @@ -465,7 +490,10 @@ fortranlib_test_SOURCES = fortranlib_test.f90 \ tH5Sselect.f90 tH5P.f90 tH5A.f90 tH5I.f90 tH5G.f90 tH5E.f90 fortranlib_test_1_8_SOURCES = fortranlib_test_1_8.f90 \ - tH5F.f90 tH5O.f90 tH5A_1_8.f90 tH5G_1_8.f90 + tH5F.f90 tH5O.f90 tH5A_1_8.f90 tH5G_1_8.f90 + +@FORTRAN_2003_CONDITIONAL_F_TRUE@fortranlib_test_F03_SOURCES = fortranlib_test_F03.f90 \ +@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5F.f90 tH5E_F03.f90 tH5L_F03.f90 tH5P_F03.f90 tH5T_F03.f90 fflush1_SOURCES = fflush1.f90 fflush2_SOURCES = fflush2.f90 @@ -559,6 +587,9 @@ fortranlib_test$(EXEEXT): $(fortranlib_test_OBJECTS) $(fortranlib_test_DEPENDENC fortranlib_test_1_8$(EXEEXT): $(fortranlib_test_1_8_OBJECTS) $(fortranlib_test_1_8_DEPENDENCIES) @rm -f fortranlib_test_1_8$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(fortranlib_test_1_8_OBJECTS) $(fortranlib_test_1_8_LDADD) $(LIBS) +fortranlib_test_F03$(EXEEXT): $(fortranlib_test_F03_OBJECTS) $(fortranlib_test_F03_DEPENDENCIES) + @rm -f fortranlib_test_F03$(EXEEXT) + $(AM_V_FCLD)$(FCLINK) $(fortranlib_test_F03_OBJECTS) $(fortranlib_test_F03_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) diff --git a/fortran/test/fflush1.f90 b/fortran/test/fflush1.f90 index 8767e55..d35bfff 100644 --- a/fortran/test/fflush1.f90 +++ b/fortran/test/fflush1.f90 @@ -1,3 +1,15 @@ +!****h* root/fortran/test/fflush1.f90 +! +! NAME +! FFLUSH1EXAMPLE +! +! FUNCTION +! This is the first half of a two-part test that makes sure +! that a file can be read after an application crashes as long +! as the file was flushed first. We simulate by exit the +! the program using stop statement +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,12 +25,7 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! -! -! Purpose: This is the first half of a two-part test that makes sure -! that a file can be read after an application crashes as long -! as the file was flushed first. We simulate by exit the -! the program using stop statement -! +!***** PROGRAM FFLUSH1EXAMPLE diff --git a/fortran/test/fflush2.f90 b/fortran/test/fflush2.f90 index a4710e2..d699150 100644 --- a/fortran/test/fflush2.f90 +++ b/fortran/test/fflush2.f90 @@ -1,3 +1,15 @@ +!****h* root/fortran/test/fflush2.f90 +! +! NAME +! fflush2.f90 +! +! FUNCTION +! This is the second half of a two-part test that makes sure +! that a file can be read after an application crashes as long +! as the file was flushed first. This half tries to read the +! file created by the first half. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,12 +25,7 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! -! -! Purpose: This is the second half of a two-part test that makes sure -! that a file can be read after an application crashes as long -! as the file was flushed first. This half tries to read the -! file created by the first half. -! +!***** PROGRAM FFLUSH2EXAMPLE @@ -89,7 +96,6 @@ write(*,*) "Cannot modify filename" CALL h5_exit_f (1) endif - print *, "filename=", filename, "fix_filename=", fix_filename CALL h5fopen_f(fix_filename, H5F_ACC_RDONLY_F, file_id, error) CALL check("h5fopen_f",error,total_error) @@ -135,7 +141,6 @@ !In case error happens, exit. ! IF (error == -1) CALL h5_exit_f (1) - ! !Close the datatype ! diff --git a/fortran/test/fortranlib_test.f90 b/fortran/test/fortranlib_test.f90 index 08580c8..6268d15 100644 --- a/fortran/test/fortranlib_test.f90 +++ b/fortran/test/fortranlib_test.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/fortranlib_test.f90 +! +! NAME +! fortranlib_test.f90 +! +! FUNCTION +! Basic testing of Fortran API's functionality. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,10 +22,8 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! -! -! -! Testing Fortran functionality. -! +!***** + PROGRAM fortranlibtest USE HDF5 @@ -142,7 +149,7 @@ PROGRAM fortranlibtest ret_total_error = 0 CALL test_select_bounds(cleanup, ret_total_error) CALL write_test_status(ret_total_error, ' Selection bounds test ', total_error) - + ! write(*,*) ! write(*,*) '=========================================' ! write(*,*) 'Testing DATATYPE interface ' diff --git a/fortran/test/fortranlib_test_1_8.f90 b/fortran/test/fortranlib_test_1_8.f90 index fac83eb..dbada6b 100644 --- a/fortran/test/fortranlib_test_1_8.f90 +++ b/fortran/test/fortranlib_test_1_8.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/fortranlib_test_1_8.f90 +! +! NAME +! fortranlib_test_1_8.f90 +! +! FUNCTION +! Basic testing of Fortran API's introduced in 1.8 release. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,10 +22,8 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! -! -! -! Testing Fortran wrappers introduced in 1.8 release. -! +!***** + PROGRAM fortranlibtest USE HDF5 @@ -81,20 +88,22 @@ PROGRAM fortranlibtest total_error) ret_total_error = 0 - CALL test_genprop_basic_class(cleanup, ret_total_error) + CALL test_h5s_encode(cleanup, ret_total_error) CALL write_test_status(ret_total_error, & - ' Testing basic generic properties', & + ' Testing dataspace encoding and decoding', & total_error) ret_total_error = 0 - CALL test_h5s_encode(cleanup, ret_total_error) + CALL test_nbit(cleanup, ret_total_error ) CALL write_test_status(ret_total_error, & - ' Testing dataspace encoding and decoding', & + ' Testing nbit filter', & total_error) - - -! CALL test_hard_query(group_total_error) + ret_total_error = 0 + CALL test_scaleoffset(cleanup, ret_total_error ) + CALL write_test_status(ret_total_error, & + ' Testing scaleoffset filter', & + total_error) WRITE(*,*) @@ -129,7 +138,6 @@ SUBROUTINE dtransform(cleanup, total_error) INTEGER(SIZE_T) :: size - CALL H5Fcreate_f("dtransform.h5", H5F_ACC_TRUNC_F, file_id, error) CALL check("dtransform.H5Fcreate_f", error, total_error) @@ -194,10 +202,6 @@ SUBROUTINE test_genprop_basic_class(cleanup, total_error) INTEGER :: size LOGICAL :: flag - !/* Output message about test being performed */ - - !WRITE(*,*) "Testing Basic Generic Property List Class Creation Functionality" - ! /* Create a new generic class, derived from the root of the class hierarchy */ CALL H5Pcreate_class_f(H5P_ROOT_F, CLASS1_NAME, cid1, error) CALL check("H5Pcreate_class", error, total_error) @@ -277,13 +281,10 @@ SUBROUTINE test_h5s_encode(cleanup, total_error) INTEGER :: rank !/* LOGICAL rank of dataspace */ INTEGER(size_t) :: sbuf_size=0, scalar_size=0 -! Make sure the size is large, need variable length in fortran 2003 +! Make sure the size is large CHARACTER(LEN=288) :: sbuf CHARACTER(LEN=288) :: scalar_buf -! F2003 CHARACTER(LEN=:), ALLOCATABLE :: sbuf -! unsigned char *sbuf=NULL, *null_sbuf=NULL, *scalar_buf=NULL; -! hsize_t tdims[4]; /* Dimension array to test with */ INTEGER(hsize_t) :: n ! /* Number of dataspace elements */ INTEGER(hsize_t), DIMENSION(1:3) :: start = (/0, 0, 0/) @@ -292,11 +293,8 @@ SUBROUTINE test_h5s_encode(cleanup, total_error) INTEGER(hsize_t), DIMENSION(1:3) :: BLOCK = (/1, 3, 1/) INTEGER :: space_type - -! H5S_sel_type sel_type; -! hssize_t nblocks; ! - !Dataset dimensions + ! Dataset dimensions ! INTEGER, PARAMETER :: SPACE1_DIM1= 3, SPACE1_DIM2=15, SPACE1_DIM3=13 @@ -304,9 +302,6 @@ SUBROUTINE test_h5s_encode(cleanup, total_error) INTEGER :: SPACE1_RANK = 3 INTEGER :: error - !/* Output message about test being performed */ - !WRITE(*,*) "Testing Dataspace Encoding and Decoding" - !/*------------------------------------------------------------------------- ! * Test encoding and decoding of simple dataspace and hyperslab selection. ! *------------------------------------------------------------------------- @@ -326,7 +321,6 @@ SUBROUTINE test_h5s_encode(cleanup, total_error) CALL H5Sencode_f(sid1, sbuf, sbuf_size, error) CALL check("H5Sencode", error, total_error) - ! In fortran 2003 we can allocate the needed character size here ! /* Try decoding bogus buffer */ @@ -347,23 +341,6 @@ SUBROUTINE test_h5s_encode(cleanup, total_error) CALL VERIFY("h5sget_simple_extent_npoints_f", INT(n), SPACE1_DIM1 * SPACE1_DIM2 * SPACE1_DIM3, & total_error) -!!$ -!!$ rank = H5Sget_simple_extent_ndims(decoded_sid1); -!!$ CHECK(rank, FAIL, "H5Sget_simple_extent_ndims"); -!!$ VERIFY(rank, SPACE1_RANK, "H5Sget_simple_extent_ndims"); -!!$ -!!$ rank = H5Sget_simple_extent_dims(decoded_sid1, tdims, NULL); -!!$ CHECK(rank, FAIL, "H5Sget_simple_extent_dims"); -!!$ VERIFY(HDmemcmp(tdims, dims1, SPACE1_RANK * sizeof(hsize_t)), 0, -!!$ "H5Sget_simple_extent_dims"); -!!$ -!!$ /* Verify hyperslabe selection */ -!!$ sel_type = H5Sget_select_type(decoded_sid1); -!!$ VERIFY(sel_type, H5S_SEL_HYPERSLABS, "H5Sget_select_type"); -!!$ -!!$ nblocks = H5Sget_select_hyper_nblocks(decoded_sid1); -!!$ VERIFY(nblocks, 2*2*2, "H5Sget_select_hyper_nblocks"); -!!$ ! !Close the dataspace for the dataset. ! @@ -423,3 +400,289 @@ SUBROUTINE test_h5s_encode(cleanup, total_error) END SUBROUTINE test_h5s_encode +!------------------------------------------------------------------------- +! Function: test_nbit +! +! Purpose: Tests (real) datatype for nbit filter +! +! Return: Success: 0 +! Failure: >0 +! +! Programmer: M. Scot Breitenfeld +! Decemeber 7, 2010 +! +! Modifications: +! +!------------------------------------------------------------------------- +! + +SUBROUTINE test_nbit(cleanup, total_error ) + + USE HDF5 + + IMPLICIT NONE + INTEGER, PARAMETER :: wp = KIND(1.0) + LOGICAL, INTENT(IN) :: cleanup + INTEGER, INTENT(INOUT) :: total_error + INTEGER(hid_t) :: file + + INTEGER(hid_t) :: dataset, datatype, space, dc + INTEGER(hsize_t), DIMENSION(1:2) :: dims = (/2,5/) + INTEGER(hsize_t), DIMENSION(1:2) :: chunk_dim = (/2,5/) + ! orig_data[] are initialized to be within the range that can be represented by + ! dataset datatype (no precision loss during datatype conversion) + ! + REAL(kind=wp), DIMENSION(1:2,1:5) :: orig_data = RESHAPE( (/188384.00, 19.103516, -1.0831790e9, -84.242188, & + 5.2045898, -49140.000, 2350.2500, -3.2110596e-1, 6.4998865e-5, -0.0000000/) , (/2,5/) ) + REAL(kind=wp), DIMENSION(1:2,1:5) :: new_data + INTEGER(size_t) :: PRECISION, offset + INTEGER :: error + LOGICAL :: status + INTEGER*8 :: ii + INTEGER(size_t) :: i, j + + + ! check to see if filter is available + CALL H5Zfilter_avail_f(H5Z_FILTER_NBIT_F, status, error) + IF(.NOT.status)THEN ! We don't have H5Z_FILTER_NBIT_F filter + total_error = -1 ! so return + RETURN + ENDIF + + CALL H5Fcreate_f("nbit.h5", H5F_ACC_TRUNC_F, file, error) + CALL check("H5Fcreate_f", error, total_error) + + ! Define dataset datatype (integer), and set precision, offset + CALL H5Tcopy_f(H5T_IEEE_F32BE, datatype, error) + CALL CHECK(" H5Tcopy_f", error, total_error) + CALL H5Tset_fields_f(datatype, 26_size_t, 20_size_t, 6_size_t, 7_size_t, 13_size_t, error) + CALL CHECK(" H5Tset_fields_f", error, total_error) + offset = 7 + CALL H5Tset_offset_f(datatype, offset, error) + CALL CHECK(" H5Tset_offset_f", error, total_error) + PRECISION = 20 + CALL H5Tset_precision_f(datatype,PRECISION, error) + CALL CHECK(" H5Tset_precision_f", error, total_error) + + CALL H5Tset_size_f(datatype, 4_size_t, error) + CALL CHECK(" H5Tset_size_f", error, total_error) + + CALL H5Tset_ebias_f(datatype, 31_size_t, error) + CALL CHECK(" H5Tset_ebias_f", error, total_error) + + ! Create the data space + CALL H5Screate_simple_f(2, dims, space, error) + CALL CHECK(" H5Screate_simple_f", error, total_error) + + ! USE nbit filter + CALL H5Pcreate_f(H5P_DATASET_CREATE_F, dc, error) + CALL CHECK(" H5Pcreate_f", error, total_error) + + CALL H5Pset_chunk_f(dc, 2, chunk_dim, error) + CALL CHECK(" H5Pset_chunk_f", error, total_error) + CALL H5Pset_nbit_f(dc, error) + CALL CHECK(" H5Pset_nbit_f", error, total_error) + + ! Create the dataset + CALL H5Dcreate_f(file, "nbit_real", datatype, & + space, dataset, error, dc) + CALL CHECK(" H5Dcreate_f", error, total_error) + + !---------------------------------------------------------------------- + ! STEP 1: Test nbit by setting up a chunked dataset and writing + ! to it. + !---------------------------------------------------------------------- + ! + CALL H5Dwrite_f(dataset, H5T_NATIVE_REAL, orig_data, dims, error) + CALL CHECK(" H5Dwrite_f", error, total_error) + + !---------------------------------------------------------------------- + ! STEP 2: Try to read the data we just wrote. + !---------------------------------------------------------------------- + ! + CALL H5Dread_f(dataset, H5T_NATIVE_REAL, new_data, dims, error) + CALL CHECK(" H5Dread_f", error, total_error) + + ! Check that the values read are the same as the values written + ! Assume size of long long = size of double + ! + i_loop: DO i = 1, dims(1) + j_loop: DO j = 1, dims(2) + IF(.NOT.(orig_data(i,j).EQ.orig_data(i,j))) CYCLE ! skip IF value is NaN + IF(new_data(i,j) .NE. orig_data(i,j))THEN + total_error = total_error + 1 + WRITE(*,'(" Read different values than written.")') + WRITE(*,'(" At index ", 2(1X,I0))') i, j + EXIT i_loop + END IF + ENDDO j_loop + ENDDO i_loop + + !---------------------------------------------------------------------- + ! Cleanup + !---------------------------------------------------------------------- + ! + CALL H5Tclose_f(datatype, error) + CALL CHECK(" H5Tclose_f", error, total_error) + CALL H5Pclose_f(dc, error) + CALL CHECK(" H5Pclose_f", error, total_error) + CALL H5Sclose_f(space, error) + CALL CHECK(" H5Sclose_f", error, total_error) + CALL H5Dclose_f(dataset, error) + CALL CHECK(" H5Dclose_f", error, total_error) + CALL H5Fclose_f(file, error) + CALL CHECK(" H5Fclose_f", error, total_error) + +END SUBROUTINE test_nbit + +!------------------------------------------------------------------------- +! Function: test_scaleoffset +! +! Purpose: Tests the integer datatype for scaleoffset filter +! with fill value set +! +! Return: Success: 0 +! Failure: >0 +! +! Programmer: M. Scot Breitenfeld +! Decemeber 11, 2010 +! +! Modifications: +! +!------------------------------------------------------------------------- +! + +SUBROUTINE test_scaleoffset(cleanup, total_error ) + + USE HDF5 + + IMPLICIT NONE + LOGICAL, INTENT(IN) :: cleanup + INTEGER, INTENT(INOUT) :: total_error + INTEGER(hid_t) :: file + + INTEGER(hid_t) :: dataset, datatype, space, mspace, dc + INTEGER(hsize_t), DIMENSION(1:2) :: dims = (/2, 5/) + INTEGER(hsize_t), DIMENSION(1:2) :: chunk_dim = (/2, 5/) + INTEGER, DIMENSION(1:2,1:5) :: orig_data + INTEGER, DIMENSION(1:2,1:5) :: new_data + INTEGER(hsize_t), DIMENSION(1:2) :: start ! Start of hyperslab + INTEGER(hsize_t), DIMENSION(1:2) :: stride ! Stride of hyperslab + INTEGER(hsize_t), DIMENSION(1:2) :: count ! BLOCK count + INTEGER(hsize_t), DIMENSION(1:2) :: BLOCK ! BLOCK sizes + INTEGER :: fillval + INTEGER(size_t) :: j + REAL :: x + INTEGER :: error + LOGICAL :: status + + ! check to see if filter is available + CALL H5Zfilter_avail_f(H5Z_FILTER_SCALEOFFSET_F, status, error) + IF(.NOT.status)THEN ! We don't have H5Z_FILTER_SCALEOFFSET_F filter + total_error = -1 ! so return + RETURN + ENDIF + + CALL H5Fcreate_f("h5scaleoffset.h5", H5F_ACC_TRUNC_F, file, error) + CALL check("H5Fcreate_f", error, total_error) + + CALL H5Tcopy_f(H5T_NATIVE_INTEGER, datatype, error) + CALL CHECK(" H5Tcopy_f", error, total_error) + + ! Set order of dataset datatype + CALL H5Tset_order_f(datatype, H5T_ORDER_BE_F, error) + CALL CHECK(" H5Tset_order_f", error, total_error) + + ! Create the data space for the dataset + CALL H5Screate_simple_f(2, dims, space, error) + CALL CHECK(" H5Screate_simple_f", error, total_error) + + ! Create the dataset property list + CALL H5Pcreate_f(H5P_DATASET_CREATE_F, dc, error) + CALL CHECK(" H5Pcreate_f", error, total_error) + + ! Set fill value + fillval = 10000 + CALL H5Pset_fill_value_f(dc, H5T_NATIVE_INTEGER, fillval, error) + CALL CHECK(" H5Pset_fill_value_f", error, total_error) + + ! Set up to use scaleoffset filter, let library calculate minbits + CALL H5Pset_chunk_f(dc, 2, chunk_dim, error) + CALL CHECK(" H5Pset_chunk_f", error, total_error) + + CALL H5Pset_scaleoffset_f(dc, H5Z_SO_INT_F, H5Z_SO_INT_MINBITS_DEFAULT_F, error) + CALL CHECK(" H5Pset_scaleoffset_f", error, total_error) + + ! Create the dataset + CALL H5Dcreate_f(file, "scaleoffset_int", datatype, & + space, dataset, error, dc) + CALL CHECK(" H5Dcreate_f", error, total_error) + + ! Create the memory data space + CALL H5Screate_simple_f(2, dims, mspace, error) + CALL CHECK(" H5Screate_simple_f", error, total_error) + + ! Select hyperslab for data to write, using 1x5 blocks, + ! (1,1) stride and (1,1) count starting at the position (0,0) + + start(1:2) = (/0,0/) + stride(1:2) = (/1,1/) + COUNT(1:2) = (/1,1/) + BLOCK(1:2) = (/1,5/) + + CALL H5Sselect_hyperslab_f(mspace, H5S_SELECT_SET_F, start, & + count, error, stride, BLOCK) + CALL CHECK(" H5Sselect_hyperslab_f", error, total_error) + + CALL RANDOM_SEED() + ! Initialize data of hyperslab + DO j = 1, dims(2) + CALL RANDOM_NUMBER(x) + orig_data(1,j) = INT(x*10000.) + IF(MOD(j,2).EQ.0)THEN + orig_data(1,j) = - orig_data(1,j) + ENDIF + ENDDO + + !---------------------------------------------------------------------- + ! STEP 1: Test scaleoffset by setting up a chunked dataset and writing + ! to it. + !---------------------------------------------------------------------- + + ! Only data in the hyperslab will be written, other value should be fill value + CALL H5Dwrite_f(dataset, H5T_NATIVE_INTEGER, orig_data, dims, error, mspace, mspace, H5P_DEFAULT_F) + CALL CHECK(" H5Dwrite_f", error, total_error) + + !---------------------------------------------------------------------- + ! STEP 2: Try to read the data we just wrote. + !---------------------------------------------------------------------- + + ! Read the dataset back + + CALL H5Dread_f(dataset, H5T_NATIVE_INTEGER, new_data, dims, error, mspace, mspace, H5P_DEFAULT_F) + CALL CHECK(" H5Dread_f", error, total_error) + + ! Check that the values read are the same as the values written + DO j = 1, dims(2) + IF(new_data(1,j) .NE. orig_data(1,j))THEN + total_error = total_error + 1 + WRITE(*,'(" Read different values than written.")') + WRITE(*,'(" At index ", 2(1X,I0))') 1, j + EXIT + ENDIF + ENDDO + !---------------------------------------------------------------------- + ! Cleanup + !---------------------------------------------------------------------- + CALL H5Tclose_f(datatype, error) + CALL CHECK(" H5Tclose_f", error, total_error) + CALL H5Pclose_f(dc, error) + CALL CHECK(" H5Pclose_f", error, total_error) + CALL H5Sclose_f(space, error) + CALL CHECK(" H5Sclose_f", error, total_error) + CALL H5Dclose_f(dataset, error) + CALL CHECK(" H5Dclose_f", error, total_error) + CALL H5Fclose_f(file, error) + CALL CHECK(" H5Fclose_f", error, total_error) + +END SUBROUTINE test_scaleoffset diff --git a/fortran/test/fortranlib_test_F03.f90 b/fortran/test/fortranlib_test_F03.f90 new file mode 100644 index 0000000..62315ba --- /dev/null +++ b/fortran/test/fortranlib_test_F03.f90 @@ -0,0 +1,168 @@ +!****h* root/fortran/test/fortranlib_test_F03.f90 +! +! NAME +! fortranlib_test_F03.f90 +! +! FUNCTION +! Basic testing of Fortran API's requiring Fortran 2003 +! compliance. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +!***** + +PROGRAM fortranlibtest_F03 + + USE HDF5 + + IMPLICIT NONE + INTEGER :: total_error = 0 + INTEGER :: error + INTEGER :: majnum, minnum, relnum + LOGICAL :: szip_flag + INTEGER :: ret_total_error + LOGICAL :: cleanup, status + + CALL h5open_f(error) + + cleanup = .TRUE. + CALL h5_env_nocleanup_f(status) + IF(status) cleanup=.FALSE. + + WRITE(*,'(24X,A)') '==============================' + WRITE(*,'(24X,A)') ' FORTRAN 2003 tests ' + WRITE(*,'(24X,A)') '==============================' + CALL h5get_libversion_f(majnum, minnum, relnum, total_error) + IF(total_error .EQ. 0) THEN + WRITE(*, '(" FORTRANLIB_TEST is linked with HDF5 Library version ")', advance="NO") + WRITE(*, '(I1)', advance="NO") majnum + WRITE(*, '(".")', advance="NO") + WRITE(*, '(I1)', advance="NO") minnum + WRITE(*, '(" release ")', advance="NO") + WRITE(*, '(I3)') relnum + ELSE + total_error = total_error + 1 + ENDIF + + ret_total_error = 0 +! PROBLEMS with C +! CALL test_error(ret_total_error) +! CALL write_test_status(ret_total_error, ' Test error API based on data I/O', total_error) + + WRITE(*,*) +! write(*,*) +! write(*,*) '=========================================' +! write(*,*) 'Testing DATATYPE interface ' +! write(*,*) '=========================================' + ret_total_error = 0 + CALL test_array_compound_atomic(ret_total_error) + CALL write_test_status(ret_total_error, ' Testing 1-D Array of Compound Datatypes Functionality', total_error) + + ret_total_error = 0 + CALL test_array_compound_array(ret_total_error) + CALL write_test_status(ret_total_error, ' Testing 1-D Array of Compound Array Datatypes Functionality', total_error) + + ret_total_error = 0 + CALL t_array(ret_total_error) + CALL write_test_status(ret_total_error, ' Testing 3-D array by dataset, using C_LOC', total_error) + + ret_total_error = 0 + CALL t_enum(ret_total_error) + CALL write_test_status(ret_total_error, ' Testing writing/reading enum dataset, using C_LOC', total_error) + + ret_total_error = 0 + CALL t_bit(ret_total_error) + CALL write_test_status(ret_total_error, ' Testing writing/reading bitfield dataset, using C_LOC', total_error) + + ret_total_error = 0 + CALL t_opaque(ret_total_error) + CALL write_test_status(ret_total_error, ' Testing writing/reading opaque datatypes, using C_LOC', total_error) + + ret_total_error = 0 + CALL t_objref(ret_total_error) + CALL write_test_status(ret_total_error, ' Testing writing/reading object references, using C_LOC', total_error) + + ret_total_error = 0 + CALL t_regref(ret_total_error) + CALL write_test_status(ret_total_error, ' Testing writing/reading region references, using C_LOC', total_error) + + ret_total_error = 0 + CALL t_vlen(ret_total_error) + CALL write_test_status(ret_total_error, ' Testing writing/reading variable-length datatypes, using C_LOC', total_error) + + ret_total_error = 0 + CALL t_vlstring(ret_total_error) + CALL write_test_status(ret_total_error, ' Testing writing/reading variable-string datatypes, using C_LOC', total_error) + + ret_total_error = 0 + CALL t_string(ret_total_error) + CALL write_test_status(ret_total_error, ' Testing writing/reading string datatypes, using C_LOC', total_error) + + ret_total_error = 0 + CALL test_create(ret_total_error) + CALL write_test_status(ret_total_error, & + ' Testing filling functions', & + total_error) +!DEC$ if defined(H5_VMS) + GOTO 8 +!DEC$ else + ret_total_error = 0 + CALL file_close(cleanup, ret_total_error) + CALL write_test_status(ret_total_error, ' File open/close test', total_error) +!DEC$ endif +8 CONTINUE + + ret_total_error = 0 + CALL test_h5kind_to_type(total_error) + CALL write_test_status(ret_total_error, & + ' Test function h5kind_to_type', & + total_error) + + ret_total_error = 0 + CALL test_array_bkg(ret_total_error) + CALL write_test_status(ret_total_error, ' Testing Partial I/O of Array Fields in Compound Datatype FunctionalityT', total_error) + + ret_total_error = 0 + CALL test_genprop_class_callback(ret_total_error) + CALL write_test_status(ret_total_error, ' Test basic generic property list callback functionality', total_error) + + ret_total_error = 0 + CALL test_iter_group(ret_total_error) + CALL write_test_status(ret_total_error, ' Testing Group Iteration Functionality', total_error) + +! write(*,*) +! write(*,*) '=========================================' +! write(*,*) 'Testing GROUP interface ' +! write(*,*) '=========================================' + + + WRITE(*,*) + + WRITE(*,*) ' ============================================ ' + WRITE(*, fmt = '(19x, 27a)', advance='NO') ' FORTRAN tests completed with ' + WRITE(*, fmt = '(i4)', advance='NO') total_error + WRITE(*, fmt = '(12a)' ) ' error(s) ! ' + WRITE(*,*) ' ============================================ ' + + CALL h5close_f(error) + + ! if errors detected, exit with non-zero code. + IF (total_error .NE. 0) CALL h5_exit_f(1) + +END PROGRAM fortranlibtest_F03 + + diff --git a/fortran/test/t.c b/fortran/test/t.c index bf30331..01d4cdd 100644 --- a/fortran/test/t.c +++ b/fortran/test/t.c @@ -1,4 +1,13 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****h* root/fortran/test/tc.c + * + * NAME + * tc.c + * + * FUNCTION + * This file contains C routines needed for the test programs. + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,7 +20,10 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include "t.h" #include "H5Eprivate.h" diff --git a/fortran/test/tH5A.f90 b/fortran/test/tH5A.f90 index dd6cbb1..03522f7 100644 --- a/fortran/test/tH5A.f90 +++ b/fortran/test/tH5A.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/tH5A.f90 +! +! NAME +! tH5A.f90 +! +! FUNCTION +! Basic testing of Fortran H5A APIs. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,6 +22,12 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! CONTAINS SUBROUTINES +! attribute_test +! +! +!***** + SUBROUTINE attribute_test(cleanup, total_error) ! This subroutine tests following functionalities: diff --git a/fortran/test/tH5A_1_8.f90 b/fortran/test/tH5A_1_8.f90 index c48420e..c1dca9d 100644 --- a/fortran/test/tH5A_1_8.f90 +++ b/fortran/test/tH5A_1_8.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/tH5A_1_8.f90 +! +! NAME +! tH5A_1_8.f90 +! +! FUNCTION +! Basic testing of Fortran H5A APIs introduced in 1.8. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,6 +22,15 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! CONTAINS SUBROUTINES +! attribute_test_1_8, test_attr_corder_create_compact, test_attr_null_space, +! test_attr_create_by_name, test_attr_info_by_idx, attr_info_by_idx_check, +! test_attr_shared_rename, test_attr_delete_by_idx, test_attr_shared_delete, +! test_attr_dense_open, test_attr_dense_verify, test_attr_corder_create_basic, +! test_attr_basic_write, test_attr_many, attr_open_check, +! +!***** + SUBROUTINE attribute_test_1_8(cleanup, total_error) ! This subroutine tests following 1.8 functionalities: @@ -96,18 +114,6 @@ SUBROUTINE attribute_test_1_8(cleanup, total_error) ' - Tests INT attributes on both datasets and groups', & total_error) -!!$ CALL test_attr_basic_read(my_fapl) -!!$ CALL test_attr_flush(my_fapl) -!!$ CALL test_attr_plist(my_fapl) ! this is next -!!$ CALL test_attr_compound_write(my_fapl) -!!$ CALL test_attr_compound_read(my_fapl) -!!$ CALL test_attr_scalar_write(my_fapl) -!!$ CALL test_attr_scalar_read(my_fapl) -!!$ CALL test_attr_mult_write(my_fapl) -!!$ CALL test_attr_mult_read(my_fapl) -!!$ CALL test_attr_iterate(my_fapl) -!!$ CALL test_attr_delete(my_fapl) -!!$ CALL test_attr_dtype_shared(my_fapl) IF(new_format(i)) THEN DO j = 1, 2 IF (use_shared(j)) THEN @@ -117,7 +123,6 @@ SUBROUTINE attribute_test_1_8(cleanup, total_error) WRITE(*,*) " - Testing without shared attributes:" my_fcpl = fcpl END IF -!!$ CALL test_attr_dense_create(my_fcpl, my_fapl) ret_total_error = 0 CALL test_attr_dense_open(my_fcpl, my_fapl, ret_total_error) @@ -125,17 +130,11 @@ SUBROUTINE attribute_test_1_8(cleanup, total_error) ' - Testing INT attributes on both datasets and groups', & total_error) -!!$ CALL test_attr_dense_delete(my_fcpl, my_fapl) -!!$ CALL test_attr_dense_rename(my_fcpl, my_fapl) -!!$ CALL test_attr_dense_unlink(my_fcpl, my_fapl) -!!$ CALL test_attr_dense_limits(my_fcpl, my_fapl) -!!$ CALL test_attr_big(my_fcpl, my_fapl) ret_total_error = 0 CALL test_attr_null_space(my_fcpl, my_fapl, ret_total_error) CALL write_test_status(ret_total_error, & ' - Testing storing attribute with "null" dataspace', & total_error) -!!$ CALL test_attr_deprec(fcpl, my_fapl) ret_total_error = 0 CALL test_attr_many(new_format(i), my_fcpl, my_fapl, ret_total_error) CALL write_test_status(ret_total_error, & @@ -153,10 +152,6 @@ SUBROUTINE attribute_test_1_8(cleanup, total_error) CALL write_test_status(ret_total_error, & ' - Testing compact storage on objects with attribute creation order', & total_error) -!!$ CALL test_attr_corder_create_dense(my_fcpl, my_fapl) -!!$ CALL test_attr_corder_create_reopen(my_fcpl, my_fapl) -!!$ CALL test_attr_corder_transition(my_fcpl, my_fapl) -!!$ CALL test_attr_corder_delete(my_fcpl, my_fapl) ret_total_error = 0 CALL test_attr_info_by_idx(new_format(i), my_fcpl, my_fapl, ret_total_error) CALL write_test_status(ret_total_error, & @@ -169,9 +164,6 @@ SUBROUTINE attribute_test_1_8(cleanup, total_error) ' - Testing deleting attribute by index', & total_error) -!!$ CALL test_attr_iterate2(new_format, my_fcpl, my_fapl) -!!$ CALL test_attr_open_by_idx(new_format, my_fcpl, my_fapl) -!!$ CALL test_attr_open_by_name(new_format, my_fcpl, my_fapl) ret_total_error = 0 CALL test_attr_create_by_name(new_format(i), my_fcpl, my_fapl, ret_total_error) CALL write_test_status(ret_total_error, & @@ -180,7 +172,6 @@ SUBROUTINE attribute_test_1_8(cleanup, total_error) ! /* More complex tests with both "new format" and "shared" attributes */ IF( use_shared(j) ) THEN -!!$ CALL test_attr_shared_write(my_fcpl, my_fapl) ret_total_error = 0 CALL test_attr_shared_rename(my_fcpl, my_fapl, ret_total_error) CALL write_test_status(ret_total_error,& @@ -193,24 +184,8 @@ SUBROUTINE attribute_test_1_8(cleanup, total_error) ' - Testing deleting shared attributes in "compact" & "dense" storage', & total_error) - -!!$ CALL test_attr_shared_unlink(my_fcpl, my_fapl) END IF -!!$ CALL test_attr_bug1(my_fcpl, my_fapl) END DO -!!$ ELSE -!!$ CALL test_attr_big(fcpl, my_fapl) -!!$ CALL test_attr_null_space(fcpl, my_fapl) -!!$ CALL test_attr_deprec(fcpl, my_fapl) -!!$ CALL test_attr_many(new_format, fcpl, my_fapl) -!!$ CALL test_attr_info_by_idx(new_format, fcpl, my_fapl) -!!$ CALL test_attr_delete_by_idx(new_format, fcpl, my_fapl) -!!$ CALL test_attr_iterate2(new_format, fcpl, my_fapl) -!!$ CALL test_attr_open_by_idx(new_format, fcpl, my_fapl) -!!$ CALL test_attr_open_by_name(new_format, fcpl, my_fapl) -!!$ CALL test_attr_create_by_name(new_format, fcpl, my_fapl) -!!$ CALL test_attr_bug1(fcpl, my_fapl) - END IF ENDDO @@ -315,13 +290,7 @@ SUBROUTINE test_attr_corder_create_compact(fcpl,fapl, total_error) my_dataset = dset2 CASE (2) my_dataset = dset3 -! CASE DEFAULT -! CALL HDassert(0.AND."Toomanydatasets!") END SELECT -!!$ is_empty = H5O_is_attr_empty_test(my_dataset) -!!$ CALL VERIFY(is_empty, TRUE, "H5O_is_attr_empty_test") -!!$ is_dense = H5O_is_attr_dense_test(my_dataset) -!!$ CALL VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test") DO u = 0, max_compact - 1 ! /* Create attribute */ WRITE(chr2,'(I2.2)') u @@ -337,13 +306,6 @@ SUBROUTINE test_attr_corder_create_compact(fcpl,fapl, total_error) CALL h5aclose_f(attr, error) CALL check("h5aclose_f",error,total_error) -!!$ ret = H5O_num_attrs_test(my_dataset, nattrs) -!!$ CALL CHECK(ret, FAIL, "H5O_num_attrs_test") -!!$ CALL VERIFY(nattrs, (u + 1)) -!!$ is_empty = H5O_is_attr_empty_test(my_dataset) -!!$ CALL VERIFY(is_empty, FALSE, "H5O_is_attr_empty_test") -!!$ is_dense = H5O_is_attr_dense_test(my_dataset) -!!$ CALL VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test") END DO END DO @@ -387,14 +349,6 @@ SUBROUTINE test_attr_corder_create_compact(fcpl,fapl, total_error) CASE DEFAULT WRITE(*,*) " WARNING: To many data sets! " END SELECT -!!$ ret = H5O_num_attrs_test(my_dataset, nattrs) -!!$ CALL CHECK(ret, FAIL, "H5O_num_attrs_test") -!!$ CALL VERIFY(nattrs, max_compact, "H5O_num_attrs_test") -!!$ is_empty = H5O_is_attr_empty_test(my_dataset) -!!$ CALL VERIFY(is_empty, FALSE, "H5O_is_attr_empty_test") -!!$ is_dense = H5O_is_attr_dense_test(my_dataset) -!!$ CALL VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test") - DO u = 0,max_compact-1 WRITE(chr2,'(I2.2)') u attrname = 'attr '//chr2 @@ -483,8 +437,6 @@ SUBROUTINE test_attr_null_space(fcpl, fapl, total_error) data_dims = 0 - ! /* Output message about test being performed */ -! WRITE(*,*) " - Testing Storing Attributes with 'null' dataspace" ! /* Create file */ CALL h5fcreate_f(FileName, H5F_ACC_TRUNC_F, fid, error, fcpl, fapl) CALL check("h5fcreate_f",error,total_error) @@ -533,9 +485,6 @@ SUBROUTINE test_attr_null_space(fcpl, fapl, total_error) CALL check("H5Sextent_equal_f",error,total_error) CALL Verifylogical("H5Sextent_equal_f",equal,.TRUE.,total_error) -!!$ ret = H5Sclose(attr_sid) -!!$ CALL CHECK(ret, FAIL, "H5Sclose") - CALL h5aget_storage_size_f(attr, storage_size, error) CALL check("h5aget_storage_size_f",error,total_error) CALL VERIFY("h5aget_storage_size_f",INT(storage_size),0,total_error) @@ -639,11 +588,11 @@ SUBROUTINE test_attr_create_by_name(new_format,fcpl,fapl, total_error) ! /* Loop over using index for creation order value */ DO i = 1, 2 ! /* Print appropriate test message */ -!!$ IF(use_index(i))THEN -!!$ WRITE(*,*) " - Testing Creating Attributes By Name w/Creation Order Index" -!!$ ELSE -!!$ WRITE(*,*) " - Testing Creating Attributes By Name w/o Creation Order Index" -!!$ ENDIF + IF(use_index(i))THEN + WRITE(*,*) " - Testing Creating Attributes By Name w/Creation Order Index" + ELSE + WRITE(*,*) " - Testing Creating Attributes By Name w/o Creation Order Index" + ENDIF ! /* Create file */ CALL h5fcreate_f(FileName, H5F_ACC_TRUNC_F, fid, error, fcpl, fapl) CALL check("h5fcreate_f",error,total_error) @@ -691,11 +640,6 @@ SUBROUTINE test_attr_create_by_name(new_format,fcpl,fapl, total_error) ! CALL HDassert(0.AND."Toomanydatasets!") END SELECT - ! /* Check on dataset's attribute storage status */ -!!$ is_empty = H5O_is_attr_empty_test(my_dataset); -!!$ VERIFY(is_empty, TRUE, "H5O_is_attr_empty_test"); -!!$ is_dense = H5O_is_attr_dense_test(my_dataset); -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); !/* Create attributes, up to limit of compact form */ @@ -722,15 +666,6 @@ SUBROUTINE test_attr_create_by_name(new_format,fcpl,fapl, total_error) ! CALL check("FAILED IN attr_info_by_idx_check",total_error) ENDDO - ! /* Verify state of object */ -!!$ ret = H5O_num_attrs_test(my_dataset, &nattrs); -!!$ CHECK(ret, FAIL, "H5O_num_attrs_test"); -!!$ VERIFY(nattrs, max_compact, "H5O_num_attrs_test"); -!!$ is_empty = H5O_is_attr_empty_test(my_dataset); -!!$ VERIFY(is_empty, FALSE, "H5O_is_attr_empty_test"); -!!$ is_dense = H5O_is_attr_dense_test(my_dataset); -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); - ! /* Test opening attributes stored compactly */ CALL attr_open_check(fid, dsetname, my_dataset, u, total_error) @@ -771,39 +706,8 @@ SUBROUTINE test_attr_create_by_name(new_format,fcpl,fapl, total_error) CALL h5aclose_f(attr, error) CALL check("h5aclose_f",error,total_error) - ! /* Verify state of object */ -!!$ if(u >= max_compact) { -!!$ is_dense = H5O_is_attr_dense_test(my_dataset); -!!$ VERIFY(is_dense, (new_format ? TRUE : FALSE), "H5O_is_attr_dense_test"); -!!$ } /* end if */ -!!$ -!!$ /* Verify information for new attribute */ -!!$ ret = attr_info_by_idx_check(my_dataset, attrname, (hsize_t)u, use_index); -!!$ CHECK(ret, FAIL, "attr_info_by_idx_check"); ENDDO - ! /* Verify state of object */ -!!$ ret = H5O_num_attrs_test(my_dataset, &nattrs); -!!$ CHECK(ret, FAIL, "H5O_num_attrs_test"); -!!$ VERIFY(nattrs, (max_compact * 2), "H5O_num_attrs_test"); -!!$ is_empty = H5O_is_attr_empty_test(my_dataset); -!!$ VERIFY(is_empty, FALSE, "H5O_is_attr_empty_test"); -!!$ is_dense = H5O_is_attr_dense_test(my_dataset); -!!$ VERIFY(is_dense, (new_format ? TRUE : FALSE), "H5O_is_attr_dense_test"); - -!!$ if(new_format) { -!!$ /* Retrieve & verify # of records in the name & creation order indices */ -!!$ ret = H5O_attr_dense_info_test(my_dataset, &name_count, &corder_count); -!!$ CHECK(ret, FAIL, "H5O_attr_dense_info_test"); -!!$ if(use_index) -!!$ VERIFY(name_count, corder_count, "H5O_attr_dense_info_test"); -!!$ VERIFY(name_count, (max_compact * 2), "H5O_attr_dense_info_test"); -!!$ } /* end if */ - -!!$ /* Test opening attributes stored compactly */ -!!$ ret = attr_open_check(fid, dsetname, my_dataset, u); -!!$ CHECK(ret, FAIL, "attr_open_check"); - ENDDO ! /* Close Datasets */ @@ -914,13 +818,6 @@ SUBROUTINE test_attr_info_by_idx(new_format, fcpl, fapl, total_error) DO i = 1, 2 - ! /* Output message about test being performed */ -!!$ IF(use_index(i))THEN -!!$ WRITE(*,'(A72)') " - Testing Querying Attribute Info By Index w/Creation Order Index" -!!$ ELSE -!!$ WRITE(*,'(A74)') " - Testing Querying Attribute Info By Index w/o Creation Order Index" -!!$ ENDIF - ! /* Create file */ CALL h5fcreate_f(FileName, H5F_ACC_TRUNC_F, fid, error, fcpl, fapl) CALL check("h5fcreate_f",error,total_error) @@ -958,16 +855,8 @@ SUBROUTINE test_attr_info_by_idx(new_format, fcpl, fapl, total_error) my_dataset = dset2 CASE (2) my_dataset = dset3 - ! CASE DEFAULT - ! CALL HDassert(0.AND."Toomanydatasets!") END SELECT - !/* Check on dataset's attribute storage status */ -!!$ is_empty = H5O_is_attr_empty_test(my_dataset); -!!$ VERIFY(is_empty, TRUE, "H5O_is_attr_empty_test"); -!!$ is_dense = H5O_is_attr_dense_test(my_dataset); -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); - ! /* Check for query on non-existant attribute */ n = 0 @@ -1005,7 +894,6 @@ SUBROUTINE test_attr_info_by_idx(new_format, fcpl, fapl, total_error) WRITE(chr2,'(I2.2)') j attrname = 'attr '//chr2 - ! attr = H5Acreate2(my_dataset, attrname, H5T_NATIVE_UINT, sid, H5P_DEFAULT, H5P_DEFAULT); ! check with the optional information create2 specs. CALL h5acreate_f(my_dataset, attrname, H5T_NATIVE_INTEGER, sid, attr, error, H5P_DEFAULT_F, H5P_DEFAULT_F) CALL check("h5acreate_f",error,total_error) @@ -1138,7 +1026,6 @@ SUBROUTINE attr_info_by_idx_check(obj_id, attrname, n, use_index, total_error ) END IF - ! CALL HDmemset(ainfo, 0, SIZEOF(ainfo) CALL h5aget_info_by_idx_f(obj_id, ".", H5_INDEX_CRT_ORDER_F, H5_ITER_DEC_F, n, & f_corder_valid, corder, cset, data_size, error) CALL check("h5aget_info_by_idx_f",error,total_error) @@ -1178,9 +1065,7 @@ SUBROUTINE attr_info_by_idx_check(obj_id, attrname, n, use_index, total_error ) f_corder_valid, corder, cset, data_size, error) CALL check("h5aget_info_by_idx_f",error,total_error) CALL VERIFY("h5aget_info_by_idx_f",corder,INT(n),total_error) -!!$ ret = H5Aget_name_by_idx(obj_id, ".", H5_INDEX_NAME, H5_ITER_INC, n, tmpname, (size_t)NAME_BUF_SIZE, H5P_DEFAULT) -!!$ CALL CHECK(ret, FAIL, "H5Aget_name_by_idx") -!!$ IF (HDstrcmp(attrname, tmpname)) CALL TestErrPrintf("Line %d: attribute name size wrong!\n"C, __LINE__) + CALL h5aget_info_by_idx_f(obj_id, ".", H5_INDEX_NAME_F, H5_ITER_DEC_F, n, & f_corder_valid, corder, cset, data_size, error) CALL check("h5aget_info_by_idx_f",error,total_error) @@ -1190,9 +1075,7 @@ SUBROUTINE attr_info_by_idx_check(obj_id, attrname, n, use_index, total_error ) f_corder_valid, corder, cset, data_size, error) CALL check("h5aget_info_by_idx_f",error,total_error) CALL VERIFY("h5aget_info_by_idx_f",corder,INT(n),total_error) -!!$ ret = H5Aget_name_by_idx(obj_id, ".", H5_INDEX_NAME, H5_ITER_DEC, (hsize_t)0, tmpname, (size_t)NAME_BUF_SIZE, H5P_DEFAULT) -!!$ CALL CHECK(ret, FAIL, "H5Aget_name_by_idx") -!!$ IF (HDstrcmp(attrname, tmpname)) CALL TestErrPrintf("Line %d: attribute name size wrong!\n"C, __LINE__) + END SUBROUTINE attr_info_by_idx_check @@ -1263,9 +1146,7 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) INTEGER(HSIZE_T), DIMENSION(1) :: adims2 = (/1/) ! Attribute dimension INTEGER :: arank = 1 ! Attribure rank - ! /* Output message about test being performed */ -! WRITE(*,*) " - Testing Renaming Shared & Unshared Attributes in Compact & Dense Storage" -!!$ /* Initialize "big" attribute data */ + ! /* Initialize "big" attribute data */ ! /* Create dataspace for dataset */ CALL h5screate_f(H5S_SCALAR_F, sid, error) @@ -1338,19 +1219,6 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) CALL h5dcreate_f(fid, DSET2_NAME, H5T_NATIVE_CHARACTER, sid, dataset2, error, dcpl_id=dcpl ) CALL check("h5dcreate_f",error,total_error) - ! /* Check on dataset's message storage status */ -!!$ if(test_shared != 0) { -!!$ /* Datasets' datatypes can be shared */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_DTYPE_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 1, "H5F_get_sohm_mesg_count_test"); -!!$ -!!$ /* Datasets' dataspace can be shared */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_SDSPACE_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 1, "H5F_get_sohm_mesg_count_test"); -!!$ } /* end if */ - ! /* Retrieve limits for compact/dense attribute storage */ CALL H5Pget_attr_phase_change_f(dcpl, max_compact, min_dense, error) CALL check("H5Pget_attr_phase_change_f",error,total_error) @@ -1358,16 +1226,8 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) ! /* Close property list */ CALL h5pclose_f(dcpl,error) CALL check("h5pclose_f", error, total_error) -!!$ -!!$ -!!$ /* Check on datasets' attribute storage status */ -!!$ is_dense = H5O_is_attr_dense_test(dataset); -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); -!!$ is_dense = H5O_is_attr_dense_test(dataset2); -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); - ! /* Add attributes to each dataset, until after converting to dense storage */ - + ! /* Add attributes to each dataset, until after converting to dense storage */ DO u = 0, (max_compact * 2) - 1 ! /* Create attribute name */ @@ -1382,10 +1242,6 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) CALL h5acreate_f(dataset, attrname, attr_tid, sid, attr, error, H5P_DEFAULT_F, H5P_DEFAULT_F) CALL check("h5acreate_f",error,total_error) -!!$ /* Check that attribute is not shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, FALSE, "H5A_is_shared_test"); - ! /* Write data into the attribute */ attr_integer_data(1) = u + 1 data_dims(1) = 1 @@ -1397,15 +1253,6 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) CALL h5acreate_f(dataset, attrname, attr_tid, big_sid, attr, error, H5P_DEFAULT_F, H5P_DEFAULT_F) CALL check("h5acreate_f",error,total_error) - ! Check that attribute is shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, TRUE, "H5A_is_shared_test"); - - ! Check refcount for attribute */ -!!$ ret = H5A_get_shared_rc_test(attr, &shared_refcount); -!!$ CHECK(ret, FAIL, "H5A_get_shared_rc_test"); -!!$ VERIFY(shared_refcount, 1, "H5A_get_shared_rc_test"); -!!$ ! Write data into the attribute */ data_dims(1) = 1 @@ -1413,24 +1260,12 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) CALL h5awrite_f(attr, attr_tid, attr_integer_data, data_dims, error) CALL check("h5awrite_f",error,total_error) - ! Check refcount for attribute */ -!!$ ret = H5A_get_shared_rc_test(attr, &shared_refcount); -!!$ CHECK(ret, FAIL, "H5A_get_shared_rc_test"); -!!$ VERIFY(shared_refcount, 1, "H5A_get_shared_rc_test"); ENDIF ! /* Close attribute */ CALL h5aclose_f(attr, error) CALL check("h5aclose_f",error,total_error) - ! /* Check on dataset's attribute storage status */ -!!$ is_dense = H5O_is_attr_dense_test(dataset); -!!$ if(u < max_compact) -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); -!!$ else -!!$ VERIFY(is_dense, TRUE, "H5O_is_attr_dense_test"); -!!$ -!!$ ! /* Alternate between creating "small" & "big" attributes */ IF(MOD(u+1,2).EQ.0)THEN @@ -1439,10 +1274,6 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) CALL h5acreate_f(dataset2, attrname, attr_tid, sid, attr, error, H5P_DEFAULT_F, H5P_DEFAULT_F) CALL check("h5acreate_f",error,total_error) - ! /* Check that attribute is not shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, FALSE, "H5A_is_shared_test"); -!!$ ! /* Write data into the attribute */ attr_integer_data(1) = u + 1 @@ -1456,15 +1287,6 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) CALL h5acreate_f(dataset2, attrname, attr_tid, big_sid, attr, error, H5P_DEFAULT_F, H5P_DEFAULT_F) CALL check("h5acreate_f",error,total_error) -! /* Check that attribute is shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, TRUE, "H5A_is_shared_test"); -!!$ -! /* Check refcount for attribute */ -!!$ ret = H5A_get_shared_rc_test(attr, &shared_refcount); -!!$ CHECK(ret, FAIL, "H5A_get_shared_rc_test"); -!!$ VERIFY(shared_refcount, 1, "H5A_get_shared_rc_test"); -!!$ ! /* Write data into the attribute */ @@ -1475,23 +1297,11 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) ! /* Check refcount for attribute */ -!!$ ret = H5A_get_shared_rc_test(attr, &shared_refcount); -!!$ CHECK(ret, FAIL, "H5A_get_shared_rc_test"); -!!$ VERIFY(shared_refcount, 2, "H5A_get_shared_rc_test"); - ENDIF ! /* Close attribute */ CALL h5aclose_f(attr, error) CALL check("h5aclose_f",error,total_error) - ! /* Check on dataset's attribute storage status */ -!!$ is_dense = H5O_is_attr_dense_test(dataset2); -!!$ if(u < max_compact) -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); -!!$ else -!!$ VERIFY(is_dense, TRUE, "H5O_is_attr_dense_test"); - - ! /* Create new attribute name */ WRITE(chr2,'(I2.2)') u @@ -1510,22 +1320,6 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) CALL H5Aopen_f(dataset2, attrname2, attr, error, aapl_id=H5P_DEFAULT_F) CALL check("H5Aopen_f",error,total_error) -!!$ -!!$ IF(MOD(u+1,2).EQ.0)THEN -!!$ ! /* Check that attribute is not shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ CALL VERIFY("H5A_is_shared_test", error, minusone) -!!$ ELSE -!!$ ! /* Check that attribute is shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, TRUE, "H5A_is_shared_test"); -!!$ -!!$ /* Check refcount for attribute */ -!!$ ret = H5A_get_shared_rc_test(attr, &shared_refcount); -!!$ CHECK(ret, FAIL, "H5A_get_shared_rc_test"); -!!$ VERIFY(shared_refcount, 1, "H5A_get_shared_rc_test") -!!$ ENDIF - ! /* Close attribute */ CALL h5aclose_f(attr, error) CALL check("h5aclose_f",error,total_error) @@ -1534,22 +1328,6 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) CALL H5Aopen_f(dataset, attrname, attr, error) CALL check("H5Aopen",error,total_error) -!!$ if(u % 2) { -!!$ /* Check that attribute is not shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, FALSE, "H5A_is_shared_test"); -!!$ } /* end if */ -!!$ else { -!!$ /* Check that attribute is shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, TRUE, "H5A_is_shared_test"); -!!$ -!!$ /* Check refcount for attribute */ -!!$ ret = H5A_get_shared_rc_test(attr, &shared_refcount); -!!$ CHECK(ret, FAIL, "H5A_get_shared_rc_test"); -!!$ VERIFY(shared_refcount, 1, "H5A_get_shared_rc_test"); -!!$ } /* end else */ - ! /* Close attribute */ CALL h5aclose_f(attr, error) CALL check("h5aclose_f",error,total_error) @@ -1565,22 +1343,6 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) ! /* Check refcount on renamed attribute */ CALL H5Aopen_f(dataset2, attrname, attr, error) CALL check("H5Aopen",error,total_error) -!!$ -!!$ if(u % 2) { -!!$ /* Check that attribute is not shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, FALSE, "H5A_is_shared_test"); -!!$ } /* end if */ -!!$ else { -!!$ /* Check that attribute is shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, TRUE, "H5A_is_shared_test"); -!!$ -!!$ /* Check refcount for attribute */ -!!$ ret = H5A_get_shared_rc_test(attr, &shared_refcount); -!!$ CHECK(ret, FAIL, "H5A_get_shared_rc_test"); -!!$ VERIFY(shared_refcount, 2, "H5A_get_shared_rc_test"); -!!$ } /* end else */ ! /* Close attribute */ CALL h5aclose_f(attr, error) @@ -1592,22 +1354,6 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) CALL H5Aopen_f(dataset, attrname, attr, error) CALL check("H5Aopen",error,total_error) -!!$ if(u % 2) { -!!$ /* Check that attribute is not shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, FALSE, "H5A_is_shared_test"); -!!$ } /* end if */ -!!$ else { -!!$ /* Check that attribute is shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, TRUE, "H5A_is_shared_test"); -!!$ -!!$ /* Check refcount for attribute */ -!!$ ret = H5A_get_shared_rc_test(attr, &shared_refcount); -!!$ CHECK(ret, FAIL, "H5A_get_shared_rc_test"); -!!$ VERIFY(shared_refcount, 2, "H5A_get_shared_rc_test"); -!!$ } /* end else */ - ! /* Close attribute */ CALL h5aclose_f(attr, error) CALL check("h5aclose_f",error,total_error) @@ -1624,20 +1370,6 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) CALL h5dclose_f(dataset2, error) CALL check("h5dclose_f",error,total_error) -!!$ /* Check on shared message status now */ -!!$ if(test_shared != 0) { -!!$ if(test_shared == 1) { -!!$ /* Check on datatype storage status */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_DTYPE_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 2, "H5F_get_sohm_mesg_count_test"); -!!$ } /* end if */ -!!$ -!!$ /* Check on dataspace storage status */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_SDSPACE_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 2, "H5F_get_sohm_mesg_count_test"); -!!$ } /* end if */ ! /* Unlink datasets with attributes */ CALL H5Ldelete_f(fid, DSET1_NAME, error, H5P_DEFAULT_F) @@ -1651,23 +1383,6 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error) CALL check("HLdelete_f",error,total_error) ENDIF - ! /* Check on attribute storage status */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_ATTR_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 0, "H5F_get_sohm_mesg_count_test"); -!!$ -!!$ if(test_shared != 0) { -!!$ /* Check on datatype storage status */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_DTYPE_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 0, "H5F_get_sohm_mesg_count_test"); -!!$ -!!$ /* Check on dataspace storage status */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_SDSPACE_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 0, "H5F_get_sohm_mesg_count_test"); -!!$ } /* end if */ - ! /* Close file */ CALL h5fclose_f(fid, error) CALL check("h5fclose_f",error,total_error) @@ -1774,41 +1489,6 @@ SUBROUTINE test_attr_delete_by_idx(new_format, fcpl, fapl, total_error) ! /* Loop over using index for creation order value */ DO i = 1, 2 - ! /* Print appropriate test message */ -!!$ IF(idx_type .EQ. H5_INDEX_CRT_ORDER_F)THEN -!!$ IF(order .EQ. H5_ITER_INC_F) THEN -!!$ IF(use_index(i))THEN -!!$ WRITE(*,'(A102)') & -!!$ " - Testing Deleting Attribute By Creation Order Index in Increasing Order w/Creation Order Index" -!!$ ELSE -!!$ WRITE(*,'(A104)') & -!!$ " - Testing Deleting Attribute By Creation Order Index in Increasing Order w/o Creation Order Index" -!!$ ENDIF -!!$ ELSE -!!$ IF(use_index(i))THEN -!!$ WRITE(*,'(A102)') & -!!$ " - Testing Deleting Attribute By Creation Order Index in Decreasing Order w/Creation Order Index" -!!$ ELSE -!!$ WRITE(*,'(A104)') & -!!$ " - Testing Deleting Attribute By Creation Order Index in Decreasing Order w/o Creation Order Index" -!!$ ENDIF -!!$ ENDIF -!!$ ELSE -!!$ IF(order .EQ. H5_ITER_INC_F)THEN -!!$ IF(use_index(i))THEN -!!$ WRITE(*,'(7X,A86)')"- Testing Deleting Attribute By Name Index in Increasing Order w/Creation Order Index" -!!$ ELSE -!!$ WRITE(*,'(7X,A88)')"- Testing Deleting Attribute By Name Index in Increasing Order w/o Creation Order Index" -!!$ ENDIF -!!$ ELSE -!!$ IF(use_index(i))THEN -!!$ WRITE(*,'(7X,A86)') "- Testing Deleting Attribute By Name Index in Decreasing Order w/Creation Order Index" -!!$ ELSE -!!$ WRITE(*,'(7X,A88)') "- Testing Deleting Attribute By Name Index in Decreasing Order w/o Creation Order Index" -!!$ ENDIF -!!$ ENDIF -!!$ ENDIF - ! /* Create file */ CALL h5fcreate_f(FileName, H5F_ACC_TRUNC_F, fid, error, fcpl, fapl) CALL check("h5fcreate_f",error,total_error) @@ -1852,11 +1532,6 @@ SUBROUTINE test_attr_delete_by_idx(new_format, fcpl, fapl, total_error) ! CALL HDassert(0.AND."Toomanydatasets!") END SELECT - ! /* Check on dataset's attribute storage status */ -!!$ is_empty = H5O_is_attr_empty_test(my_dataset); -!!$ VERIFY(is_empty, TRUE, "H5O_is_attr_empty_test"); -!!$ is_dense = H5O_is_attr_dense_test(my_dataset); -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); ! /* Check for deleting non-existant attribute */ !EP CALL H5Adelete_by_idx_f(my_dataset, '.', idx_type, order, 0_HSIZE_T,error, lapl_id=H5P_DEFAULT_F) @@ -1887,18 +1562,6 @@ SUBROUTINE test_attr_delete_by_idx(new_format, fcpl, fapl, total_error) ENDDO - - - ! /* Verify state of object */ - -!!$ ret = H5O_num_attrs_test(my_dataset, &nattrs); -!!$ CHECK(ret, FAIL, "H5O_num_attrs_test"); -!!$ VERIFY(nattrs, max_compact, "H5O_num_attrs_test"); -!!$ is_empty = H5O_is_attr_empty_test(my_dataset); -!!$ VERIFY(is_empty, FALSE, "H5O_is_attr_empty_test"); -!!$ is_dense = H5O_is_attr_dense_test(my_dataset); -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); - !/* Check for out of bound deletions */ CALL H5Adelete_by_idx_f(my_dataset, ".", idx_type, order, INT(u,HSIZE_T), error, lapl_id=H5P_DEFAULT_F) CALL VERIFY("H5Adelete_by_idx_f",error,minusone,total_error) @@ -1946,7 +1609,6 @@ SUBROUTINE test_attr_delete_by_idx(new_format, fcpl, fapl, total_error) ENDIF ! /* Verify the name for first attribute in appropriate order */ - ! HDmemset(tmpname, 0, (size_t)NAME_BUF_SIZE); size = 7 ! *CHECK* IF NOT THE SAME SIZE CALL h5aget_name_by_idx_f(my_dataset, ".", idx_type, order,INT(0,hsize_t), & @@ -1969,10 +1631,6 @@ SUBROUTINE test_attr_delete_by_idx(new_format, fcpl, fapl, total_error) CALL H5Adelete_by_idx_f(my_dataset, ".", idx_type, order, hzero, error) CALL check("H5Adelete_by_idx_f",error,total_error) - - ! /* Verify state of attribute storage (empty) */ -!!$ is_empty = H5O_is_attr_empty_test(my_dataset); -!!$ VERIFY(is_empty, TRUE, "H5O_is_attr_empty_test"); ENDDO ! /* Work on all the datasets */ @@ -2011,34 +1669,8 @@ SUBROUTINE test_attr_delete_by_idx(new_format, fcpl, fapl, total_error) CALL h5aclose_f(attr, error) CALL check("h5aclose_f",error,total_error) - ! /* Verify state of object */ - IF(u .GE. max_compact)THEN -!!$ is_dense = H5O_is_attr_dense_test(my_dataset); -!!$ VERIFY(is_dense, (new_format ? TRUE : FALSE), "H5O_is_attr_dense_test"); - ENDIF - ! /* Verify information for new attribute */ -!!$ CALL check("attr_info_by_idx_check",error,total_error) ENDDO - - ! /* Verify state of object */ -!!$ ret = H5O_num_attrs_test(my_dataset, &nattrs); -!!$ CHECK(ret, FAIL, "H5O_num_attrs_test"); -!!$ VERIFY(nattrs, (max_compact * 2), "H5O_num_attrs_test"); -!!$ is_empty = H5O_is_attr_empty_test(my_dataset); -!!$ VERIFY(is_empty, FALSE, "H5O_is_attr_empty_test"); -!!$ is_dense = H5O_is_attr_dense_test(my_dataset); -!!$ VERIFY(is_dense, (new_format ? TRUE : FALSE), "H5O_is_attr_dense_test"); -!!$ - IF(new_format)THEN -!!$ ! /* Retrieve & verify # of records in the name & creation order indices */ -!!$ ret = H5O_attr_dense_info_test(my_dataset, &name_count, &corder_count); -!!$ CHECK(ret, FAIL, "H5O_attr_dense_info_test"); -!!$ IF(use_index) -!!$ VERIFY(name_count, corder_count, "H5O_attr_dense_info_test"); -!!$ VERIFY(name_count, (max_compact * 2), "H5O_attr_dense_info_test"); - ENDIF - ! /* Check for out of bound deletion */ CALL H5Adelete_by_idx_f(my_dataset, ".", idx_type, order, INT(u,HSIZE_T), error) CALL VERIFY("H5Adelete_by_idx_f",error,minusone,total_error) @@ -2054,8 +1686,6 @@ SUBROUTINE test_attr_delete_by_idx(new_format, fcpl, fapl, total_error) my_dataset = dset2 CASE (2) my_dataset = dset3 - ! CASE DEFAULT - ! CALL HDassert(0.AND."Toomanydatasets!") END SELECT ! /* Delete attributes from dense storage */ @@ -2101,9 +1731,6 @@ SUBROUTINE test_attr_delete_by_idx(new_format, fcpl, fapl, total_error) CALL H5Adelete_by_idx_f(my_dataset, ".", idx_type, order, INT(0,HSIZE_T), error, lapl_id=H5P_DEFAULT_F) CALL check("H5Adelete_by_idx_f",error,total_error) - ! /* Verify state of attribute storage (empty) */ -!!$ is_empty = H5O_is_attr_empty_test(my_dataset); -!!$ VERIFY(is_empty, TRUE, "H5O_is_attr_empty_test"); !/* Check for deletion on empty attribute storage again */ CALL H5Adelete_by_idx_f(my_dataset, ".", idx_type, order, INT(0,HSIZE_T), error) @@ -2194,7 +1821,6 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) INTEGER :: arank = 1 ! Attribure rank ! /* Output message about test being performed */ -! WRITE(*,*) " - Testing Deleting Shared & Unshared Attributes in Compact & Dense Storage" ! /* Initialize "big" attribute DATA */ ! /* Create dataspace for dataset */ @@ -2225,11 +1851,9 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) ! /* Make attributes > 500 bytes shared */ CALL H5Pset_shared_mesg_nindexes_f(my_fcpl,1,error) CALL check("H5Pset_shared_mesg_nindexes_f",error, total_error) -!!$ CHECK_I(ret, "H5Pset_shared_mesg_nindexes"); CALL H5Pset_shared_mesg_index_f(my_fcpl, 0, H5O_SHMESG_ATTR_FLAG_F, 500,error) CALL check(" H5Pset_shared_mesg_index_f",error, total_error) -!!$ CHECK_I(ret, "H5Pset_shared_mesg_index"); ELSE ! /* Set up copy of file creation property list */ CALL H5Pset_shared_mesg_nindexes_f(my_fcpl,3,error) @@ -2238,7 +1862,6 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) ! /* Make datatypes & dataspaces > 1 byte shared (i.e. all of them :-) */ CALL H5Pset_shared_mesg_index_f(my_fcpl, 1, H5O_SHMESG_DTYPE_FLAG_F, 1,error) CALL H5Pset_shared_mesg_index_f(my_fcpl, 2, H5O_SHMESG_SDSPACE_FLAG_F, 1,error) -!!$ CHECK_I(ret, "H5Pset_shared_mesg_index"); ENDIF ! /* Create file */ @@ -2275,19 +1898,6 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) CALL h5dcreate_f(fid, DSET2_NAME, H5T_NATIVE_CHARACTER, sid, dataset2, error, dcpl_id=dcpl ) CALL check("h5dcreate_f",error,total_error) - ! /* Check on dataset's message storage status */ -!!$ if(test_shared != 0) { -!!$ /* Datasets' datatypes can be shared */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_DTYPE_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 1, "H5F_get_sohm_mesg_count_test"); -!!$ -!!$ /* Datasets' dataspace can be shared */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_SDSPACE_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 1, "H5F_get_sohm_mesg_count_test"); -!!$ } /* end if */ -!!$ ! /* Retrieve limits for compact/dense attribute storage */ CALL H5Pget_attr_phase_change_f(dcpl, max_compact, min_dense, error) CALL check("H5Pget_attr_phase_change_f",error,total_error) @@ -2295,13 +1905,7 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) ! /* Close property list */ CALL h5pclose_f(dcpl,error) CALL check("h5pclose_f", error, total_error) -!!$ -!!$ /* Check on datasets' attribute storage status */ -!!$ is_dense = H5O_is_attr_dense_test(dataset); -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); -!!$ is_dense = H5O_is_attr_dense_test(dataset2); -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); -!!$ + ! /* Add attributes to each dataset, until after converting to dense storage */ DO u = 0, (max_compact * 2) - 1 @@ -2318,10 +1922,6 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) CALL h5acreate_f(dataset, attrname, attr_tid, sid, attr, error, H5P_DEFAULT_F, H5P_DEFAULT_F) CALL check("h5acreate_f",error,total_error) -!!$ /* Check that attribute is not shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, FALSE, "H5A_is_shared_test"); - ! /* Write data into the attribute */ attr_integer_data(1) = u + 1 data_dims(1) = 1 @@ -2332,16 +1932,7 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) CALL h5acreate_f(dataset, attrname, attr_tid, big_sid, attr, error) CALL check("h5acreate_f",error,total_error) -!!$ - ! Check that attribute is shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, TRUE, "H5A_is_shared_test"); - - ! Check refcount for attribute */ -!!$ ret = H5A_get_shared_rc_test(attr, &shared_refcount); -!!$ CHECK(ret, FAIL, "H5A_get_shared_rc_test"); -!!$ VERIFY(shared_refcount, 1, "H5A_get_shared_rc_test"); -!!$ + ! Write data into the attribute */ attr_integer_data(1) = u + 1 @@ -2349,24 +1940,12 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) CALL h5awrite_f(attr, attr_tid, attr_integer_data, data_dims, error) CALL check("h5awrite_f",error,total_error) - ! Check refcount for attribute */ -!!$ ret = H5A_get_shared_rc_test(attr, &shared_refcount); -!!$ CHECK(ret, FAIL, "H5A_get_shared_rc_test"); -!!$ VERIFY(shared_refcount, 1, "H5A_get_shared_rc_test"); ENDIF ! /* Close attribute */ CALL h5aclose_f(attr, error) CALL check("h5aclose_f",error,total_error) - ! /* Check on dataset's attribute storage status */ -!!$ is_dense = H5O_is_attr_dense_test(dataset); -!!$ if(u < max_compact) -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); -!!$ else -!!$ VERIFY(is_dense, TRUE, "H5O_is_attr_dense_test"); -!!$ -!!$ ! /* Alternate between creating "small" & "big" attributes */ IF(MOD(u+1,2).EQ.0)THEN @@ -2375,10 +1954,6 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) CALL h5acreate_f(dataset2, attrname, attr_tid, sid, attr, error) CALL check("h5acreate_f",error,total_error) - ! /* Check that attribute is not shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, FALSE, "H5A_is_shared_test"); -!!$ ! /* Write data into the attribute */ attr_integer_data(1) = u + 1 data_dims(1) = 1 @@ -2391,15 +1966,6 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) CALL h5acreate_f(dataset2, attrname, attr_tid, big_sid, attr, error, acpl_id=H5P_DEFAULT_F, aapl_id=H5P_DEFAULT_F) CALL check("h5acreate_f",error,total_error) -! /* Check that attribute is shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, TRUE, "H5A_is_shared_test"); -!!$ -! /* Check refcount for attribute */ -!!$ ret = H5A_get_shared_rc_test(attr, &shared_refcount); -!!$ CHECK(ret, FAIL, "H5A_get_shared_rc_test"); -!!$ VERIFY(shared_refcount, 1, "H5A_get_shared_rc_test"); -!!$ ! /* Write data into the attribute */ @@ -2408,23 +1974,11 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) CALL h5awrite_f(attr, attr_tid, attr_integer_data, data_dims, error) CALL check("h5awrite_f",error,total_error) - -! /* Check refcount for attribute */ -!!$ ret = H5A_get_shared_rc_test(attr, &shared_refcount); -!!$ CHECK(ret, FAIL, "H5A_get_shared_rc_test"); -!!$ VERIFY(shared_refcount, 2, "H5A_get_shared_rc_test"); - ENDIF ! /* Close attribute */ CALL h5aclose_f(attr, error) CALL check("h5aclose_f",error,total_error) - ! /* Check on dataset's attribute storage status */ -!!$ is_dense = H5O_is_attr_dense_test(dataset2); -!!$ if(u < max_compact) -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); -!!$ else -!!$ VERIFY(is_dense, TRUE, "H5O_is_attr_dense_test"); ENDDO ! /* Delete attributes from second dataset */ @@ -2439,29 +1993,9 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) CALL H5Adelete_by_name_f(fid, DSET2_NAME, attrname,error,lapl_id=H5P_DEFAULT_F) CALL check("H5Adelete_by_name", error, total_error) -!!$ /* Check refcount on attributes now */ -!!$ -!!$ /* Check refcount on first dataset's attribute */ - CALL h5aopen_f(dataset, attrname, attr, error, aapl_id=H5P_DEFAULT_F) CALL check("h5aopen_f",error,total_error) -!!$ -!!$ if(u % 2) { -! /* Check that attribute is not shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, FALSE, "H5A_is_shared_test"); -!!$ } /* end if */ -!!$ else { -!/* Check that attribute is shared */ -!!$ is_shared = H5A_is_shared_test(attr); -!!$ VERIFY(is_shared, TRUE, "H5A_is_shared_test"); -!!$ -!/* Check refcount for attribute */ -!!$ ret = H5A_get_shared_rc_test(attr, &shared_refcount); -!!$ CHECK(ret, FAIL, "H5A_get_shared_rc_test"); -!!$ VERIFY(shared_refcount, 1, "H5A_get_shared_rc_test"); -!!$ } /* end else */ ! /* Close attribute */ CALL h5aclose_f(attr, error) @@ -2480,21 +2014,6 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) CALL h5dclose_f(dataset2, error) CALL check("h5dclose_f",error,total_error) - ! /* Check on shared message status now */ -!!$ if(test_shared != 0) { -!!$ if(test_shared == 1) { - ! /* Check on datatype storage status */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_DTYPE_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 2, "H5F_get_sohm_mesg_count_test"); -!!$ } /* end if */ -!!$ -!!$ /* Check on dataspace storage status */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_SDSPACE_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 2, "H5F_get_sohm_mesg_count_test"); -!!$ } /* end if */ -!!$ ! /* Unlink datasets WITH attributes */ CALL h5ldelete_f(fid, DSET1_NAME, error, H5P_DEFAULT_F) @@ -2509,31 +2028,11 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error) CALL check("H5Ldelete_f", error, total_error) ENDIF - ! /* Check on attribute storage status */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_ATTR_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 0, "H5F_get_sohm_mesg_count_test"); -!!$ -!!$ if(test_shared != 0) { -!!$ /* Check on datatype storage status */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_DTYPE_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 0, "H5F_get_sohm_mesg_count_test"); -!!$ -!!$ /* Check on dataspace storage status */ -!!$ ret = H5F_get_sohm_mesg_count_test(fid, H5O_SDSPACE_ID, &mesg_count); -!!$ CHECK(ret, FAIL, "H5F_get_sohm_mesg_count_test"); -!!$ VERIFY(mesg_count, 0, "H5F_get_sohm_mesg_count_test"); -!!$ } /* end if */ -!!$ ! /* Close file */ CALL h5fclose_f(fid, error) CALL check("h5fclose_f",error,total_error) -!!$ -!!$ /* Check size of file */ -!!$ filesize = h5_get_file_size(FILENAME); -!!$ VERIFY(filesize, empty_filesize, "h5_get_file_size"); + ENDDO ! /* Close dataspaces */ @@ -2587,8 +2086,6 @@ SUBROUTINE test_attr_dense_open( fcpl, fapl, total_error) data_dims = 0 - ! /* Output message about test being performed */ -! WRITE(*,*) " - Testing Opening Attributes in Dense Storage" ! /* Create file */ @@ -2631,10 +2128,6 @@ SUBROUTINE test_attr_dense_open( fcpl, fapl, total_error) CALL h5pclose_f(dcpl, error) CALL check("h5pclose_f",error,total_error) - ! /* Check on dataset's attribute storage status */ - ! is_dense = H5O_is_attr_dense_test(dataset); - ! VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); - ! /* Add attributes, until just before converting to dense storage */ DO u = 0, max_compact - 1 @@ -2657,13 +2150,8 @@ SUBROUTINE test_attr_dense_open( fcpl, fapl, total_error) ! /* Verify attributes written so far */ CALL test_attr_dense_verify(dataset, u, total_error) - ! CHECK(ret, FAIL, "test_attr_dense_verify"); ENDDO - - ! /* Check on dataset's attribute storage status */ -!!$ is_dense = H5O_is_attr_dense_test(dataset); -!!$ VERIFY(is_dense, FALSE, "H5O_is_attr_dense_test"); - +! ! /* Add one more attribute, to push into "dense" storage */ ! /* Create attribute */ @@ -2673,11 +2161,6 @@ SUBROUTINE test_attr_dense_open( fcpl, fapl, total_error) CALL h5acreate_f(dataset, attrname, H5T_NATIVE_INTEGER, sid, attr, error, aapl_id=H5P_DEFAULT_F) CALL check("h5acreate_f",error,total_error) - ! /* Check on dataset's attribute storage status */ -!!$ is_dense = H5O_is_attr_dense_test(dataset); -!!$ VERIFY(is_dense, TRUE, "H5O_is_attr_dense_test"); - - ! /* Write data into the attribute */ data_dims(1) = 1 CALL h5awrite_f(attr, H5T_NATIVE_INTEGER, u, data_dims, error) @@ -2990,8 +2473,6 @@ SUBROUTINE test_attr_basic_write(fapl, total_error) attr_data1a(2) = 1087 attr_data1a(3) = -99890 - ! /* Output message about test being performed */ -! WRITE(*,*) " - Testing Basic Scalar Attribute Writing Functions" ! /* Create file */ CALL h5fcreate_f(FileName, H5F_ACC_TRUNC_F, fid1, error, H5P_DEFAULT_F, fapl) @@ -3056,8 +2537,6 @@ SUBROUTINE test_attr_basic_write(fapl, total_error) CALL check("h5aget_storage_size_f",error,total_error) !EP CALL VERIFY("h5aget_storage_size_f", INT(attr_size), 2*HSIZE_T, total_error) -! attr_size = H5Aget_storage_size(attr); -! VERIFY(attr_size, (ATTR1_DIM1 * sizeof(int)), "H5A_get_storage_size"); ! /* Read attribute information immediately, without closing attribute */ CALL h5aread_f(attr, H5T_NATIVE_INTEGER, read_data1, dimsa, error) @@ -3156,9 +2635,6 @@ SUBROUTINE test_attr_many(new_format, fcpl, fapl, total_error) INTEGER(HID_T) :: sid INTEGER(HID_T) :: gid INTEGER(HID_T) :: aid - - - INTEGER :: error INTEGER(HSIZE_T), DIMENSION(7) :: data_dims @@ -3175,8 +2651,6 @@ SUBROUTINE test_attr_many(new_format, fcpl, fapl, total_error) data_dims = 0 - ! /* Output message about test being performed */ -! WRITE(*,*) " - Testing Storing Many Attributes" !/* Create file */ CALL h5fcreate_f(FileName, H5F_ACC_TRUNC_F, fid, error, fcpl, fapl) diff --git a/fortran/test/tH5D.f90 b/fortran/test/tH5D.f90 index 56e82f4..682e242 100644 --- a/fortran/test/tH5D.f90 +++ b/fortran/test/tH5D.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/tH5D.f90 +! +! NAME +! tH5D.f90 +! +! FUNCTION +! Basic testing of Fortran H5D APIs. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,14 +22,17 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! NOTES +! Tests the H5D APIs functionalities of: +! h5dcreate_f, h5dopen_f, h5dclose_f, h5dget_space_f, h5dget_type_f, +! h5dread_f, and h5dwrite_f ! ! -! Testing Dataset Interface functionality. +! CONTAINS SUBROUTINES +! datasettest, extenddsettest ! -! -! The following subroutine tests the following functionalities: -! h5dcreate_f, h5dopen_f, h5dclose_f, h5dget_space_f, h5dget_type_f, -! h5dread_f, and h5dwrite_f +!***** + ! SUBROUTINE datasettest(cleanup, total_error) USE HDF5 ! This module contains all necessary modules diff --git a/fortran/test/tH5E.f90 b/fortran/test/tH5E.f90 index a4912bd..4d431a1 100644 --- a/fortran/test/tH5E.f90 +++ b/fortran/test/tH5E.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/tH5E.f90 +! +! NAME +! tH5E.f90 +! +! FUNCTION +! Basic testing of Fortran H5E APIs. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,6 +22,15 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! NOTES +! Tests the H5D APIs functionalities of: +! h5eprint_f +! +! CONTAINS SUBROUTINES +! error_report_test +! +!***** +! SUBROUTINE error_report_test(cleanup, total_error) ! This subroutine tests following functionalities: h5eprint_f diff --git a/fortran/test/tH5E_F03.f90 b/fortran/test/tH5E_F03.f90 new file mode 100644 index 0000000..75a534e --- /dev/null +++ b/fortran/test/tH5E_F03.f90 @@ -0,0 +1,210 @@ +!****h* root/fortran/test/tH5E_F03.f90 +! +! NAME +! tH5E_F03.f90 +! +! FUNCTION +! Test FORTRAN HDF5 H5E APIs which are dependent on FORTRAN 2003 +! features. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! USES +! liter_cb_mod +! +! CONTAINS SUBROUTINES +! test_error +! +!***** + +! ***************************************** +! *** H 5 E T E S T S +! ***************************************** + +MODULE test_my_hdf5_error_handler + + IMPLICIT NONE + +CONTAINS + +!/**************************************************************** +!** +!** my_hdf5_error_handler: Custom error callback routine. +!** +!****************************************************************/ + + INTEGER FUNCTION my_hdf5_error_handler(estack_id, data_inout) bind(C) + + ! This error function handle works with only version 2 error stack + + USE HDF5 + USE ISO_C_BINDING + IMPLICIT NONE + + ! estack_id is always passed from C as: H5E_DEFAULT + INTEGER(HID_T) :: estack_id + ! data that was registered with H5Eset_auto_f +! INTEGER, DIMENSION(1:2) :: data_inout + INTEGER :: data_inout + + PRINT*, " " + PRINT*, " Subtest: H5Eset_auto_f custom error message with callback, WITH DATA" + PRINT*, " -This message should be written to standard out- " + PRINT*, " Data Values Passed In =", data_inout + PRINT*, " " + + data_inout = 10*data_inout + + my_hdf5_error_handler = 1 ! this is not used by the C routine + + END FUNCTION my_hdf5_error_handler + + INTEGER FUNCTION my_hdf5_error_handler_nodata(estack_id, data_inout) bind(C) + + ! This error function handle works with only version 2 error stack + + USE HDF5 + USE ISO_C_BINDING + IMPLICIT NONE + + ! estack_id is always passed from C as: H5E_DEFAULT + INTEGER(HID_T) :: estack_id + ! data that was registered with H5Eset_auto_f + TYPE(C_PTR) :: data_inout + + PRINT*, " " + PRINT*, " Subtest: H5Eset_auto_f custom error message with callback, NO DATA" + PRINT*, " -This message should be written to standard out- " + PRINT*, " " + + my_hdf5_error_handler_nodata = 1 ! this is not used by the C routine + + END FUNCTION my_hdf5_error_handler_nodata + +END MODULE test_my_hdf5_error_handler + +SUBROUTINE test_error(total_error) + + USE HDF5 + USE ISO_C_BINDING + USE test_my_hdf5_error_handler + + IMPLICIT NONE + + INTEGER(hid_t), PARAMETER :: FAKE_ID = -1 + INTEGER :: total_error + INTEGER(hid_t) :: file + INTEGER(hid_t) :: dataset, space + INTEGER(hid_t) :: estack_id + INTEGER(hsize_t), DIMENSION(1:2) :: dims + CHARACTER(LEN=10) :: FUNC_test_error = "test_error" + TYPE(C_FUNPTR) :: old_func + TYPE(C_PTR) :: old_data, null_data + INTEGER :: error + TYPE(C_FUNPTR) :: op + INTEGER, DIMENSION(1:100,1:200), TARGET :: ipoints2 + !! INTEGER, DIMENSION(1:2), TARGET :: my_hdf5_error_handler_data + INTEGER, DIMENSION(:), POINTER :: ptr_data + INTEGER, TARGET :: my_hdf5_error_handler_data + TYPE(C_PTR) :: f_ptr + TYPE(C_FUNPTR) :: func + + TYPE(C_PTR), TARGET :: f_ptr1 + TYPE(C_FUNPTR), TARGET :: func1 + + INTEGER, DIMENSION(1:1) :: array_shape + LOGICAL :: is_associated + + ! my_hdf5_error_handler_data(1:2) =(/1,2/) + my_hdf5_error_handler_data = 99 + CALL h5fcreate_f("terror.h5", H5F_ACC_TRUNC_F, file, error) + CALL check("h5fcreate_f", error, total_error) + + ! Create the data space + dims(1) = 10 + dims(2) = 20 + CALL H5Screate_simple_f(2, dims, space, error) + CALL check("h5screate_simple_f", error, total_error) + + ! ** SET THE CUSTOMIZED PRINTING OF ERROR STACK ** + + ! set the customized error handling routine + func = c_funloc(my_hdf5_error_handler) + + ! set the data sent to the customized routine + f_ptr = c_loc(my_hdf5_error_handler_data) + + ! turn on automatic printing, and use a custom error routine with input data + CALL H5Eset_auto_f(1, error, H5E_DEFAULT_F, func, f_ptr) + + ! Create the erring dataset + CALL h5dcreate_f(FAKE_ID,"a_dataset",H5T_NATIVE_INTEGER, space, dataset, error) + CALL VERIFY("h5dcreate_f", error, -1, total_error) + +!!$ CALL VERIFY("H5Eset_auto_f",my_hdf5_error_handler_data(1),10, total_error) +!!$ CALL VERIFY("H5Eset_auto_f",my_hdf5_error_handler_data(2),20, total_error) + + ! Test enabling and disabling default printing + + CALL H5Eget_auto_f(H5E_DEFAULT_F, func1, f_ptr1, error) + CALL VERIFY("H5Eget_auto_f", error, 0, total_error) + + ! PRINT*,c_associated(f_ptr1) + + ALLOCATE(ptr_data(1:2)) + ptr_data = 0 + array_shape(1) = 2 + CALL C_F_POINTER(f_ptr1, ptr_data, array_shape) + + ! ptr_data => f_ptr1(1) + + ! PRINT*,ptr_data(1) + +!!$ if(old_data != NULL) +!!$ TEST_ERROR; +!!$#ifdef H5_USE_16_API +!!$ if (old_func != (H5E_auto_t)H5Eprint) +!!$ TEST_ERROR; +!!$#else /* H5_USE_16_API */ +!!$ if (old_func != (H5E_auto2_t)H5Eprint2) +!!$ TEST_ERROR; +!!$#endif /* H5_USE_16_API */ + + + ! set the customized error handling routine + func = c_funloc(my_hdf5_error_handler_nodata) + ! set the data sent to the customized routine as null + f_ptr = C_NULL_PTR + ! turn on automatic printing, and use a custom error routine with no input data + CALL H5Eset_auto_f(1, error, H5E_DEFAULT_F, func, f_ptr) + + CALL h5dcreate_f(FAKE_ID,"a_dataset",H5T_NATIVE_INTEGER, space, dataset, error) + CALL VERIFY("h5dcreate_f", error, -1, total_error) + + + ! turn on automatic printing with h5eprint_f which prints an error stack in the default manner. + + ! func = c_funloc(h5eprint_f) + ! CALL H5Eset_auto_f(0, error, H5E_DEFAULT_F, func, C_NULL_PTR) + + CALL H5Eset_auto_f(0, error) + CALL h5dcreate_f(FAKE_ID,"a_dataset",H5T_NATIVE_INTEGER, space, dataset, error) + + CALL H5Eset_auto_f(1, error) + CALL h5dcreate_f(FAKE_ID,"a_dataset",H5T_NATIVE_INTEGER, space, dataset, error) + +END SUBROUTINE test_error diff --git a/fortran/test/tH5F.f90 b/fortran/test/tH5F.f90 index 4b88cb3..d8f683c 100644 --- a/fortran/test/tH5F.f90 +++ b/fortran/test/tH5F.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/tH5F.f90 +! +! NAME +! tH5F.f90 +! +! FUNCTION +! Basic testing of Fortran H5F APIs. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,15 +22,15 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! CONTAINS SUBROUTINES +! mountingtest, reopentest, plisttest, file_close, file_space ! +!***** ! -! Testing File Interface functionality. -! -! In the mountingtest subroutine we create one file with a group in it, -! and another file with a dataset. Mounting is used to -! access the dataset from the second file as a member of a group -! in the first file. -! +! In the mountingtest subroutine we create one file with a group in it, +! and another file with a dataset. Mounting is used to +! access the dataset from the second file as a member of a group +! in the first file. SUBROUTINE mountingtest(cleanup, total_error) USE HDF5 ! This module contains all necessary modules IMPLICIT NONE diff --git a/fortran/test/tH5G.f90 b/fortran/test/tH5G.f90 index 300e538..6befa94 100644 --- a/fortran/test/tH5G.f90 +++ b/fortran/test/tH5G.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/tH5G.f90 +! +! NAME +! tH5G.f90 +! +! FUNCTION +! Basic testing of Fortran H5G APIs. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,6 +22,11 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! CONTAINS SUBROUTINES +! group_test +! +!***** + SUBROUTINE group_test(cleanup, total_error) ! This subroutine tests following functionalities: @@ -236,6 +250,7 @@ CALL h5sclose_f(dspace_id, error) CALL check("h5sclose_f", error, total_error) + if(cleanup) CALL h5_cleanup_f(filename, H5P_DEFAULT_F, error) CALL check("h5_cleanup_f", error, total_error) END SUBROUTINE group_test diff --git a/fortran/test/tH5G_1_8.f90 b/fortran/test/tH5G_1_8.f90 index 6a2c623..fd55ba9 100644 --- a/fortran/test/tH5G_1_8.f90 +++ b/fortran/test/tH5G_1_8.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/tH5G_1_8.f90 +! +! NAME +! tH5G_1_8.f90 +! +! FUNCTION +! Basic testing of Fortran H5G APIs introduced in 1.8. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,6 +22,12 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! CONTAINS SUBROUTINES +! group_test, group_info, timestamps, mklinks, test_move_preserves, lifecycle +! cklinks, delete_by_idx, link_info_by_idx_check, test_lcpl, objcopy, +! lapl_nlinks +! +!***** SUBROUTINE group_test(cleanup, total_error) USE HDF5 ! This module contains all necessary modules @@ -1057,6 +1072,7 @@ SUBROUTINE lifecycle(cleanup, fapl2, total_error) CALL check("h5_cleanup_f", error, total_error) END SUBROUTINE lifecycle + !/*------------------------------------------------------------------------- ! * Function: cklinks ! * @@ -1070,7 +1086,7 @@ SUBROUTINE lifecycle(cleanup, fapl2, total_error) ! * Programmer: M.S. Breitenfeld ! * April 14, 2008 ! * -! * Modifications: Modified Original C code +! * Modifications: Modified original C code ! * ! *------------------------------------------------------------------------- ! */ @@ -1118,10 +1134,10 @@ SUBROUTINE lifecycle(cleanup, fapl2, total_error) CALL H5Lexists_f(file,"d1",Lexists, error) - CALL verifylogical("test_lcpl.H5Lexists", Lexists,.TRUE.,total_error) + CALL verifylogical("H5Lexists", Lexists,.TRUE.,total_error) CALL H5Lexists_f(file,"grp1/hard",Lexists, error) - CALL verifylogical("test_lcpl.H5Lexists", Lexists,.TRUE.,total_error) + CALL verifylogical("H5Lexists", Lexists,.TRUE.,total_error) ! /* Cleanup */ CALL H5Fclose_f(file,error) @@ -1490,7 +1506,6 @@ SUBROUTINE link_info_by_idx_check(group_id, linkname, n, & ! *------------------------------------------------------------------------- ! */ - SUBROUTINE test_lcpl(cleanup, fapl, total_error) USE HDF5 ! This module contains all necessary modules @@ -1542,13 +1557,13 @@ SUBROUTINE link_info_by_idx_check(group_id, linkname, n, & ! h5_fixname(FILENAME[0], fapl, filename, sizeof filename); CALL H5Fcreate_f(filename, H5F_ACC_TRUNC_F, file_id, error, H5P_DEFAULT_F, fapl) - CALL check("test_lcpl.H5Fcreate_f", error, total_error) + CALL check("H5Fcreate_f", error, total_error) ! /* Create and link a group with the default LCPL */ CALL H5Gcreate_f(file_id, "/group", group_id, error) - CALL check("test_lcpl.H5Gcreate_f", error, total_error) + CALL check("H5Gcreate_f", error, total_error) ! /* Check that its character encoding is the default */ @@ -1561,49 +1576,54 @@ SUBROUTINE link_info_by_idx_check(group_id, linkname, n, & ! * creation property list and is always ASCII. */ !#define H5F_DEFAULT_CSET H5T_CSET_ASCII -- FROM H5Fprivate.h -- - CALL VERIFY("test_lcpl.H5Lget_info_f",cset, H5T_CSET_ASCII_F,total_error) + CALL VERIFY("H5Lget_info_f",cset, H5T_CSET_ASCII_F,total_error) ! /* Create and commit a datatype with the default LCPL */ CALL h5tcopy_f(H5T_NATIVE_INTEGER, type_id, error) - CALL check("test_lcpl.h5tcopy_f",error,total_error) + CALL check("h5tcopy_f",error,total_error) CALL h5tcommit_f(file_id, "/type", type_id, error) - CALL check("test_lcpl.h5tcommit_f", error, total_error) + CALL check("h5tcommit_f", error, total_error) CALL h5tclose_f(type_id, error) - CALL check("test_lcpl.h5tclose_f", error, total_error) + CALL check("h5tclose_f", error, total_error) ! /* Check that its character encoding is the default */ CALL H5Lget_info_f(file_id, "type", & cset, corder, f_corder_valid, link_type, address, val_size, & error) - CALL check("test_lcpl.h5tclose_f", error, total_error) + CALL check("h5tclose_f", error, total_error) !/* File-wide default character encoding can not yet be set via the file ! * creation property list and is always ASCII. */ !#define H5F_DEFAULT_CSET H5T_CSET_ASCII -- FROM H5Fprivate.h -- - CALL verify("test_lcpl.H5Lget_info_f",cset, H5T_CSET_ASCII_F,total_error) + CALL verify("H5Lget_info_f",cset, H5T_CSET_ASCII_F,total_error) !/* Create a dataspace */ CALL h5screate_simple_f(2, dims, space_id, error) - CALL check("test_lcpl.h5screate_simple_f",error,total_error) + CALL check("h5screate_simple_f",error,total_error) + CALL h5pcreate_f(H5P_DATASET_CREATE_F, crp_list, error) + CALL h5pset_chunk_f(crp_list, 2, dims, error) + CALL h5pcreate_f(H5P_DATASET_CREATE_F, crp_list, error) + CALL h5pset_chunk_f(crp_list, 2, dims, error) CALL h5pcreate_f(H5P_DATASET_CREATE_F, crp_list, error) CALL h5pset_chunk_f(crp_list, 2, dims, error) ! /* Create a dataset using the default LCPL */ CALL h5dcreate_f(file_id, "/dataset", H5T_NATIVE_INTEGER, space_id, dset_id, error, crp_list) - CALL check("test_lcpl.h5dcreate_f", error, total_error) + CALL check("h5dcreate_f", error, total_error) + CALL h5dclose_f(dset_id, error) - CALL check("test_lcpl.h5dclose_f", error, total_error) + CALL check("h5dclose_f", error, total_error) ! Reopen CALL H5Dopen_f(file_id, "/dataset", dset_id, error) - CALL check("test_lcpl.h5dopen_f", error, total_error) + CALL check("h5dopen_f", error, total_error) ! /* Extend the dataset */ CALL H5Dset_extent_f(dset_id, extend_dim, error) - CALL check("test_lcpl.H5Dset_extent_f", error, total_error) + CALL check("H5Dset_extent_f", error, total_error) ! /* Verify the dataspaces */ ! !Get dataset's dataspace handle. @@ -1612,7 +1632,7 @@ SUBROUTINE link_info_by_idx_check(group_id, linkname, n, & CALL check("h5dget_space_f",error,total_error) CALL h5sget_simple_extent_dims_f(data_space, dimsout, maxdimsout, error) - CALL check("test_lcpl.h5sget_simple_extent_dims_f",error, total_error) + CALL check("h5sget_simple_extent_dims_f",error, total_error) DO i = 1, 2 tmp1 = dimsout(i) @@ -1628,170 +1648,170 @@ SUBROUTINE link_info_by_idx_check(group_id, linkname, n, & ! /* close data set */ CALL h5dclose_f(dset_id, error) - CALL check("test_lcpl.h5dclose_f", error, total_error) + CALL check("h5dclose_f", error, total_error) ! /* Check that its character encoding is the default */ CALL H5Lget_info_f(file_id, "dataset", & cset, corder, f_corder_valid, link_type, address, val_size, & error) - CALL check("test_lcpl.H5Lget_info_f", error, total_error) + CALL check("H5Lget_info_f", error, total_error) !/* File-wide default character encoding can not yet be set via the file ! * creation property list and is always ASCII. */ !#define H5F_DEFAULT_CSET H5T_CSET_ASCII -- FROM H5Fprivate.h -- - CALL verify("test_lcpl.h5tclose_f",cset, H5T_CSET_ASCII_F,total_error) + CALL verify("h5tclose_f",cset, H5T_CSET_ASCII_F,total_error) !/* Create a link creation property list with the UTF-8 character encoding */ CALL H5Pcreate_f(H5P_LINK_CREATE_F,lcpl_id,error) - CALL check("test_lcpl.h5Pcreate_f",error,total_error) + CALL check("h5Pcreate_f",error,total_error) CALL H5Pset_char_encoding_f(lcpl_id, H5T_CSET_UTF8_F, error) - CALL check("test_lcpl.H5Pset_char_encoding_f",error, total_error) + CALL check("H5Pset_char_encoding_f",error, total_error) ! /* Create and link a group with the new LCPL */ CALL H5Gcreate_f(file_id, "/group2", group_id, error,lcpl_id=lcpl_id) - CALL check("test_lcpl.test_lcpl.H5Gcreate_f", error, total_error) + CALL check("H5Gcreate_f", error, total_error) CALL H5Gclose_f(group_id, error) - CALL check("test_lcpl.test_lcpl.H5Gclose_f", error, total_error) + CALL check("H5Gclose_f", error, total_error) !/* Check that its character encoding is UTF-8 */ CALL H5Lget_info_f(file_id, "group2", & cset, corder, f_corder_valid, link_type, address, val_size, & error) - CALL check("test_lcpl.H5Lget_info_f", error, total_error) - CALL verify("test_lcpl.H5Lget_info_f",cset, H5T_CSET_UTF8_F,total_error) + CALL check("H5Lget_info_f", error, total_error) + CALL verify("H5Lget_info_f",cset, H5T_CSET_UTF8_F,total_error) ! /* Create and commit a datatype with the new LCPL */ CALL h5tcopy_f(H5T_NATIVE_INTEGER, type_id, error) - CALL check("test_lcpl.h5tcopy_f",error,total_error) + CALL check("h5tcopy_f",error,total_error) CALL h5tcommit_f(file_id, "/type2", type_id, error, lcpl_id=lcpl_id) - CALL check("test_lcpl.h5tcommit_f", error, total_error) + CALL check("h5tcommit_f", error, total_error) CALL h5tclose_f(type_id, error) - CALL check("test_lcpl.h5tclose_f", error, total_error) + CALL check("h5tclose_f", error, total_error) !/* Check that its character encoding is UTF-8 */ CALL H5Lget_info_f(file_id, "type2", & cset, corder, f_corder_valid, link_type, address, val_size, & error) - CALL check("test_lcpl.H5Lget_info_f", error, total_error) - CALL verify("test_lcpl.H5Lget_info_f",cset, H5T_CSET_UTF8_F,total_error) + CALL check("H5Lget_info_f", error, total_error) + CALL verify("H5Lget_info_f",cset, H5T_CSET_UTF8_F,total_error) ! /* Create a dataset using the new LCPL */ CALL h5dcreate_f(file_id, "/dataset2", H5T_NATIVE_INTEGER, space_id, dset_id, error,lcpl_id=lcpl_id) - CALL check("test_lcpl.h5dcreate_f", error, total_error) + CALL check("h5dcreate_f", error, total_error) CALL h5dclose_f(dset_id, error) - CALL check("test_lcpl.h5dclose_f", error, total_error) + CALL check("h5dclose_f", error, total_error) CALL H5Pget_char_encoding_f(lcpl_id, encoding, error) - CALL check("test_lcpl.H5Pget_char_encoding_f", error, total_error) - CALL VERIFY("test_lcpl.H5Pget_char_encoding_f", encoding, H5T_CSET_UTF8_F, total_error) + CALL check("H5Pget_char_encoding_f", error, total_error) + CALL VERIFY("H5Pget_char_encoding_f", encoding, H5T_CSET_UTF8_F, total_error) ! /* Check that its character encoding is UTF-8 */ CALL H5Lget_info_f(file_id, "dataset2", & cset, corder, f_corder_valid, link_type, address, val_size, & error) - CALL check("test_lcpl.H5Lget_info_f", error, total_error) - CALL verify("test_lcpl.H5Lget_info_f2",cset, H5T_CSET_UTF8_F,total_error) + CALL check("H5Lget_info_f", error, total_error) + CALL verify("H5Lget_info_f2",cset, H5T_CSET_UTF8_F,total_error) ! /* Create a new link to the dataset with a different character encoding. */ CALL H5Pclose_f(lcpl_id, error) - CALL check("test_lcpl.H5Pclose_f", error, total_error) + CALL check("H5Pclose_f", error, total_error) CALL H5Pcreate_f(H5P_LINK_CREATE_F,lcpl_id,error) - CALL check("test_lcpl.h5Pcreate_f",error,total_error) + CALL check("h5Pcreate_f",error,total_error) CALL H5Pset_char_encoding_f(lcpl_id, H5T_CSET_ASCII_F, error) - CALL check("test_lcpl.H5Pset_char_encoding_f",error, total_error) + CALL check("H5Pset_char_encoding_f",error, total_error) CALL H5Lcreate_hard_f(file_id, "/dataset2", file_id, "/dataset2_link", error, lcpl_id) - CALL check("test_lcpl.H5Lcreate_hard_f",error, total_error) + CALL check("H5Lcreate_hard_f",error, total_error) CALL H5Lexists_f(file_id,"/dataset2_link",Lexists, error) - CALL check("test_lcpl.H5Lexists",error, total_error) - CALL verifylogical("test_lcpl.H5Lexists", Lexists,.TRUE.,total_error) + CALL check("H5Lexists",error, total_error) + CALL verifylogical("H5Lexists", Lexists,.TRUE.,total_error) ! /* Check that its character encoding is ASCII */ CALL H5Lget_info_f(file_id, "/dataset2_link", & cset, corder, f_corder_valid, link_type, address, val_size, & error) - CALL check("test_lcpl.H5Lget_info_f", error, total_error) - CALL verify("test_lcpl.H5Lget_info_f",cset, H5T_CSET_ASCII_F,total_error) + CALL check("H5Lget_info_f", error, total_error) + CALL verify("H5Lget_info_f",cset, H5T_CSET_ASCII_F,total_error) ! /* Check that the first link's encoding hasn't changed */ CALL H5Lget_info_f(file_id, "/dataset2", & cset, corder, f_corder_valid, link_type, address, val_size, & error) - CALL check("test_lcpl.H5Lget_info_f", error, total_error) - CALL verify("test_lcpl.H5Lget_info_f3",cset, H5T_CSET_UTF8_F,total_error) + CALL check("H5Lget_info_f", error, total_error) + CALL verify("H5Lget_info_f3",cset, H5T_CSET_UTF8_F,total_error) !/* Make sure that LCPLs work properly for other API calls: */ !/* H5Lcreate_soft */ CALL H5Pset_char_encoding_f(lcpl_id, H5T_CSET_UTF8_F, error) - CALL check("test_lcpl.H5Pset_char_encoding_f",error, total_error) + CALL check("H5Pset_char_encoding_f",error, total_error) CALL H5Lcreate_soft_f("dataset2", file_id, "slink_to_dset2",error,lcpl_id) CALL check("H5Lcreate_soft_f", error, total_error) CALL H5Lget_info_f(file_id, "slink_to_dset2", & cset, corder, f_corder_valid, link_type, address, val_size, & error) - CALL check("test_lcpl.H5Lget_info_f", error, total_error) - CALL verify("test_lcpl.H5Lget_info_f",cset, H5T_CSET_UTF8_F,total_error) + CALL check("H5Lget_info_f", error, total_error) + CALL verify("H5Lget_info_f",cset, H5T_CSET_UTF8_F,total_error) ! /* H5Lmove */ CALL H5Pset_char_encoding_f(lcpl_id, H5T_CSET_ASCII_F, error) - CALL check("test_lcpl.H5Pset_char_encoding_f",error, total_error) + CALL check("H5Pset_char_encoding_f",error, total_error) CALL H5Lmove_f(file_id, "slink_to_dset2", file_id, "moved_slink", error, lcpl_id, H5P_DEFAULT_F) - CALL check("test_lcpl.H5Lmove_f",error, total_error) + CALL check("H5Lmove_f",error, total_error) CALL H5Lget_info_f(file_id, "moved_slink", & cset, corder, f_corder_valid, link_type, address, val_size, & error) - CALL check("test_lcpl.H5Lget_info_f", error, total_error) - CALL verify("test_lcpl.H5Lget_info_f",cset, H5T_CSET_ASCII_F,total_error) + CALL check("H5Lget_info_f", error, total_error) + CALL verify("H5Lget_info_f",cset, H5T_CSET_ASCII_F,total_error) ! /* H5Lcopy */ CALL H5Pset_char_encoding_f(lcpl_id, H5T_CSET_UTF8_F, error) - CALL check("test_lcpl.H5Pset_char_encoding_f",error, total_error) + CALL check("H5Pset_char_encoding_f",error, total_error) CALL H5Lcopy_f(file_id, "moved_slink", file_id, "copied_slink", error, lcpl_id) CALL H5Lget_info_f(file_id, "copied_slink", & cset, corder, f_corder_valid, link_type, address, val_size, & error) - CALL check("test_lcpl.H5Lget_info_f", error, total_error) - CALL verify("test_lcpl.H5Lget_info_f",cset, H5T_CSET_UTF8_F,total_error) + CALL check("H5Lget_info_f", error, total_error) + CALL verify("H5Lget_info_f",cset, H5T_CSET_UTF8_F,total_error) ! /* H5Lcreate_external */ - CALL H5Lcreate_external_f("test_lcpl.filename", "path", file_id, "extlink", error, lcpl_id) - CALL check("test_lcpl.H5Lcreate_external_f", error, total_error) + CALL H5Lcreate_external_f("filename", "path", file_id, "extlink", error, lcpl_id) + CALL check("H5Lcreate_external_f", error, total_error) CALL H5Lget_info_f(file_id, "extlink", & cset, corder, f_corder_valid, link_type, address, val_size, & error) - CALL check("test_lcpl.H5Lget_info_f", error, total_error) - CALL verify("test_lcpl.H5Lget_info_f",cset, H5T_CSET_UTF8_F,total_error) + CALL check("H5Lget_info_f", error, total_error) + CALL verify("H5Lget_info_f",cset, H5T_CSET_UTF8_F,total_error) ! /* Close open IDs */ CALL H5Pclose_f(lcpl_id, error) - CALL check("test_lcpl.H5Pclose_f", error, total_error) + CALL check("H5Pclose_f", error, total_error) CALL H5Sclose_f(space_id, error) - CALL check("test_lcpl.h5Sclose_f",error,total_error) + CALL check("h5Sclose_f",error,total_error) CALL H5Fclose_f(file_id, error) - CALL check("test_lcpl.H5Fclose_f", error, total_error) + CALL check("H5Fclose_f", error, total_error) IF(cleanup) CALL h5_cleanup_f("tempfile", H5P_DEFAULT_F, error) CALL check("h5_cleanup_f", error, total_error) diff --git a/fortran/test/tH5I.f90 b/fortran/test/tH5I.f90 index 0d1a8c5..184edaf 100644 --- a/fortran/test/tH5I.f90 +++ b/fortran/test/tH5I.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/tH5I.f90 +! +! NAME +! tH5I.f90 +! +! FUNCTION +! Basic testing of Fortran H5I APIs. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,6 +22,11 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! CONTAINS SUBROUTINES +! identifier_test +! +!***** + SUBROUTINE identifier_test(cleanup, total_error) ! This subroutine tests following functionalities: h5iget_type_f @@ -69,21 +83,21 @@ ! check that the ID is not valid dtype = -1 CALL H5Iis_valid_f(dtype, tri_ret, error) - CALL check("H5Iis_valid_f", error, total_error) + CALL check("H5Iis_valid_f", error, total_error) CALL VerifyLogical("H5Iis_valid_f", tri_ret, .FALSE., total_error) - + ! Create a datatype id CALL H5Tcopy_f(H5T_NATIVE_INTEGER,dtype,error) - CALL check("H5Tcopy_f", error, total_error) - + CALL check("H5Tcopy_f", error, total_error) + ! Check that the ID is valid CALL H5Iis_valid_f(dtype, tri_ret, error) - CALL check("H5Iis_valid_f", error, total_error) + CALL check("H5Iis_valid_f", error, total_error) CALL VerifyLogical("H5Tequal_f", tri_ret, .TRUE., total_error) - + CALL H5Tclose_f(dtype, error) - CALL check("H5Tclose_f", error, total_error) - + CALL check("H5Tclose_f", error, total_error) + ! ! Create a new file using default properties. ! diff --git a/fortran/test/tH5L_F03.f90 b/fortran/test/tH5L_F03.f90 new file mode 100644 index 0000000..616734d --- /dev/null +++ b/fortran/test/tH5L_F03.f90 @@ -0,0 +1,334 @@ +!****h* root/fortran/test/tH5L_F03.f90 +! +! NAME +! tH5L_F03.f90 +! +! FUNCTION +! Test FORTRAN HDF5 H5L APIs which are dependent on FORTRAN 2003 +! features. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! USES +! liter_cb_mod +! +! CONTAINS SUBROUTINES +! test_iter_group +! +!***** + +MODULE liter_cb_mod + + USE HDF5 + USE ISO_C_BINDING + IMPLICIT NONE + + TYPE iter_enum + INTEGER RET_ZERO + INTEGER RET_TWO + INTEGER RET_CHANGE + INTEGER RET_CHANGE2 + END TYPE iter_enum + + ! Custom group iteration callback data + TYPE, bind(c) :: iter_info + CHARACTER(LEN=1), DIMENSION(1:10) :: name ! The name of the object + INTEGER(c_int) :: TYPE ! The TYPE of the object + INTEGER(c_int) :: command ! The TYPE of RETURN value + END TYPE iter_info + + TYPE, bind(c) :: union_t + INTEGER(haddr_t) :: address + INTEGER(size_t) :: val_size + END TYPE union_t + + TYPE, bind(c) :: H5L_info_t + INTEGER(c_int) :: TYPE ! H5L_type_t type +! LOGICAL(c_bool) :: corder_valid ! hbool_t corder_valid + INTEGER(c_int64_t) :: corder ! int64_t corder; + INTEGER(c_int) :: cset ! H5T_cset_t cset; + TYPE(union_t) :: u + END TYPE H5L_info_t + +CONTAINS + +!*************************************************************** +!** +!** liter_cb(): Custom link iteration callback routine. +!** +!*************************************************************** + + INTEGER FUNCTION liter_cb(group, name, link_info, op_data) bind(C) + + USE HDF5 + USE ISO_C_BINDING + IMPLICIT NONE + + INTEGER(HID_T), VALUE :: group + CHARACTER(LEN=1), DIMENSION(1:10) :: name + + + TYPE (H5L_info_t) :: link_info + + TYPE(iter_info) :: op_data + + INTEGER, SAVE :: count + INTEGER, SAVE :: count2 + +!!$ +!!$ iter_info *info = (iter_info *)op_data; +!!$ static int count = 0; +!!$ static int count2 = 0; + + op_data%name(1:10) = name(1:10) + + SELECT CASE (op_data%command) + + CASE(0) + liter_cb = 0 + CASE(2) + liter_cb = 2 + CASE(3) + count = count + 1 + IF(count.GT.10) THEN + liter_cb = 1 + ELSE + liter_cb = 0 + ENDIF + CASE(4) + count2 = count2 + 1 + IF(count2.GT.10) THEN + liter_cb = 1 + ELSE + liter_cb = 0 + ENDIF + END SELECT + + END FUNCTION liter_cb +END MODULE liter_cb_mod + +! ***************************************** +! *** H 5 L T E S T S +! ***************************************** + + +!*************************************************************** +!** +!** test_iter_group(): Test group iteration functionality +!** +!*************************************************************** +SUBROUTINE test_iter_group(total_error) + + USE HDF5 + USE ISO_C_BINDING + USE liter_cb_mod + IMPLICIT NONE + + INTEGER, INTENT(INOUT) :: total_error + INTEGER(HID_T) :: fapl + INTEGER(HID_T) :: file ! File ID + INTEGER(hid_t) :: dataset ! Dataset ID + INTEGER(hid_t) :: datatype ! Common datatype ID + INTEGER(hid_t) :: filespace ! Common dataspace ID + INTEGER(hid_t) :: root_group,grp ! Root group ID + INTEGER i,j ! counting variable + INTEGER(hsize_t) idx ! Index in the group + CHARACTER(LEN=11) :: DATAFILE = "titerate.h5" + INTEGER, PARAMETER :: ndatasets = 50 + CHARACTER(LEN=10) :: name ! temporary name buffer + CHARACTER(LEN=10), DIMENSION(1:ndatasets+2) :: lnames ! Names of the links created +!!$ char dataset_name[NAMELEN]; dataset name + + TYPE(iter_info), TARGET :: info + +!!$ iter_info info; Custom iteration information +!!$ H5G_info_t ginfo; Buffer for querying object's info +!!$ herr_t ret; Generic return value + + INTEGER :: error + INTEGER :: ret_value + TYPE(C_PTR) :: f_ptr + TYPE(C_FUNPTR) :: f1 + TYPE(C_PTR) :: f2 + CHARACTER(LEN=2) :: ichr2 + CHARACTER(LEN=10) :: ichr10 + + ! Get the default FAPL + CALL H5Pcreate_f(H5P_FILE_ACCESS_F, fapl, error) + CALL check("h5pcreate_f", error, total_error) + + ! Set the "use the latest version of the format" bounds for creating objects in the file + CALL H5Pset_libver_bounds_f(fapl, H5F_LIBVER_LATEST_F, H5F_LIBVER_LATEST_F, error) + CALL check("H5Pset_libver_bounds_f",error, total_error) + + ! Create the test file with the datasets + CALL h5fcreate_f(DATAFILE, H5F_ACC_TRUNC_F, file, error, H5P_DEFAULT_F, fapl) + CALL check("h5fcreate_f", error, total_error) + + ! Test iterating over empty group + idx = 0 + info%command = 0 + f1 = C_FUNLOC(liter_cb) + f2 = C_LOC(info) + + + CALL H5Literate_f(file, H5_INDEX_NAME_F, H5_ITER_INC_F, idx, f1, f2, ret_value, error) + CALL check("H5Literate_f", error, total_error) + + CALL H5Tcopy_f(H5T_NATIVE_INTEGER, datatype, error) + CALL check("H5Tcopy_f", error, total_error) + + CALL H5Screate_f(H5S_SCALAR_F, filespace, error) + CALL check("H5Screate_f", error, total_error) + + DO i = 1, ndatasets + WRITE(ichr2, '(I2.2)') i + + name = 'Dataset '//ichr2 + + CALL h5dcreate_f(file, name, datatype, filespace, dataset, error) + CALL check("H5dcreate_f", error, total_error) + + lnames(i) = name + + CALL h5dclose_f(dataset,error) + CALL check("H5dclose_f", error, total_error) + + ENDDO + + ! Create a group and named datatype under root group for testing + + CALL H5Gcreate_f(file, "grp0000000", grp, error) + CALL check("H5Gcreate_f", error, total_error) + + lnames(ndatasets+2) = "grp0000000" + +!!$ +!!$ lnames[NDATASETS] = HDstrdup("grp"); +!!$ CHECK(lnames[NDATASETS], NULL, "strdup"); +!!$ + + CALL H5Tcommit_f(file, "dtype00000", datatype, error) + CALL check("H5Tcommit_f", error, total_error) + + lnames(ndatasets+1) = "dtype00000" + + ! Close everything up + + CALL H5Tclose_f(datatype, error) + CALL check("H5Tclose_f", error, total_error) + + CALL H5Gclose_f(grp, error) + CALL check("H5Gclose_f", error, total_error) + + CALL H5Sclose_f(filespace, error) + CALL check("H5Sclose_f", error, total_error) + + CALL H5Fclose_f(file, error) + CALL check("H5Fclose_f", error, total_error) + + ! Iterate through the datasets in the root group in various ways + CALL H5Fopen_f(DATAFILE, H5F_ACC_RDONLY_F, file, error, access_prp=fapl) + CALL check("h5fopen_f", error, total_error) + + ! Test all objects in group, when callback always returns 0 + info%command = 0 + idx = 0 + CALL H5Literate_f(file, H5_INDEX_NAME_F, H5_ITER_INC_F, idx, f1, f2, ret_value, error) + IF(ret_value.GT.0)THEN + PRINT*,"ERROR: Group iteration function didn't return zero correctly!" + CALL verify("H5Literate_f", error, -1, total_error) + ENDIF + + ! Test all objects in group, when callback always returns 1 + ! This also tests the "restarting" ability, because the index changes + + info%command = 2 + idx = 0 + i = 0 + f1 = C_FUNLOC(liter_cb) + f2 = C_LOC(info) + DO + CALL H5Literate_f(file, H5_INDEX_NAME_F, H5_ITER_INC_F, idx, f1, f2, ret_value, error) + IF(error.LT.0) EXIT + ! Verify return value from iterator gets propagated correctly + CALL VERIFY("H5Literate", ret_value, 2, total_error) + ! Increment the number of times "2" is returned + i = i + 1 + ! Verify that the index is the correct value + CALL VERIFY("H5Literate", INT(idx), INT(i), total_error) + IF(idx .GT.ndatasets+2)THEN + PRINT*,"ERROR: Group iteration function walked too far!" + ENDIF + + ! Verify the correct name is retrieved + DO j = 1, 10 + ichr10(j:j) = info%name(j)(1:1) + ENDDO + CALL verifystring("H5Literate_f", ichr10, lnames(INT(idx)), total_error) + IF(i.EQ.52)EXIT ! prints out error message otherwise (for gcc/gfortran/g95) not intel (why) -FIXME- scot + END DO + + ! put check if did not walk far enough -scot FIXME + + IF(i .NE. (NDATASETS + 2)) THEN + CALL VERIFY("H5Literate_f", i, INT(NDATASETS + 2), total_error) + PRINT*,"ERROR: Group iteration function didn't perform multiple iterations correctly" + ENDIF + + ! Test all objects in group, when callback changes return value + ! This also tests the "restarting" ability, because the index changes + + info%command = 3 + idx = 0 + i = 0 + + f1 = C_FUNLOC(liter_cb) + f2 = C_LOC(info) + DO + + CALL H5Literate_f(file, H5_INDEX_NAME_F, H5_ITER_INC_F, idx, f1, f2, ret_value, error) + IF(error.LT.0) EXIT + CALL VERIFY("H5Literate_f", ret_value, 1, total_error) + + ! Increment the number of times "1" is returned + i = i + 1 + + ! Verify that the index is the correct value + CALL VERIFY("H5Literate_f", INT(idx), INT(i+10), total_error) + + IF(idx .GT.ndatasets+2)THEN + PRINT*,"Group iteration function walked too far!" + ENDIF + + DO j = 1, 10 + ichr10(j:j) = info%name(j)(1:1) + ENDDO + ! Verify that the correct name is retrieved + CALL verifystring("H5Literate_f", ichr10, lnames(INT(idx)), total_error) + IF(i.EQ.42)EXIT ! prints out error message otherwise (for gcc/gfortran/g95) not intel (why) -FIX- scot + ENDDO + + IF(i .NE. 42 .OR. idx .NE. 52)THEN + PRINT*,"ERROR: Group iteration function didn't perform multiple iterations correctly!" + CALL check("H5Literate_f",-1,total_error) + ENDIF + + CALL H5Fclose_f(file, error) + CALL check("H5Fclose_f", error, total_error) + +END SUBROUTINE test_iter_group diff --git a/fortran/test/tH5O.f90 b/fortran/test/tH5O.f90 index 253a42a..d871e59 100644 --- a/fortran/test/tH5O.f90 +++ b/fortran/test/tH5O.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/tH5O.f90 +! +! NAME +! tH5O.f90 +! +! FUNCTION +! Basic testing of Fortran H5O APIs. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,6 +22,11 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! CONTAINS SUBROUTINES +! test_h5o, test_h5o_link, test_h5o_plist +! +!***** + SUBROUTINE test_h5o(cleanup, total_error) USE HDF5 ! This module contains all necessary modules diff --git a/fortran/test/tH5P.f90 b/fortran/test/tH5P.f90 index 6a49f72..3faaac2 100644 --- a/fortran/test/tH5P.f90 +++ b/fortran/test/tH5P.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/tH5P.f90 +! +! NAME +! tH5P.f90 +! +! FUNCTION +! Basic testing of Fortran H5P APIs. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,6 +22,11 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! CONTAINS SUBROUTINES +! external_test, multi_file_test +! +!***** + SUBROUTINE external_test(cleanup, total_error) ! This subroutine tests following functionalities: @@ -231,7 +245,8 @@ ! CALL h5pget_cache_f(fapl, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, & rdcc_w0, error) - CALL check("h5pget_cache_f", error, total_error) + CALL check("h5pget_cache_f", error, total_error) + ! Set cache to some number ! @@ -239,7 +254,6 @@ CALL h5pset_cache_f(fapl, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, & rdcc_w0, error) CALL check("h5pset_cache_f", error, total_error) - CALL h5fcreate_f(fix_filename, H5F_ACC_TRUNC_F, file_id, error, access_prp = fapl) CALL check("h5fcreate_f", error, total_error) if(error .ne. 0) then @@ -249,7 +263,6 @@ return endif - ! ! Create the dataspace. ! @@ -377,7 +390,7 @@ CALL check("h5pclose_f", error, total_error) IF(cleanup) CALL h5_cleanup_f(filename, H5P_DEFAULT_F, error) CALL check("h5_cleanup_f", error, total_error) - + IF(cleanup) CALL h5_cleanup_f(filename//'.h5-b', H5P_DEFAULT_F, error) CALL check("h5_cleanup_f", error, total_error) IF(cleanup) CALL h5_cleanup_f(filename//'.h5-g', H5P_DEFAULT_F, error) @@ -390,7 +403,7 @@ CALL check("h5_cleanup_f", error, total_error) IF(cleanup) CALL h5_cleanup_f(filename//'.h5-s', H5P_DEFAULT_F, error) CALL check("h5_cleanup_f", error, total_error) - + RETURN END SUBROUTINE multi_file_test @@ -412,14 +425,14 @@ ! April 16, 2009 !------------------------------------------------------------------------- ! -SUBROUTINE test_chunk_cache(cleanup, total_error) - - USE HDF5 ! This module contains all necessary modules +SUBROUTINE test_chunk_cache(cleanup, total_error) + USE HDF5 ! This module contains all necessary modules + IMPLICIT NONE LOGICAL, INTENT(IN) :: cleanup INTEGER, INTENT(OUT) :: total_error - + CHARACTER(LEN=14), PARAMETER :: filename="chunk_cache" CHARACTER(LEN=80) :: fix_filename INTEGER(hid_t) :: fid = -1 ! /* File ID */ @@ -457,7 +470,7 @@ SUBROUTINE test_chunk_cache(cleanup, total_error) ! Verify that H5Pget_chunk_cache(dapl) returns the same values as are in ! the default fapl. - ! + ! CALL H5Pget_cache_f(fapl_def, mdc_nelmts, nslots_1, nbytes_1, w0_1, error) CALL check("H5Pget_cache_f", error, total_error) CALL H5Pget_chunk_cache_f(dapl1, nslots_4, nbytes_4, w0_4, error) @@ -514,7 +527,7 @@ SUBROUTINE test_chunk_cache(cleanup, total_error) ! /* Create dataset with default dapl */ CALL H5Dcreate_f(fid, "dset", H5T_NATIVE_INTEGER, sid, dsid, error, dcpl, H5P_DEFAULT_F, dapl1) CALL check("H5Pcreate_f", error, total_error) - + ! /* Retrieve dapl from dataset, verify cache values are the same as on fapl_local */ CALL H5Dget_access_plist_f(dsid, dapl2, error) CALL check("H5Dget_access_plist_f", error, total_error) @@ -526,7 +539,7 @@ SUBROUTINE test_chunk_cache(cleanup, total_error) CALL VERIFYlogical("H5Pget_chunk_cache_f", .TRUE., .FALSE., total_error) ENDIF CALL H5Pclose_f(dapl2,error); CALL check("H5Pclose_f", error, total_error) - + ! Set new values on dapl1. nbytes will be set to default, so the file ! property will override this setting @@ -601,7 +614,7 @@ SUBROUTINE test_chunk_cache(cleanup, total_error) CALL check("H5Pset_cache_f", error, total_error) ! Close and reopen file with new fapl_local - + CALL H5Dclose_f(dsid, error); CALL check("H5Dclose_f", error, total_error) CALL H5Fclose_f(fid,error); CALL check("h5fclose_f", error, total_error) @@ -611,12 +624,12 @@ SUBROUTINE test_chunk_cache(cleanup, total_error) ! Verify that dapl2 retrieved earlier (using values from the old fapl) ! sets its values in the new file (test use of H5Dopen2 with a dapl) ! - + CALL h5dopen_f (fid, "dset", dsid, error, dapl2) CALL check("h5dopen_f", error, total_error) - + CALL H5Pclose_f(dapl2,error); CALL check("H5Pclose_f", error, total_error) ! Close dapl2, to avoid id leak - + CALL H5Dget_access_plist_f(dsid, dapl2, error) CALL check("H5Dget_access_plist_f", error, total_error) CALL H5Pget_chunk_cache_f(dapl2, nslots_4, nbytes_4, w0_4, error) @@ -654,11 +667,11 @@ SUBROUTINE test_chunk_cache(cleanup, total_error) CALL H5Dclose_f(dsid, error); CALL check("H5Dclose_f", error, total_error) CALL H5Sclose_f(sid,error); CALL check("H5Sclose_f", error, total_error) - CALL H5Pclose_f(fapl_local,error); CALL check("H5Pclose_f", error, total_error) - CALL H5Pclose_f(fapl_def,error); CALL check("H5Pclose_f", error, total_error) - CALL H5Pclose_f(dapl1,error); CALL check("H5Pclose_f", error, total_error) - CALL H5Pclose_f(dapl2,error); CALL check("H5Pclose_f", error, total_error) - CALL H5Pclose_f(dcpl,error); CALL check("H5Pclose_f", error, total_error) + CALL H5Pclose_f(fapl_local,error); CALL check("H5Pclose_f", error, total_error) + CALL H5Pclose_f(fapl_def,error); CALL check("H5Pclose_f", error, total_error) + CALL H5Pclose_f(dapl1,error); CALL check("H5Pclose_f", error, total_error) + CALL H5Pclose_f(dapl2,error); CALL check("H5Pclose_f", error, total_error) + CALL H5Pclose_f(dcpl,error); CALL check("H5Pclose_f", error, total_error) CALL H5Fclose_f(fid,error); CALL check("H5Fclose_f", error, total_error) IF(cleanup) CALL h5_cleanup_f(filename, H5P_DEFAULT_F, error) diff --git a/fortran/test/tH5P_F03.f90 b/fortran/test/tH5P_F03.f90 new file mode 100644 index 0000000..c910869 --- /dev/null +++ b/fortran/test/tH5P_F03.f90 @@ -0,0 +1,364 @@ +!****h* root/fortran/test/tH5P_F03.f90 +! +! NAME +! tH5P_F03.f90 +! +! FUNCTION +! Test FORTRAN HDF5 H5P APIs which are dependent on FORTRAN 2003 +! features. +! +! COPYRIGHT +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! USES +! test_genprop_cls_cb1_mod +! +! CONTAINS SUBROUTINES +! test_create, test_genprop_class_callback +! +!***** + +! ***************************************** +! *** H 5 P T E S T S +! ***************************************** + +MODULE test_genprop_cls_cb1_mod + + ! Callback subroutine for test_genprop_class_callback + ! and the function H5Pcreate_class_f. + + USE HDF5 + USE ISO_C_BINDING + IMPLICIT NONE + + TYPE, bind(C) :: cop_cb_struct_ ! /* Struct for iterations */ + INTEGER :: count + INTEGER(HID_T) :: id + END TYPE cop_cb_struct_ + +CONTAINS + + INTEGER FUNCTION test_genprop_cls_cb1_f(list_id, create_data ) bind(C) + + USE HDF5 + USE ISO_C_BINDING + IMPLICIT NONE + + INTEGER(HID_T), INTENT(IN), VALUE :: list_id + + TYPE(cop_cb_struct_) :: create_data + + create_data%count = create_data%count + 1 + create_data%id = list_id + + test_genprop_cls_cb1_f = 0 + + END FUNCTION test_genprop_cls_cb1_f + +END MODULE test_genprop_cls_cb1_mod + +!/*------------------------------------------------------------------------- +! * Function: test_create +! * +! * Purpose: Tests H5Pset_fill_value_f and H5Pget_fill_value_f +! * +! * Return: Success: 0 +! * +! * Failure: number of errors +! * +! * Programmer: M. Scot Breitenfeld +! * June 24, 2008 +! * +! * Modifications: +! * +! *------------------------------------------------------------------------- +! */ + +SUBROUTINE test_create(total_error) + + USE HDF5 + USE ISO_C_BINDING + IMPLICIT NONE + + INTEGER, INTENT(INOUT) :: total_error + INTEGER(HID_T) :: fapl + + INTEGER(hid_t) :: file=-1, space=-1, dcpl=-1, comp_type_id=-1 + INTEGER(hid_t) :: dset1=-1, dset2=-1, dset3=-1, dset4=-1, dset5=-1, & + dset6=-1, dset7=-1, dset8=-1, dset9=-1 + INTEGER(hsize_t), DIMENSION(1:5), PARAMETER :: cur_size = (/2, 8, 8, 4, 2/) + INTEGER(hsize_t), DIMENSION(1:5), PARAMETER :: ch_size= (/1, 1, 1, 4, 1/) + CHARACTER(LEN=14) :: filename ='test_create.h5' + + ! /* compound datatype operations */ + TYPE, BIND(C) :: comp_datatype + REAL :: a + INTEGER :: x + DOUBLE PRECISION :: y + CHARACTER(LEN=1) :: z + END TYPE comp_datatype + + TYPE(comp_datatype), TARGET :: rd_c, fill_ctype + + INTEGER(SIZE_T) :: type_sizei ! Size of the integer datatype + INTEGER(SIZE_T) :: type_sizer ! Size of the real datatype + INTEGER(SIZE_T) :: type_sized ! Size of the double datatype + INTEGER(SIZE_T) :: type_sizec ! Size of the double datatype + INTEGER(SIZE_T) :: sizeof_compound ! total size of compound + INTEGER :: error + INTEGER(SIZE_T) :: h5off + TYPE(C_PTR) :: f_ptr + + !/* + ! * Create a file. + ! */ + CALL h5fcreate_f(filename,H5F_ACC_TRUNC_F,file,error) + CALL check("h5fcreate_f", error, total_error) + + CALL h5screate_simple_f(5, cur_size, space, error, cur_size) + CALL check("h5screate_simple_f", error, total_error) + + CALL H5Pcreate_f(H5P_DATASET_CREATE_F, dcpl, error) + CALL check("H5Pcreate_f", error, total_error) + + CALL h5pset_chunk_f(dcpl, 5, ch_size, error) + CALL check("h5pset_chunk_f",error, total_error) + + ! /* Create a compound datatype */ + + CALL h5tcreate_f(H5T_COMPOUND_F, INT(SIZEOF(fill_ctype),size_t), comp_type_id, error) + CALL check("h5tcreate_f", error, total_error) + h5off = H5OFFSETOF(C_LOC(fill_ctype), C_LOC(fill_ctype%a)) + CALL h5tinsert_f(comp_type_id, "a", h5off , H5T_NATIVE_REAL, error) + CALL check("h5tinsert_f", error, total_error) + CALL h5tinsert_f(comp_type_id, "x", H5OFFSETOF(C_LOC(fill_ctype), C_LOC(fill_ctype%x)), H5T_NATIVE_INTEGER, error) + CALL check("h5tinsert_f", error, total_error) + CALL h5tinsert_f(comp_type_id, "y", H5OFFSETOF(C_LOC(fill_ctype), C_LOC(fill_ctype%y)), H5T_NATIVE_DOUBLE, error) + CALL check("h5tinsert_f", error, total_error) + CALL h5tinsert_f(comp_type_id, "z", & + H5OFFSETOF(C_LOC(fill_ctype), C_LOC(fill_ctype%z)), H5T_NATIVE_CHARACTER, error) + CALL check("h5tinsert_f", error, total_error) + + + CALL H5Pset_alloc_time_f(dcpl, H5D_ALLOC_TIME_LATE_F,error) + CALL check("H5Pset_alloc_time_f",error, total_error) + + CALL H5Pset_fill_time_f(dcpl, H5D_FILL_TIME_ALLOC_F, error) + CALL check("H5Pset_fill_time_f",error, total_error) + + ! /* Compound datatype test */ + + f_ptr = C_LOC(fill_ctype) + + CALL H5Pget_fill_value_f(dcpl, comp_type_id, f_ptr, error) + CALL check("H5Pget_fill_value_f",error, total_error) + + fill_ctype%y = 4444. + fill_ctype%z = 'S' + fill_ctype%a = 5555. + fill_ctype%x = 55 + + f_ptr = C_LOC(fill_ctype) + + CALL H5Pset_fill_value_f(dcpl, comp_type_id, f_ptr, error) + CALL check("H5Pget_fill_value_f",error, total_error) + + CALL h5dcreate_f(file,"dset9", comp_type_id, space, dset9, error, dcpl_id=dcpl) + CALL check("h5dcreate_f", error, total_error) + + CALL h5dclose_f(dset9, error) + CALL check("h5dclose_f", error, total_error) + + CALL h5fclose_f(file,error) + CALL check("h5fclose_f", error, total_error) + + ! /* Open the file and get the dataset fill value from each dataset */ + CALL H5Pcreate_f(H5P_FILE_ACCESS_F, fapl, error) + CALL check("H5Pcreate_f",error, total_error) + + CALL H5Pset_libver_bounds_f(fapl, H5F_LIBVER_LATEST_F, H5F_LIBVER_LATEST_F, error) + CALL check("H5Pset_libver_bounds_f",error, total_error) + + CALL h5fopen_f (FILENAME, H5F_ACC_RDONLY_F, file, error, fapl) + CALL check("h5fopen_f", error, total_error) + + !/* Compound datatype test */ + CALL h5dopen_f(file, "dset9", dset9, error) + CALL check("h5dopen_f", error, total_error) + + CALL H5Dget_create_plist_f(dset9, dcpl, error) + CALL check("H5Dget_create_plist_f", error, total_error) + + f_ptr = C_LOC(rd_c) + + CALL H5Pget_fill_value_f(dcpl, comp_type_id, f_ptr, error) + CALL check("H5Pget_fill_value_f", error, total_error) + + IF( rd_c%a .NE. fill_ctype%a .OR. & + rd_c%y .NE. fill_ctype%y .OR. & + rd_c%x .NE. fill_ctype%x .OR. & + rd_c%z .NE. fill_ctype%z )THEN + + PRINT*,"***ERROR: Returned wrong fill value" + total_error = total_error + 1 + + ENDIF + + CALL h5dclose_f(dset9, error) + CALL check("h5dclose_f", error, total_error) + + CALL H5Pclose_f(dcpl, error) + CALL check("H5Pclose_f", error, total_error) + + CALL h5fclose_f(file,error) + CALL check("h5fclose_f", error, total_error) + +END SUBROUTINE test_create + + +SUBROUTINE test_genprop_class_callback(total_error) + + !/**************************************************************** + !** + !** test_genprop_class_callback(): Test basic generic property list code. + !** Tests callbacks for property lists in a generic class. + !** + !** FORTRAN TESTS: + !** Tests function H5Pcreate_class_f with callback. + !** + !****************************************************************/ + + USE HDF5 + USE ISO_C_BINDING + USE test_genprop_cls_cb1_mod + IMPLICIT NONE + + INTEGER, INTENT(INOUT) :: total_error + + INTEGER(hid_t) :: cid1 !/* Generic Property class ID */ + INTEGER(hid_t) :: lid1 !/* Generic Property list ID */ + INTEGER(hid_t) :: lid2 !/* 2nd Generic Property list ID */ + INTEGER(size_t) :: nprops !/* Number of properties in class */ + + TYPE cb_struct + INTEGER :: count + INTEGER(hid_t) :: id + END TYPE cb_struct + + TYPE(cb_struct), TARGET :: crt_cb_struct, cls_cb_struct + + CHARACTER(LEN=7) :: CLASS1_NAME = "Class 1" + TYPE(C_FUNPTR) :: f1, f3, f5 + TYPE(C_PTR) :: f2, f4, f6 + + CHARACTER(LEN=10) :: PROP1_NAME = "Property 1" + INTEGER(SIZE_T) :: PROP1_SIZE = 10 + CHARACTER(LEN=10) :: PROP2_NAME = "Property 2" + INTEGER(SIZE_T) :: PROP2_SIZE = 10 + CHARACTER(LEN=10) :: PROP3_NAME = "Property 3" + INTEGER(SIZE_T) :: PROP3_SIZE = 10 + CHARACTER(LEN=10) :: PROP4_NAME = "Property 4" + INTEGER(SIZE_T) :: PROP4_SIZE = 10 + INTEGER :: PROP1_DEF_VALUE = 10 + INTEGER :: PROP2_DEF_VALUE = 10 + INTEGER :: PROP3_DEF_VALUE = 10 + INTEGER :: PROP4_DEF_VALUE = 10 + + INTEGER :: error ! /* Generic RETURN value */ + + f1 = C_FUNLOC(test_genprop_cls_cb1_f) + f5 = C_FUNLOC(test_genprop_cls_cb1_f) + + f2 = C_LOC(crt_cb_struct) + f6 = C_LOC(cls_cb_struct) + + !/* Create a new generic class, derived from the root of the class hierarchy */ + CALL H5Pcreate_class_f(H5P_ROOT_F,CLASS1_NAME, cid1, error, f1, f2, c_null_funptr, c_null_ptr, f5, f6) + CALL check("H5Pcreate_class_f", error, total_error) + + !/* Insert first property into class (with no callbacks) */ + CALL H5Pregister_f(cid1, PROP1_NAME, PROP1_SIZE, PROP1_DEF_VALUE, error) + CALL check("H5Pregister_f", error, total_error) + !/* Insert second property into class (with no callbacks) */ + CALL H5Pregister_f(cid1, PROP2_NAME, PROP2_SIZE, PROP2_DEF_VALUE, error) + CALL check("H5Pregister_f", error, total_error) + !/* Insert third property into class (with no callbacks) */ + CALL H5Pregister_f(cid1, PROP3_NAME, PROP3_SIZE, PROP3_DEF_VALUE, error) + CALL check("H5Pregister_f", error, total_error) + + !/* Insert fourth property into class (with no callbacks) */ + CALL H5Pregister_f(cid1, PROP4_NAME, PROP4_SIZE, PROP4_DEF_VALUE, error) + CALL check("H5Pregister_f", error, total_error) + + ! /* Check the number of properties in class */ + CALL H5Pget_nprops_f(cid1, nprops, error) + CALL check("H5Pget_nprops_f", error, total_error) + CALL VERIFY("H5Pget_nprops_f", INT(nprops), 4, total_error) + + ! /* Initialize class callback structs */ + + crt_cb_struct%count = 0 + crt_cb_struct%id = -1 + cls_cb_struct%count = 0 + cls_cb_struct%id = -1 + + !/* Create a property list from the class */ + CALL H5Pcreate_f(cid1, lid1, error) + CALL check("H5Pcreate", error, total_error) + + !/* Verify that the creation callback occurred */ + CALL VERIFY("H5Pcreate", INT(crt_cb_struct%count), 1, total_error) + CALL VERIFY("H5Pcreate", INT(crt_cb_struct%id), INT(lid1), total_error) + + ! /* Check the number of properties in list */ + CALL H5Pget_nprops_f(lid1,nprops, error) + CALL check("H5Pget_nprops_f", error, total_error) + CALL VERIFY("H5Pget_nprops_f", INT(nprops), 4, total_error) + + ! /* Create another property list from the class */ + CALL H5Pcreate_f(cid1, lid2, error) + CALL check("H5Pcreate", error, total_error) + + ! /* Verify that the creation callback occurred */ + CALL VERIFY("H5Pcreate", INT(crt_cb_struct%count), 2, total_error) + CALL VERIFY("H5Pcreate", INT(crt_cb_struct%id), INT(lid2), total_error) + + ! /* Check the number of properties in list */ + CALL H5Pget_nprops_f(lid2,nprops, error) + CALL check("H5Pget_nprops_f", error, total_error) + CALL VERIFY("H5Pget_nprops_f", INT(nprops), 4, total_error) + + ! /* Close first list */ + CALL H5Pclose_f(lid1, error); + CALL check("h5pclose", error, total_error) + + !/* Verify that the close callback occurred */ + CALL VERIFY("H5Pcreate", INT(cls_cb_struct%count), 1, total_error) + CALL VERIFY("H5Pcreate", INT(cls_cb_struct%id), INT(lid1), total_error) + + !/* Close second list */ + CALL H5Pclose_f(lid2, error); + CALL check("h5pclose", error, total_error) + + !/* Verify that the close callback occurred */ + CALL VERIFY("H5Pcreate", INT(cls_cb_struct%count), 2, total_error) + CALL VERIFY("H5Pcreate", INT(cls_cb_struct%id), INT(lid2), total_error) + + !/* Close class */ + CALL H5Pclose_class_f(cid1, error) + CALL check("H5Pclose_class_f", error, total_error) + +END SUBROUTINE test_genprop_class_callback diff --git a/fortran/test/tH5R.f90 b/fortran/test/tH5R.f90 index 0289465..ac105fc 100644 --- a/fortran/test/tH5R.f90 +++ b/fortran/test/tH5R.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/tH5R.f90 +! +! NAME +! tH5R.f90 +! +! FUNCTION +! Basic testing of Fortran H5R, Reference Interface, APIs. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,12 +22,14 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! +! NOTES +! Tests h5rcreate_f, h5rdereference_f, h5rget_name_f +! and H5Rget_object_type functions ! +! CONTAINS SUBROUTINES +! refobjtest, refregtest ! -! Testing Reference Interface functionality. -! -! The following subroutine tests h5rcreate_f, h5rdereference_f, h5rget_name_f -! and H5Rget_object_type functions +!***** ! SUBROUTINE refobjtest(cleanup, total_error) USE HDF5 ! This module contains all necessary modules @@ -230,6 +241,8 @@ END SUBROUTINE refobjtest ! SUBROUTINE refregtest(cleanup, total_error) USE HDF5 ! This module contains all necessary modules +! use iso_c_binding ! NOTE: if this is uncommented, then need to move subroutine into another file. + IMPLICIT NONE LOGICAL, INTENT(IN) :: cleanup INTEGER, INTENT(OUT) :: total_error @@ -249,23 +262,30 @@ SUBROUTINE refregtest(cleanup, total_error) INTEGER(HID_T) :: dsetv_id ! Dataset identifier INTEGER(HID_T) :: dsetr_id ! Dataset identifier INTEGER :: error - TYPE(hdset_reg_ref_t_f) , DIMENSION(2) :: ref ! Buffers to store references - TYPE(hdset_reg_ref_t_f) , DIMENSION(2) :: ref_out ! - INTEGER(HSIZE_T), DIMENSION(2) :: ref_dim - INTEGER(HSIZE_T), DIMENSION(2) :: data_dims - INTEGER(HSIZE_T), DIMENSION(2) :: dims = (/2,9/) ! Datasets dimensions - INTEGER(HSIZE_T), DIMENSION(1) :: dimsr = (/2/) ! - INTEGER(HSIZE_T), DIMENSION(2) :: start - INTEGER(HSIZE_T), DIMENSION(2) :: count +! TYPE(hdset_reg_ref_t_f) , DIMENSION(1:2), TARGET :: ref + TYPE(hdset_reg_ref_t_f) , DIMENSION(1:2) :: ref + TYPE(hdset_reg_ref_t_f) , DIMENSION(1:2) :: ref_out + INTEGER(HSIZE_T), DIMENSION(2) :: ref_dim = (/0,0/) + INTEGER(HSIZE_T), DIMENSION(2) :: data_dims ! = (/0,0/) + INTEGER(HSIZE_T), DIMENSION(2) :: dims = (/2,9/) ! Datasets dimensions + INTEGER(HSIZE_T), DIMENSION(1) :: dimsr = (/2/) ! + INTEGER(HSIZE_T), DIMENSION(2) :: start ! = (/0,0/) + INTEGER(HSIZE_T), DIMENSION(2) :: count ! = (/0,0/) + INTEGER :: rankr = 1 INTEGER :: rank = 2 - INTEGER , DIMENSION(2,9) :: DATA +! INTEGER , DIMENSION(2,9), TARGET :: DATA + INTEGER , DIMENSION(2,9) :: DATA INTEGER , DIMENSION(2,9) :: data_out = 0 INTEGER(HSIZE_T) , DIMENSION(2,3) :: coord INTEGER(SIZE_T) ::num_points = 3 ! Number of selected points +! type(c_ptr) :: f_ptr coord = RESHAPE((/1,1,2,7,1,9/), (/2,3/)) ! Coordinates of selected points DATA = RESHAPE ((/1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6/), (/2,9/)) + ref_out(1)%ref = 0 + ref_out(2)%ref = 0 + ! ! Initialize FORTRAN predefined datatypes. ! @@ -305,11 +325,16 @@ SUBROUTINE refregtest(cleanup, total_error) CALL check("h5dcreate_f", error, total_error) data_dims(1) = 2 data_dims(2) = 9 + +! f_ptr = c_loc(data) +! CALL h5dwrite_f(dsetv_id, H5T_NATIVE_INTEGER, f_ptr, error) + CALL h5dwrite_f(dsetv_id, H5T_NATIVE_INTEGER, DATA, data_dims, error) CALL check("h5dwrite_f", error, total_error) CALL h5dclose_f(dsetv_id, error) CALL check("h5dclose_f", error, total_error) + ! ! Dataset with references ! @@ -326,8 +351,12 @@ SUBROUTINE refregtest(cleanup, total_error) CALL h5sselect_hyperslab_f(space_id, H5S_SELECT_SET_F, & start, count, error) CALL check("h5sselect_hyperslab_f", error, total_error) + ref(1)%ref(:) = 0 +! f_ptr = C_LOC(ref(1)) +! CALL h5rcreate_f(file_id, dsetnamev, 1, space_id, f_ptr, error) CALL h5rcreate_f(file_id, dsetnamev, space_id, ref(1), error) CALL check("h5rcreate_f", error, total_error) + ! ! Create a reference to elements selection. ! @@ -336,6 +365,7 @@ SUBROUTINE refregtest(cleanup, total_error) CALL h5sselect_elements_f(space_id, H5S_SELECT_SET_F, rank, num_points,& coord, error) CALL check("h5sselect_elements_f", error, total_error) + ref(2)%ref(:) = 0 CALL h5rcreate_f(file_id, dsetnamev, space_id, ref(2), error) CALL check("h5rcreate_f", error, total_error) ! @@ -355,6 +385,7 @@ SUBROUTINE refregtest(cleanup, total_error) CALL check("h5dclose_f", error, total_error) CALL h5fclose_f(file_id, error) CALL check("h5fclose_f", error, total_error) + ! ! Reopen the file to test selections. ! @@ -369,7 +400,6 @@ SUBROUTINE refregtest(cleanup, total_error) CALL h5dread_f(dsetr_id, H5T_STD_REF_DSETREG, ref_out, ref_dim, error) CALL check("h5dread_f", error, total_error) - ! Get name of the dataset the first region reference points to using H5Rget_name_f CALL H5Rget_name_f(dsetr_id, ref_out(1), buf, error, buf_size ) CALL check("H5Rget_name_f", error, total_error) @@ -390,7 +420,6 @@ SUBROUTINE refregtest(cleanup, total_error) CALL check("H5Rget_name_f", error, total_error) CALL VERIFY("H5Rget_name_f", INT(buf_size),7,total_error) CALL VerifyString("H5Rget_name_f", TRIM(buf_small), "/MAT", total_error) - ! ! Dereference the first reference. ! @@ -402,9 +431,7 @@ SUBROUTINE refregtest(cleanup, total_error) ! Get name of the dataset the second region reference points to using H5Rget_name_f CALL H5Rget_name_f(dsetr_id, ref_out(2), buf, error) ! no optional size CALL check("H5Rget_name_f", error, total_error) - CALL VerifyString("H5Rget_name_f", buf, "/MATRIX", total_error) - - + CALL VerifyString("H5Rget_name_f", TRIM(buf), "/MATRIX", total_error) ! ! Read selected data from the dataset. ! diff --git a/fortran/test/tH5S.f90 b/fortran/test/tH5S.f90 index b56d3a7..e3a44ad 100644 --- a/fortran/test/tH5S.f90 +++ b/fortran/test/tH5S.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/tH5S.f90 +! +! NAME +! tH5S.f90 +! +! FUNCTION +! Basic testing of Fortran H5S, Dataspace Interface, APIs. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,17 +22,18 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! -! -! -! Testing Dataspace Interface functionality. -! -! -! The following subroutine tests the following functionalities: +! NOTES +! Tests the following functionalities: ! h5screate_f, h5scopy_f, h5screate_simple_f, h5sis_simple_f, ! h5sget_simple_extent_dims_f,h5sget_simple_extent_ndims_f ! h5sget_simple_extent_npoints_f, h5sget_simple_extent_type_f, ! h5sextent_copy_f, h5sset_extent_simple_f, h5sset_extent_none_f ! +! CONTAINS SUBROUTINES +! dataspace_basic_test +! +!***** + SUBROUTINE dataspace_basic_test(cleanup, total_error) USE HDF5 ! This module contains all necessary modules @@ -162,7 +172,7 @@ CALL check("h5sget_simple_extent_type_f", error, total_error) IF (classtype .NE. 1) write(*,*)"class type not H5S_SIMPLE_f" - ! + ! !set the copied space to none before extend the dimensions. ! CALL h5sset_extent_none_f(space2_id, error) diff --git a/fortran/test/tH5Sselect.f90 b/fortran/test/tH5Sselect.f90 index f7fd8af..1cbabe8 100644 --- a/fortran/test/tH5Sselect.f90 +++ b/fortran/test/tH5Sselect.f90 @@ -1,3 +1,12 @@ +!****h* root/fortran/test/tH5Sselect.f90 +! +! NAME +! tH5Sselect.f90 +! +! FUNCTION +! Basic testing of Fortran H5S, Selection-related Dataspace Interface, APIs. +! +! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! Copyright by The HDF Group. * ! Copyright by the Board of Trustees of the University of Illinois. * @@ -13,18 +22,20 @@ ! access to either file, you may request a copy from help@hdfgroup.org. * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! -! -! Testing Selection-related Dataspace Interface functionality. -! - -! -! The following subroutines tests the following functionalities: +! NOTES +! Tests the following functionalities: ! h5sget_select_npoints_f, h5sselect_elements_f, h5sselect_all_f, ! h5sselect_none_f, h5sselect_valid_f, h5sselect_hyperslab_f, ! h5sget_select_bounds_f, h5sget_select_elem_pointlist_f, ! h5sget_select_elem_npoints_f, h5sget_select_hyper_blocklist_f, -! h5sget_select_hyper_nblocks_f, h5sget_select_npoints_f +! h5sget_select_hyper_nblocks_f, h5sget_select_npoints_f +! +! CONTAINS SUBROUTINES +! test_select_hyperslab, test_select_element, test_basic_select, +! test_select_point, test_select_combine, test_select_bounds +! ! +!***** SUBROUTINE test_select_hyperslab(cleanup, total_error) @@ -1021,13 +1032,13 @@ !****************************************************************/ SUBROUTINE test_select_point(cleanup, total_error) - USE HDF5 ! This module contains all necessary modules - + USE HDF5 ! This module contains all necessary modules + IMPLICIT NONE LOGICAL, INTENT(IN) :: cleanup INTEGER, INTENT(OUT) :: total_error INTEGER(HID_T) :: xfer_plist - + INTEGER, PARAMETER :: SPACE1_DIM1=3 INTEGER, PARAMETER :: SPACE1_DIM2=15 INTEGER, PARAMETER :: SPACE1_DIM3=13 @@ -1035,11 +1046,11 @@ SUBROUTINE test_select_point(cleanup, total_error) INTEGER, PARAMETER :: SPACE2_DIM2=26 INTEGER, PARAMETER :: SPACE3_DIM1=15 INTEGER, PARAMETER :: SPACE3_DIM2=26 - + INTEGER, PARAMETER :: SPACE1_RANK=3 INTEGER, PARAMETER :: SPACE2_RANK=2 INTEGER, PARAMETER :: SPACE3_RANK=2 - + ! /* Element selection information */ INTEGER, PARAMETER :: POINT1_NPOINTS=10 INTEGER(hid_t) ::fid1 ! /* HDF5 File IDs */ @@ -1048,7 +1059,7 @@ SUBROUTINE test_select_point(cleanup, total_error) INTEGER(hsize_t), DIMENSION(1:3) :: dims1 = (/SPACE1_DIM1, SPACE1_DIM2, SPACE1_DIM3/) INTEGER(hsize_t), DIMENSION(1:2) :: dims2 = (/SPACE2_DIM1, SPACE2_DIM2/) INTEGER(hsize_t), DIMENSION(1:2) :: dims3 = (/SPACE3_DIM1, SPACE3_DIM2/) - + INTEGER(hsize_t), DIMENSION(1:SPACE1_RANK,1:POINT1_NPOINTS) :: coord1 !/* Coordinates for point selection */ INTEGER(hsize_t), DIMENSION(1:SPACE1_RANK,1:POINT1_NPOINTS) :: temp_coord1 !/* Coordinates for point selection */ INTEGER(hsize_t), DIMENSION(1:SPACE2_RANK,1:POINT1_NPOINTS) :: coord2 !/* Coordinates for point selection */ @@ -1064,7 +1075,7 @@ SUBROUTINE test_select_point(cleanup, total_error) ! struct pnt_iter pi; /* Custom Pointer iterator struct */ INTEGER :: error !/* Generic return value */ CHARACTER(LEN=9) :: filename = 'h5s_hyper' - CHARACTER(LEN=80) :: fix_filename + CHARACTER(LEN=80) :: fix_filename CHARACTER(LEN=1), DIMENSION(1:SPACE2_DIM1,1:SPACE2_DIM2) :: wbuf, rbuf CALL h5_fixname_f(filename, fix_filename, H5P_DEFAULT_F, error) @@ -1090,11 +1101,11 @@ SUBROUTINE test_select_point(cleanup, total_error) !!$ for(i=0, tbuf=wbuf; i