cdm/src/main/java/ucar/nc2/iosp/netcdf3/N3iosp.java
@Override
  public void writeData(Variable v2, Section section, Array values) throws java.io.IOException, InvalidRangeException {
    N3header.Vinfo vinfo = (N3header.Vinfo) v2.getSPobject();
    DataType dataType = v2.getDataType();

    if (v2.isUnlimited()) {
      Range firstRange = section.getRange(0);
      setNumrecs(firstRange.last() + 1);
    }

    if (v2 instanceof Structure) {
      if (!(values instanceof ArrayStructure))
        throw new IllegalArgumentException("writeData for Structure: data must be ArrayStructure");

      if (v2.getRank() == 0)
        throw new IllegalArgumentException("writeData for Structure: must have rank > 0");

      Dimension d = v2.getDimension(0);
      if (!d.isUnlimited())
        throw new IllegalArgumentException("writeData for Structure: must have unlimited dimension");

      writeRecordData((Structure) v2, section, (ArrayStructure) values);

    } else {
      Layout layout = (!v2.isUnlimited()) ? new LayoutRegular(vinfo.begin, v2.getElementSize(), v2.getShape(), section) :
        new LayoutRegularSegmented(vinfo.begin, v2.getElementSize(), header.recsize, v2.getShape(), section);
      writeData(values, layout, dataType);
    }
  }
@Override
  public void writeData(Variable v2, Section section, Array values) throws java.io.IOException, InvalidRangeException {
    N3header.Vinfo vinfo = (N3header.Vinfo) v2.getSPobject();
    DataType dataType = v2.getDataType();

    if (v2.isUnlimited()) {
      Range firstRange = section.getRange(0);
      setNumrecs(firstRange.last() + 1);
    }

    if (v2 instanceof Structure) {
      if (!(values instanceof ArrayStructure))
        throw new IllegalArgumentException("writeData for Structure: data must be ArrayStructure");

      if (v2.getRank() == 0)
        throw new IllegalArgumentException("writeData for Structure: must have rank > 0");

      Dimension d = v2.getDimension(0);
      if (!d.isUnlimited())
        throw new IllegalArgumentException("writeData for Structure: must have unlimited dimension");

      writeRecordData((Structure) v2, section, (ArrayStructure) values);

    } else {
      Layout layout = (!v2.isUnlimited()) ? new LayoutRegular(vinfo.begin, v2.getElementSize(), v2.getShape(), section) :
        new LayoutRegularSegmented(vinfo.begin, v2.getElementSize(), header.recsize, v2.getShape(), section);
      writeData(values, layout, dataType);
    }
  }
@ Override public void writeData ( Variable v2 , Section section , Array values ) throws java . io . IOException , InvalidRangeException { N3header . Vinfo vinfo = ( N3header . Vinfo ) v2 . getSPobject ( ) ; DataType dataType = v2 . getDataType ( ) ; if ( v2 . isUnlimited ( ) ) { Range firstRange = section . getRange ( 0 ) ; setNumrecs ( firstRange . last ( ) + 1 ) ; } if ( v2 instanceof Structure ) { if ( ! ( values instanceof ArrayStructure ) ) throw new IllegalArgumentException ( "writeData for Structure: data must be ArrayStructure" ) ; if ( v2 . getRank ( ) == 0 ) throw new IllegalArgumentException ( "writeData for Structure: must have rank > 0" ) ; Dimension d = v2 . getDimension ( 0 ) ; if ( ! d . isUnlimited ( ) ) throw new IllegalArgumentException ( "writeData for Structure: must have unlimited dimension" ) ; writeRecordData ( ( Structure ) v2 , section , ( ArrayStructure ) values ) ; } else { Layout layout = ( ! v2 . isUnlimited ( ) ) ? new LayoutRegular ( vinfo . begin , v2 . getElementSize ( ) , v2 . getShape ( ) , section ) : new LayoutRegularSegmented ( vinfo . begin , v2 . getElementSize ( ) , header . recsize , v2 . getShape ( ) , section ) ; writeData ( values , layout , dataType ) ; } }
write
write