// all the work is here, so can be called recursively
private Array readData(ucar.nc2.Variable v2, long dataPos, int[] origin, int[] shape, int[] stride) throws IOException, InvalidRangeException {
// long length = myRaf.length();
myRaf.seek(dataPos);
Vinfo vi = (Vinfo) v2.getSPobject();
int data_size = vi.vsize;
byte[] data = new byte[data_size];
myRaf.read(data);
Array array = null;