/*
* read data
*
* read(type1, type2, type3, basetime, member, validtime, plane, element)
* arguments:
* type1, type2, type3, member, plane, element: String
* basetime, validtime: Integer (minuits from 00:00 1 Jan 1980)
* return:
* NArray
*
* e.g.
* NuSDaS.read('_GSMGSLY', 'AASV', 'STD1', 108834840, ' ', 108835200, 'SURF', 'TSC')
*/
VALUE
rb_read(VALUE self,
VALUE type1, VALUE type2, VALUE type3,
VALUE basetime, VALUE member, VALUE validtime,
VALUE plane, VALUE element,
VALUE fmt)
{
GetFullParams;
GetFmt;
int shape[2];
N_SI4 len;
int code;
get_shape(ctype1, ctype2, ctype3,
cbasetime, cmember, cvalidtime,
cplane, celement,
shape);
CreateNArray(cfmt, 2, shape);
len = shape[0]*shape[1];
code = nusdas_read(ctype1, ctype2, ctype3,
&cbasetime, cmember, &cvalidtime,
cplane, celement,
cary->ptr, cfmt, &len);
if (code == len)
return ary;
else if (code > 0)
rb_raise(rb_eRuntimeError, "only %d/%d data were read", code, len);
else if (code == 0)
rb_raise(rb_eRuntimeError, "data have not written");
else if (code == -2)
rb_raise(rb_eRuntimeError, "data are inhibited");
else if (code == -4)
rb_raise(rb_eRuntimeError, "bug");
else if (code == -5)
rb_raise(rb_eRuntimeError, "format is invalid");
else
rb_raise(rb_eRuntimeError, "failed: code=%d", code);
return Qnil;
}