diff options
-rw-r--r-- | doc/html/Tutor/compound.html | 155 | ||||
-rw-r--r-- | doc/html/Tutor/software.html | 15 |
2 files changed, 11 insertions, 159 deletions
diff --git a/doc/html/Tutor/compound.html b/doc/html/Tutor/compound.html index d68d5a3..5db0ff1 100644 --- a/doc/html/Tutor/compound.html +++ b/doc/html/Tutor/compound.html @@ -29,7 +29,6 @@ width=78 height=27 alt="NCSA"><P></A> <LI> <A HREF="#fc">File Contents</A> </UL> </UL> -<em><b>Note:</b> The FORTRAN API does not yet support compound datatypes.</em> <HR> <A NAME="def"> <H2>Creating Compound Datatypes</H2> @@ -69,159 +68,11 @@ the members. <UL> [ <A HREF="examples/h5_compound.c">C Example</A> ] - <code>h5_compound.c</code> <BR> +[ <A HREF="examples/compound.f90">Fortran 90 Example</A> ] +- <code>compound.f90</code> +<BR> [ <A HREF="examples/java/Compound.java">Java Example</A> ] - <code>Compound.java</code> </UL> -<PRE> -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -#include "hdf5.h" - -#define FILE "SDScompound.h5" -#define DATASETNAME "ArrayOfStructures" -#define LENGTH 10 -#define RANK 1 - -int -main(void) -{ - - /* First structure and dataset*/ - typedef struct s1_t { - int a; - float b; - double c; - } s1_t; - s1_t s1[LENGTH]; - hid_t s1_tid; /* File datatype identifier */ - - /* Second structure (subset of s1_t) and dataset*/ - typedef struct s2_t { - double c; - int a; - } s2_t; - s2_t s2[LENGTH]; - hid_t s2_tid; /* Memory datatype handle */ - - /* Third "structure" ( will be used to read float field of s1) */ - hid_t s3_tid; /* Memory datatype handle */ - float s3[LENGTH]; - - int i; - hid_t file, dataset, space; /* Handles */ - herr_t status; - hsize_t dim[] = {LENGTH}; /* Dataspace dimensions */ - - - /* - * Initialize the data - */ - for (i = 0; i < LENGTH; i++) { - s1[i].a = i; - s1[i].b = i*i; - s1[i].c = 1./(i+1); - } - - /* - * Create the data space. - */ - space = H5Screate_simple(RANK, dim, NULL); - - /* - * Create the file. - */ - file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Create the memory datatype. - */ - s1_tid = H5Tcreate (H5T_COMPOUND, sizeof(s1_t)); - H5Tinsert(s1_tid, "a_name", HOFFSET(s1_t, a), H5T_NATIVE_INT); - H5Tinsert(s1_tid, "c_name", HOFFSET(s1_t, c), H5T_NATIVE_DOUBLE); - H5Tinsert(s1_tid, "b_name", HOFFSET(s1_t, b), H5T_NATIVE_FLOAT); - - /* - * Create the dataset. - */ - dataset = H5Dcreate(file, DATASETNAME, s1_tid, space, H5P_DEFAULT); - - /* - * Wtite data to the dataset; - */ - status = H5Dwrite(dataset, s1_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s1); - - /* - * Release resources - */ - H5Tclose(s1_tid); - H5Sclose(space); - H5Dclose(dataset); - H5Fclose(file); - - /* - * Open the file and the dataset. - */ - file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT); - - dataset = H5Dopen(file, DATASETNAME); - - /* - * Create a datatype for s2 - */ - s2_tid = H5Tcreate(H5T_COMPOUND, sizeof(s2_t)); - - H5Tinsert(s2_tid, "c_name", HOFFSET(s2_t, c), H5T_NATIVE_DOUBLE); - H5Tinsert(s2_tid, "a_name", HOFFSET(s2_t, a), H5T_NATIVE_INT); - - /* - * Read two fields c and a from s1 dataset. Fields in the file - * are found by their names "c_name" and "a_name". - */ - status = H5Dread(dataset, s2_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s2); - - /* - * Display the fields - */ - printf("\n"); - printf("Field c : \n"); - for( i = 0; i < LENGTH; i++) printf("%.4f ", s2[i].c); - printf("\n"); - - printf("\n"); - printf("Field a : \n"); - for( i = 0; i < LENGTH; i++) printf("%d ", s2[i].a); - printf("\n"); - - /* - * Create a datatype for s3. - */ - s3_tid = H5Tcreate(H5T_COMPOUND, sizeof(float)); - - status = H5Tinsert(s3_tid, "b_name", 0, H5T_NATIVE_FLOAT); - - /* - * Read field b from s1 dataset. Field in the file is found by its name. - */ - status = H5Dread(dataset, s3_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s3); - - /* - * Display the field - */ - printf("\n"); - printf("Field b : \n"); - for( i = 0; i < LENGTH; i++) printf("%.4f ", s3[i]); - printf("\n"); - - /* - * Release resources - */ - H5Tclose(s2_tid); - H5Tclose(s3_tid); - H5Dclose(dataset); - H5Fclose(file); - - return 0; -} -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -</PRE> The program outputs the following: <PRE> diff --git a/doc/html/Tutor/software.html b/doc/html/Tutor/software.html index 03c0929..c1b94da 100644 --- a/doc/html/Tutor/software.html +++ b/doc/html/Tutor/software.html @@ -42,12 +42,13 @@ For further information regarding HDF5, check the HDF5 home page: <BR> <A HREF="http://hdf.ncsa.uiuc.edu/HDF5/">http://hdf.ncsa.uiuc.edu/HDF5/</A> <P> -<DT><B>FORTRAN90:</B> -<DD> With HDF5-1.4-beta2, support for Fortran 90 is included as part of -the installation of the HDF5 library. Download the HDF5-1.4-beta2 source -code and compile it with the <I>--enable-fortran</I> flag. Read the instructions -in the -<A HREF="ftp://ftp.ncsa.uiuc.edu/HDF/HDF5/hdf5-1.4-beta2/RELEASE">RELEASE</A> +<DT><B>FORTRAN 90:</B> +<DD> With HDF5-1.4.0, support for Fortran 90 is included as part of +the installation of the HDF5 library. The pre-compiled binaries include +the Fortran library. If you need to build from source, download the +HDF5-1.4.0 source code and compile it with the <I>--enable-fortran</I> flag. +Read the instructions in the +<A HREF="ftp://ftp.ncsa.uiuc.edu/HDF/HDF5/current/src/unpacked/RELEASE.txt">RELEASE.txt</A> file for further details. <P> @@ -75,7 +76,7 @@ are included with this tutorial: <!-- <A HREF="helpdesk.mail.html"> --> <A HREF="mailto:hdfhelp@@ncsa.uiuc.edu"> hdfhelp@@ncsa.uiuc.edu</A> -<BR> <H6>Last Modified: January 10, 2001</H6><BR> +<BR> <H6>Last Modified: March 8, 2001</H6><BR> <!-- modified by Barbara Jones - bljones@@ncsa.uiuc.edu --> <!-- modified by Frank Baker - fbaker@@ncsa.uiuc.edu --> </FONT> |