# File lib/numru/nusdas.rb, line 770
    def parse_cntl(str,nusdef)
      hash = Hash.new
      @type1 ||= str[0,8]
      @type2 ||= str[8,4]
      @type3 ||= str[12,4]
#      hash[:basetime_str] = str[16,12]
      hash[:basetimes] = get_sint4(str[28,4])
      @meta[:validtime_unit] ||= str[32,4]
      hash[:nmember] = nm = str[36,4].unpack("N")[0]
      hash[:nvalidtime] = nt = str[40,4].unpack("N")[0]
      hash[:nplane] = np = str[44,4].unpack("N")[0]
      hash[:nelement] = ne = str[48,4].unpack("N")[0]
      unless nusdef
        @meta[:projection] ||= str[52,4]
        @meta[:size] ||= str[56,8].unpack("N2")
        @meta[:basepoint] ||= str[64,8].unpack("g2")
        @meta[:basepoint2] ||= str[72,8].unpack("g2")
        @meta[:distance] ||= str[80,8].unpack("g2")
        @meta[:standard] ||= str[88,8].unpack("g2")
        @meta[:standard2] ||= str[96,8].unpack("g2")
        @meta[:others] ||= str[104,8].unpack("g2")
        @meta[:others2] ||= str[112,8].unpack("g2")
        @meta[:value] ||=  str[120,4]
        # str[124,8]
        # str[132,24]
      end
      str = str[156..-1]
      hash[:members] = ary = Array.new(nm)
      nm.times{|i| ary[i] = str[i*4,4] }
      str = str[nm*4..-1]
      hash[:validtimes] = endian( NArray.to_na(str[0,nt*4], NArray::INT) )
      hash[:validtimes] = time_from_basetime(hash[:validtimes], hash[:basetimes], @meta[:validtime_unit])
      str = str[nt*4..-1]
#      hash[:validtimes2] = endian( NArray.to_na(str[0,nt*4], NArray::INT) )
      str = str[nt*4..-1]
      hash[:planes] = ary = Array.new(np)
      np.times{|i| ary[i] = str[i*6,6] }
      str = str[np*6..-1]
      hash[:planes2] = ary = Array.new(np)
      np.times{|i| ary[i] = str[i*6,6] }
      str = str[np*6..-1]
      hash[:elements] = ary = Array.new(ne)
      ne.times{|i| ary[i] = str[i*6,6] }
      return hash
    end