printf("         stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0], (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]);
 
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Copyright by The HDF Group.                                               *
 * All rights reserved.                                                      *
 *                                                                           *
 * This file is part of HDF5.  The full HDF5 copyright notice, including     *
 * terms governing use, modification, and redistribution, is contained in    *
 * the COPYING file, which can be found at the root of the source code       *
 * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.  *
 * If you do not have access to either file, you may request a copy from     *
 * help@hdfgroup.org.                                                        *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/************************************************************
  This example illustrates the concept of the virtual dataset.
  Percival use case. Every fifth 10x10 plane in VDS is stored in 
  the corresponding 3D unlimited dataset. 
  EIP: For now we will use finite dimension.
  There are 4 source datasets total.
  This file is intended for use with HDF5 Library version 1.10
 ************************************************************/
/* EIP Add link to the picture */
#include "hdf5.h"
#include <stdio.h>
#include <stdlib.h>
#define FILE         "vds-percival.h5"
#define DATASET      "VDS-Percival"
/* later
#define VDSDIM0       H5S_UNLIMITED 
*/
#define VDSDIM0       40
#define VDSDIM1       10 
#define VDSDIM2       10 
/* later
#define DIM0          H5S_UNLIMITED 
*/
#define DIM0          10 
#define DIM1          10 
#define DIM2          10 
#define RANK          3 
#define PLANE_STRIDE  4
const char *SRC_FILE[] = {
    "a.h5",
    "b.h5",
    "c.h5",
    "d.h5"
};