cdm/src/main/java/ucar/ma2/ArrayStructure.java
public Array getArray(int recno, StructureMembers.Member m) {

    DataType dataType = m.getDataType();
    switch (dataType) {

      case DOUBLE:
        double[] da = getJavaArrayDouble(recno, m);
        return Array.factory(dataType, m.getShape(), da);

      case FLOAT:
        float[] fa = getJavaArrayFloat(recno, m);
        return Array.factory(dataType, m.getShape(), fa);

      case BYTE:
      case UBYTE:
      case ENUM1:
        byte[] ba = getJavaArrayByte(recno, m);
        return Array.factory(dataType, m.getShape(), ba);

      case SHORT:
      case USHORT:
      case ENUM2:
        short[] sa = getJavaArrayShort(recno, m);
        return Array.factory(dataType, m.getShape(), sa);

      case INT:
      case UINT:
      case ENUM4:
        int[] ia = getJavaArrayInt(recno, m);
        return Array.factory(dataType, m.getShape(), ia);

      case ULONG:
      case LONG:
        long[] la = getJavaArrayLong(recno, m);
        return Array.factory(dataType, m.getShape(), la);

      case CHAR:
        char[] ca = getJavaArrayChar(recno, m);
        return Array.factory(dataType, m.getShape(), ca);

      case STRING:
        String[] str = getJavaArrayString(recno, m);
        return Array.factory(dataType, m.getShape(), str);

      case STRUCTURE:
        return getArrayStructure(recno, m);

      case SEQUENCE:
        return getArraySequence(recno, m);

      case OPAQUE:
        return getArrayObject(recno, m);
    }

    throw new RuntimeException("Dont have implemenation for " + dataType);


  }
public Array getArray(int recno, StructureMembers.Member m) {

    DataType dataType = m.getDataType();
    switch (dataType) {

      case DOUBLE:
        double[] da = getJavaArrayDouble(recno, m);
        return Array.factory(dataType, m.getShape(), da);

      case FLOAT:
        float[] fa = getJavaArrayFloat(recno, m);
        return Array.factory(dataType, m.getShape(), fa);

      case BYTE:
      case UBYTE:
      case ENUM1:
        byte[] ba = getJavaArrayByte(recno, m);
        return Array.factory(dataType, m.getShape(), ba);

      case SHORT:
      case USHORT:
      case ENUM2:
        short[] sa = getJavaArrayShort(recno, m);
        return Array.factory(dataType, m.getShape(), sa);

      case INT:
      case UINT:
      case ENUM4:
        int[] ia = getJavaArrayInt(recno, m);
        return Array.factory(dataType, m.getShape(), ia);

      case ULONG:
      case LONG:
        long[] la = getJavaArrayLong(recno, m);
        return Array.factory(dataType, m.getShape(), la);

      case CHAR:
        char[] ca = getJavaArrayChar(recno, m);
        return Array.factory(dataType, m.getShape(), ca);

      case STRING:
        String[] str = getJavaArrayString(recno, m);
        return Array.factory(dataType, m.getShape(), str);

      case STRUCTURE:
        return getArrayStructure(recno, m);

      case SEQUENCE:
        return getArraySequence(recno, m);

      case OPAQUE:
        return getArrayObject(recno, m);
    }

    throw new RuntimeException("Dont have implemenation for " + dataType);


  }
Get member data of any type for a specific record as an Array.
This may avoid the overhead of creating the StructureData object, but is equivilent to
getStructure(recno).getArray( Member m).

@param recno get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();
@param m     get data from this StructureMembers.Member.
@return Array values.