/* This procedure opens and reads ACE MAG snapshot data from a level 1 HDF file. Data records are read into a structure. This procedure was modified from its original source to be called from a Fortran main routine and pass back the data set contents as a structure array. Original source: ACE Science Center Modifications: Sandy Kramer, NASA/GSFC, code 692 - 09/08/97 */ #include #include #include "mag_snapshot.h" #include "df.h" int rd_snap(name, snapdat, snapcnt) char *name; struct MagSnapSet *snapdat; int *snapcnt; { int32 hdf_fp,SD_id; struct MagSnapSet testdata; int ii,retval; printf("ACE MAG snapshot read routine\n"); printf("File name is <%s>\n", name); if (name[0] == ' ') { printf("Usage: rd_hdf hdf_file\n"); return(1); } /* open hdf input file */ if ((hdf_fp=Hopen(name, DFACC_ALL, 0))==FAIL) { fprintf(stderr, "Hopen: could not open hdf file\n"); return(-1); } printf("File successfully opened.\n"); Vstart(hdf_fp); if ((SD_id=SDstart(name, DFACC_WRITE))==FAIL) { fprintf(stderr, "SDstart: could not open hdf file\n"); return(-1); } init_rd_mag_snap(hdf_fp, SD_id); ii=0; while((retval= read_mag_snap(&testdata,ii))!=-1) { snapdat[ii] = testdata; /* printf("%4d sc clock = %8d\n", ii,testdata.sctime_readout); */ ii++; } *snapcnt = ii; /* all done, close HDF file */ close_rd_mag_snap(); Vend(hdf_fp); if (Hclose(hdf_fp)==FAIL) { fprintf(stderr, "Hclose: could not close hdf file\n"); return(-1); } return(0); }