/***********************************************************/
/*                                                         */
/* sd_crtext.c                                             */
/*    Create an External File                              */
/*                                                         */
/*    Files created:                                       */
/*        ext.hdf                                          */
/*        ext.dat                                          */ 
/***********************************************************/

#include "hdf.h"

#define X 6 
#define Y 3 
#define Z 2 

int main()
{
    int32 fid, sdid, start[3], dims[3], edges[3];
    int32 data[Z][Y][X] = {1, 2, 3, 4, 5, 6,
                           7, 8, 9, 10, 11, 12,
                           13, 14, 15, 16, 17, 18};
    int32 i, stat;

    dims[0] = Z;
    dims[1] = Y;
    dims[2] = X;

    start[0] = start[1] = start[2] = 0;
    edges[0] = 1;
    edges[1] = dims[1];
    edges[2] = dims[2];

    fid = SDstart("ext.hdf", DFACC_CREATE);
    printf("SDstart returns fid: %i\n", fid);

    sdid = SDcreate(fid, "sd1", DFNT_INT32, 3, dims);
    printf("SDcreate returns sdid: %i\n", sdid);

    stat = SDsetexternalfile(sdid, "ext.dat", 0L);
    printf("SDsetexternalfile returns: %i\n", stat);

    for (i=0; i<Z; i++) {
        start[0] = i;
        stat = SDwritedata(sdid, start, NULL, edges, (VOIDP)data);
        printf("SDwritedata returns: %i\n", stat);
    }
    stat = SDendaccess(sdid);
    printf("SDendaccess returns: %i\n", stat);

    stat = SDend(fid);
    printf("SDend returns: %i\n", stat);

}


