cdm/src/main/java/ucar/nc2/NetcdfFile.java
public Array readSection(String variableSection) throws IOException, InvalidRangeException {
    /* if (unlocked)
      throw new IllegalStateException("File is unlocked - cannot use"); */

    ParsedSectionSpec cer = ParsedSectionSpec.parseVariableSection(this, variableSection);
    if (cer.child == null) {
      return cer.v.read(cer.section);
    }

    if (spi == null)
      return IospHelper.readSection(cer);
    else
      // allow iosp to optimize
      return spi.readSection(cer);
  }
public Array readSection(String variableSection) throws IOException, InvalidRangeException {
    /* if (unlocked)
      throw new IllegalStateException("File is unlocked - cannot use"); */

    ParsedSectionSpec cer = ParsedSectionSpec.parseVariableSection(this, variableSection);
    if (cer.child == null) {
      return cer.v.read(cer.section);
    }

    if (spi == null)
      return IospHelper.readSection(cer);
    else
      // allow iosp to optimize
      return spi.readSection(cer);
  }
Read a variable using the given section specification.
The result is always an array of the type of the innermost variable.
Its shape is the accumulation of all the shapes of its parent structures.

@param variableSection the constraint expression.
@return data requested
@throws IOException           if error
@throws InvalidRangeException if variableSection is invalid
@see <a href="http://www.unidata.ucar.edu/software/netcdf-java/reference/SectionSpecification.html">SectionSpecification</a>