# Usage
# ruby copy.rb filename_from filename_to

def usage
"\n\nUSAGE:\n% ruby #{$0} filename_from filename_to\n"
end

require "numru/netcdf"              # "numru" is Numerical Ruby suite
include NumRu
raise usage if ARGV.length != 2     # error if wrong number of args
filename_from, filename_to = ARGV
from = NetCDF.open(filename_from)   # open a NetCDF dataset(default:readonly)
to = NetCDF.create(filename_to)
from.each_dim{|dim| to.def_dim( dim.name, dim.length_ul0 )} # preserve unlimited
from.each_att{|att| to.put_att( att.name, att.get )}     # copy global atts
from.each_var{|var|
  newvar = to.def_var( var.name, var.ntype, var.dim_names )
  var.each_att{|att| newvar.put_att( att.name, att.get )}
}
to.enddef
from.each_var{|var| to.var(var.name).put(var.get)}
to.close