summaryrefslogtreecommitdiffstats
path: root/doc/html/Tutor/compound.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/html/Tutor/compound.html')
-rw-r--r--doc/html/Tutor/compound.html155
1 files changed, 3 insertions, 152 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 &lt; 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 &lt; LENGTH; i++) printf("%.4f ", s2[i].c);
- printf("\n");
-
- printf("\n");
- printf("Field a : \n");
- for( i = 0; i &lt; 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 &lt; 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>