/* filename: wr_test
* usage: wr_test hdf_filename
* purpose: Creates an HDF file (hdf_filename) and then writes data to it.
* perl generated code: init_cr_test_func - create for writing
* write_test_func - write to hdf_filename
* close_wr_test_func - Close access to Vdata and SDdata
* HDF calls: Hopen - Creates the HDF file (hdf_filename)
* Vstart - Allows writing of Vdata
* SDstart - Allows writing of SDdata
* HEprint - Prints out HDF errors
* HEclear - Clears error buffer
* Vend - End Vdata attachment
* SDend - End SDdata attachment
* Hclose - Close the HDF file
**************************************************************************/
#include <stdio.h>
#include <string.h>
#include "structure.h" /* user created file that includes the data structure */
/* HDF include files */
#include "df.h"
#include "mfhdf.h"
void main(argc, argv)
int argc;
char *argv[];
{
int32 hdf_fp, sd_id, an_id; /* HDF file pointer & scientific data ID */
/* and Anotation ID */
struct TestSet testdata; /* TestSet structure defined in structure.h file */
int ii=0, kk, jj;
/*------------------------------------------------------------------*/
if (argc!=2) /* Must have: executable + 1 argument */
{
printf("Usage: wr_test hdf_filename\n");
exit(1);
}
/* **CREATE** hdf file using Hopen */
if ((hdf_fp=Hopen(argv[1], DFACC_CREATE, 0))==FAIL)
{
fprintf(stderr, "Hopen: could not create hdf file\n");
exit(-1);
}
/* allow writing of V data using Vstart */
if (Vstart(hdf_fp)==FAIL)
{
fprintf(stderr,"Vstart: Could not Vstart\n");
exit(-1);
}
/* allow writing of SD data using SDstart */
if ((sd_id=SDstart(argv[1], DFACC_RDWR))==FAIL)
{
fprintf(stderr, "SDstart: could not open hdf file\n");
exit(-1);
}
/*-- Start up the HDF Annotation interface --*/
if((an_id = ANstart(hdf_fp))==FAIL)
{
fprintf(stderr,"Err#0085A.0: Could not ANstart\n");
exit(-1);
}
/* set all values in testdata to zero */
memset(&testdata, 0, sizeof(struct TestSet));
/* create for write using perl generated code */
init_cr_test_func(hdf_fp, sd_id, an_id, "ACE HDF test");
/* Put data into variables */
for(ii=0; ii<5; ii++) {
testdata.sctime_readout = 128*ii+3977070;
testdata.QAC = 0;
testdata.test1[ii] = 2*ii;
for(jj=0; jj<NUM1; jj++)
for(kk=0; kk<NUM2; kk++) {
testdata.test_array[jj][kk] = jj+kk+ii;
}
/* Write data out to HDF file using perl generated code */
if(write_test_func(testdata, -1)==FAIL) {
fprintf(stderr,"write error\n");
/* Reports HDF errors, then clears buffer */
HEprint(stderr,0); HEclear();
}
}
/*--- all done, close HDF file ---*/
/*--------------------------------*/
/* Close access to Vdata and SDdata using perl generated code */
close_wr_test_func();
Vend(hdf_fp); /* End Vdata attachment */
if (SDend(sd_id)==FAIL) /* End SDdata attachment */
{
fprintf(stderr, "SDend: could not close hdf file\n");
exit(-1);
}
if (Hclose(hdf_fp)==FAIL) /* Close HDF file */
{
fprintf(stderr, "Hclose: could not close hdf file\n");
exit(-1);
}
/* exit program normally */
exit(0);
}
Back to ASC Home Page