----------------------------------------------------------------------
    def method_missing(mid, *args) #Ql:ostruct.rb
      mname = mid.id2name      #p ['method_missing', mid, mname, args]
      len = args.length
      if mname =~ /=$/ #
	if len != 1
	  raise ArgumentError, "wrong # of arguments (#{len} for 1)", caller(1)
	end
	mname.chop!
	put_char_attribute(mname, args[0])
      elsif args.length == 0
	atr = get_char_attribute(mname)
	if atr == nil	  #raise NameError, "undefined method `#{mname}'", caller(1)
	  return nil
	else
	  return atr
	end
      else	#raise NameError, "undefined method `#{mname}'", caller(1)
	return nil
      end
    end

----------------------------------------------------------------------
    def er_to_char_id_nu() #ċAsBXStringɂ
      str = self.dup
      replace = true
      while replace
	if str =~ /&([-0-9A-Za-z]+);/ #̎QƂ炵݂̂܂B
	  er = $1
	  er.sub!(/^I-/, '') #ŏɂĂI-͂Ƃ̂܂B
	  char_id = er_to_char_id_one(er)
	  str.sub!(/&(I-|)#{er};/, char_id)
	else
	  replace = false
	end
      end
      return str
    end

----------------------------------------------------------------------
