/* * 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; }