def parse_subc(str,meta)
name = str[0,4]
str = str[4..-1]
hash = Hash.new
case name
when "ETA "
hash[:nplane] = (n=str[0,4].unpack("N")[0])
str = str[4..-1]
hash[:a] = endian( NArray.to_na(str[0,4*(n+1)], NArray::SFLOAT) )
str = str[4*(n+1)..-1]
hash[:b] = endian( NArray.to_na(str[0,4*(n+1)], NArray::SFLOAT) )
str = str[4*(n+1)..-1]
hash[:c] = str[0,2].unpack("g")[0]
when "TDIF"
hash[:tdif] = endian( NArray.to_na(str[0,4*@nmember*@nvalidtime], NArray::INT, @nvalidtime, @nmember) )
str = str[4*@nmember*@nvalidtime..-1]
hash[:tint] = endian( NArray.to_na(str[0,4*@nmember*@nvalidtime], NArray::INT, @nvalidtime, @nmember) )
when "DELT"
hash[:delta] = get_sint4(str[0,4])
when "ZHYB"
hash[:nz] = (n=get_sint4(str[0,4]))
hash[:ptrf] = str[4,4].unpack("g")[0]
hash[:presrf] = str[8,4].unpack("g")[0]
hash[:zrp] = endian( NArray.to_na(str[12,4*n], NArray::SFLOAT) )
str = str[12+4*n..-1]
hash[:zrw] = endian( NArray.to_na(str[0,4*n], NArray::SFLOAT) )
str = str[4*n..-1]
hash[:vctrans_p] = endian( NArray.to_na(str[0,4*n], NArray::SFLOAT) )
str = str[4*n..-1]
hash[:vctrans_w] = endian( NArray.to_na(str[0,4*n], NArray::SFLOAT) )
str = str[4*n..-1]
hash[:dvtrans_p] = endian( NArray.to_na(str[0,4*n], NArray::SFLOAT) )
str = str[4*n..-1]
hash[:dvtrans_w] = endian( NArray.to_na(str[0,4*n], NArray::SFLOAT) )
when "RGAU"
hash[:j] = get_sint4(str[0,4])
hash[:j_start] = get_sint4(str[4,4])
hash[:j_n] = (n=get_sint4(str[8,4]))
hash[:i] = endian( NArray.to_na(str[12,4*n], NArray::INT) )
str = str[12+4*n..-1]
hash[:i_start] = endian( NArray.to_na(str[0,4*n], NArray::INT) )
str = str[4*n..-1]
hash[:i_n] = endian( NArray.to_na(str[0,4*n], NArray::INT) )
str = str[4*n..-1]
hash[:lat] = endian( NArray.to_na(str[0,4*n], NArray::SFLOAT) )
when "RADR"
hash[:info] ||= Array.new
hash[:info].push endian( NArray.to_na(str[0,4*@nmember*@nvalidtime*@nplane*@nelement], NArray::INT, @nelement, @nplane, @nvalidtime, @nmember) )
when "ISPC"
when "RADS"
hash[:mode] = endian( NArray.to_na(str[0,4*@nmember*@nvalidtime*@nplane*@nelementw], NArray::INT, @nelement, @nplane, @nvalidtime, @nmember) )
str = str[4*@nmember*@nvalidtime*@nplane*@nelementw..-1]
hash[:flag] = endian( NArray.to_na(str[0,4*@nmember*@nvalidtime*@nplane*@nelementw], NArray::INT, @nelement, @nplane, @nvalidtime, @nmember) )
str = str[4*@nmember*@nvalidtime*@nplane*@nelementw..-1]
hash[:n10] = endian( NArray.to_na(str[0,4*@nmember*@nvalidtime*@nplane*@nelementw], NArray::INT, @nelement, @nplane, @nvalidtime, @nmember) )
str = str[4*@nmember*@nvalidtime*@nplane*@nelementw..-1]
hash[:b] = endian( NArray.to_na(str[0,4*@nmember*@nvalidtime*@nplane*@nelementw], NArray::INT, @nelement, @nplane, @nvalidtime, @nmember) )
str = str[4*@nmember*@nvalidtime*@nplane*@nelementw..-1]
hash[:beta] = endian( NArray.to_na(str[0,4*@nmember*@nvalidtime*@nplane*@nelementw], NArray::INT, @nelement, @nplane, @nvalidtime, @nmember) )
end
return {name => hash}
end