1/* This is part of the netCDF package. Copyright 2009 University
2   Corporation for Atmospheric Research/Unidata See COPYRIGHT file for
3   conditions of use.
4
5   Test HDF5 dataset code, even more. These are not intended to be
6   exhaustive tests, but they use HDF5 the same way that netCDF-4
7   does, so if these tests don't work, than netCDF-4 won't work
8   either.
9*/
10
11#include "h5_err_macros.h"
12#include <hdf5.h>
13#include <H5DSpublic.h>
14
15#define FILE_NAME "tst_h_vars3.h5"
16
17int
18main()
19{
20   printf("\n*** Checking HDF5 variable functions even more.\n");
21
22   printf("*** Checking string variable fill value...");
23   {
24#define NUM_AMENDMENTS 27
25#define NA 2
26#define MAX_LEN 1024
27#define GRP_NAME1 "Constitution"
28#define VAR_NAME1 "Amendments"
29
30      char *data[NA];
31      char amend[NA][MAX_LEN] = {"Congress shall make no law respecting an "
32  "establishment of religion, or prohibiting the "
33  "free exercise thereof; or abridging the freedom "
34  "of speech, or of the press; or the right of the "
35  "people peaceably to assemble, and to petition "
36  "the government for a redress of grievances.",
37  " A well regulated militia, being necessary to the "
38  "security of a free state, the right of the people "
39  "to keep and bear arms, shall not be infringed."};
40      hsize_t dims[1] = {NA};
41      hid_t fileidgrpidspaceidtypeiddatasetidplistid;
42      int i;
43      char fill_value[] = "";
44      char *f1 = fill_value;
45
46      for (i = 0; i < NAi++)
47  data[i] = amend[i];
48
49      /* Open file. */
50      if ((fileid = H5Fcreate(FILE_NAMEH5F_ACC_TRUNCH5P_DEFAULT,
51       H5P_DEFAULT)) < 0) ERR;
52      if ((grpid = H5Gcreate(fileidGRP_NAME1, 0)) < 0) ERR;
53
54      /* Create string type. */
55      if ((typeid =  H5Tcopy(H5T_C_S1)) < 0) ERR;
56      if (H5Tset_size(typeidH5T_VARIABLE) < 0) ERR;
57
58      /* Write an dataset of this type. */
59      if ((spaceid = H5Screate_simple(1, dimsNULL)) < 0) ERR;
60      if ((plistid = H5Pcreate(H5P_DATASET_CREATE)) < 0) ERR;
61      if (H5Pset_fill_value(plistidtypeid, &f1) < 0) ERR;
62      if ((datasetid = H5Dcreate(grpidVAR_NAME1typeid,
63  spaceidplistid)) < 0) ERR;
64      if (H5Dwrite(datasetidtypeidH5S_ALLH5S_ALLH5P_DEFAULT,
65    data) < 0) ERR;
66
67      if (H5Dclose(datasetid) < 0 ||
68   H5Pclose(plistid) < 0 ||
69   H5Tclose(typeid) < 0 ||
70   H5Sclose(spaceid) < 0 ||
71   H5Gclose(grpid) < 0 ||
72   H5Fclose(fileid) < 0) ERR;
73
74   }
75
76   SUMMARIZE_ERR;
77   FINAL_RESULTS;
78}


HyperKWIC - Version 7.20DA executed at 11:37 on 27 Oct 2017 | Polyhedron Solutions - INTERNAL USE | COMMERCIAL (Any O/S) SN 4AKIed