--- egg-4.0.6+0.20041122cvs.orig/egg.el
+++ egg-4.0.6+0.20041122cvs/egg.el
@@ -30,7 +30,7 @@
 
 ;;; Code:
 
-(defconst egg-version "4.0.6"
+(defconst egg-version "4.0.6+20020909cvs"
   "Version number for this version of Tamago.")
 
 (eval-when-compile
--- egg-4.0.6+0.20041122cvs.orig/eggrc
+++ egg-4.0.6+0.20041122cvs/eggrc
@@ -113,30 +113,31 @@
   (wnn-add-fisys-dict "system/fisd" '("fisd.h") t)
   (wnn-add-fiusr-dict '("fiud") nil t nil)
 
-  (wnn-add-dict "system/kihon.dic"        '("kihon.h")       6 nil t)
-  (wnn-add-dict "system/symbol.dic"       '("symbol.h")      1 nil t)
-  (wnn-add-dict "system/symbol_noat.dic"  '("symbol_noat.h") 1 nil t)
-  (wnn-add-dict "system/tel.dic"          '("tel.h")         1 nil t)
-  (wnn-add-dict "system/zip.dic"          '("zip.h")         1 nil t)
-  (wnn-add-dict "system/tankan.dic"       nil                1 nil nil)
-  (wnn-add-dict "system/tankan2.dic"      nil                1 nil nil)
-  (wnn-add-dict "system/ikeiji.dic"       nil                1 nil nil)
-  (wnn-add-dict "system/rensou.dic"       nil                1 nil nil)
-  (wnn-add-dict '("ud")                   nil               15 t   t)
-
-  (wnn-add-dict "option/jinmei.dic"       '("jinmei.h")      1 nil t)
-  (wnn-add-dict "option/chimei.dic"       '("chimei.h")      1 nil t)
-  (wnn-add-dict "option/address.dic"      '("address.h")     1 nil t)
-  (wnn-add-dict "option/station.dic"      '("station.h")     1 nil t)
-  (wnn-add-dict "option/kana_english.dic" '("kana_english.h")1 nil t)
-  (wnn-add-dict "option/enterprise.dic"   '("enterprise.h")  1 nil t)
-  (wnn-add-dict "option/airport.dic"      '("airport.h")     1 nil t)
-  (wnn-add-dict "option/university.dic"   '("university.h")  1 nil t)
-  (wnn-add-dict "option/zoo.dic"          '("zoo.h")         1 nil t)
+  (wnn-add-dict "system/kihon.dic"       '("kihon.h")       6 nil t)
+  (wnn-add-dict "system/symbol.dic"      '("symbol.h")      1 nil t)
+  (wnn-add-dict "system/symbol_noat.dic" '("symbol_noat.h") 1 nil t)
+  (wnn-add-dict "system/tel.dic"         '("tel.h")         1 nil t)
+  (wnn-add-dict "system/zip.dic"         '("zip.h")         1 nil t)
+  (wnn-add-dict "system/tankan.dic"       nil               1 nil nil)
+  (wnn-add-dict "system/tankan2.dic"      nil               1 nil nil)
+  (wnn-add-dict "system/ikeiji.dic"       nil               1 nil nil)
+  (wnn-add-dict "system/rensou.dic"       nil               1 nil nil)
+  (wnn-add-dict '("ud")                   ""                15 t  t)
+
+  (wnn-add-dict "option/jinmei.dic"       '("jinmei.h")     1 nil t)
+  (wnn-add-dict "option/chimei.dic"       '("chimei.h")     1 nil t)
+  (wnn-add-dict "option/address.dic"      '("address.h")    1 nil t)
+  (wnn-add-dict "option/station.dic"      '("station.h")    1 nil t)
+  (wnn-add-dict "option/kana_english.dic" '("kana_english.h") 1 nil t)
+  (wnn-add-dict "option/enterprise.dic"   '("enterprise.h") 1 nil t)
+  (wnn-add-dict "option/airport.dic"      '("airport.h")    1 nil t)
+  (wnn-add-dict "option/university.dic"	  '("university.h") 1 nil t)
+  (wnn-add-dict "option/zoo.dic"          '("zoo.h")        1 nil t)
   (wnn-add-dict "option/botanical_garden.dic" '("botanical_garden.h") 1 nil t)
-  (wnn-add-dict "option/aquarium.dic"     '("aquarium.h")    1 nil t)
-  (wnn-add-dict "option/conveni.dic"      '("conveni.h")     1 nil t)
-  (wnn-add-dict "option/amusement.dic"    '("amusement.h")   1 nil t)
+  (wnn-add-dict "option/aquarium.dic"     '("aquarium.h")   1 nil t)
+  (wnn-add-dict "option/conveni.dic"      '("conveni.h")    1 nil t)
+  (wnn-add-dict "option/amusement.dic"    '("amusement.h")  1 nil t)
+  (wnn-add-dict "option/computer.dic"     '("computer.h")   1 nil t)
 
   (wnn-set-param  5 10 2 45 0  80 5 1 20  0 400 -100 400   80 200 2 200)
 
@@ -156,14 +157,14 @@
 
   (wnn-set-freq-func-mode 4)
 
-;;  (wnn-set-yosoku-learn t)
-;;  (wnn-set-yosoku-max-disp 10)
-;;  (wnn-set-yosoku-last-is-first t)
-
-;;  (wnn-set-boin-kabusoku t)
-;;  (wnn-set-shiin-choka t)
-;;  (wnn-set-n-choka t)
-;;  (wnn-set-nihongo-kosei t)
+  (wnn-set-yosoku-learn-mode t)
+  (wnn-set-yosoku-max-disp 10)
+  (wnn-set-yosoku-last-is-first-mode t)
+
+  (wnn-set-boin-kabusoku-mode t)
+  (wnn-set-shiin-choka-mode t)
+  (wnn-set-n-choka-mode t)
+  (wnn-set-nihongo-kosei-mode t)
 
   ;; (wnn-set-numeric-mode -12)
   ;; (wnn-set-alphabet-mode -30)
@@ -171,36 +172,150 @@
 
   (wnn-define-environment t)
   (wnn-set-fuzokugo "system/kougo.fzk")
-  (wnn-add-dict "system/kihonR.dic" nil 1 nil nil)
-  (wnn-add-dict "system/telR.dic" nil 1 nil nil)
-  (wnn-add-dict "system/zipR.dic" nil 1 nil nil)
-  (wnn-add-dict "system/tankanR.dic" nil 1 nil nil)
+  (wnn-add-dict "system/kihonR.dic"   nil 1 nil nil)
+  (wnn-add-dict "system/telR.dic"     nil 1 nil nil)
+  (wnn-add-dict "system/zipR.dic"     nil 1 nil nil)
+  (wnn-add-dict "system/tankanR.dic"  nil 1 nil nil)
   (wnn-add-dict "system/tankan2R.dic" nil 1 nil nil)
 
-  (wnn-add-dict "option/jinmeiR.dic" nil 1 nil nil)
-  (wnn-add-dict "option/chimeiR.dic" nil 1 nil nil)
+  (wnn-add-dict "option/jinmeiR.dic"  nil 1 nil nil)
+  (wnn-add-dict "option/chimeiR.dic"  nil 1 nil nil)
   (wnn-add-dict "option/addressR.dic" nil 1 nil nil)
-  ;;(wnn-add-dict "option/stationR.dic" nil 1 nil nil)
-  ;;(wnn-add-dict "option/kana_englishR.dic" nil 1 nil nil)
-  ;;(wnn-add-dict "option/enterpriseR.dic" nil 1 nil nil)
-  ;;(wnn-add-dict "option/airportR.dic" nil 1 nil nil)
-  ;;(wnn-add-dict "option/universityR.dic" nil 1 nil nil)
-  ;;(wnn-add-dict "option/zooR.dic" nil 1 nil nil)
+  ;;(wnn-add-dict "option/stationR.dic"          nil 1 nil nil)
+  ;;(wnn-add-dict "option/kana_englishR.dic"     nil 1 nil nil)
+  ;;(wnn-add-dict "option/enterpriseR.dic"       nil 1 nil nil)
+  ;;(wnn-add-dict "option/airportR.dic"          nil 1 nil nil)
+  ;;(wnn-add-dict "option/universityR.dic"       nil 1 nil nil)
+  ;;(wnn-add-dict "option/zooR.dic"              nil 1 nil nil)
   ;;(wnn-add-dict "option/botanical_gardenR.dic" nil 1 nil nil)
-  ;;(wnn-add-dict "option/aquariumR.dic" nil 1 nil nil)
-  ;;(wnn-add-dict "option/conveniR.dic" nil 1 nil nil)
-  ;;(wnn-add-dict "option/amusementR.dic" nil 1 nil nil)
+  ;;(wnn-add-dict "option/aquariumR.dic"         nil 1 nil nil)
+  ;;(wnn-add-dict "option/conveniR.dic"          nil 1 nil nil)
+  ;;(wnn-add-dict "option/amusementR.dic"        nil 1 nil nil)
+  ;;(wnn-add-dict "option/computerR.dic"         nil 1 nil nil)
 
-  (wnn-add-dict '("ud") nil 15 t t)
+  (wnn-add-dict '("ud") "" 15 t t)
+  (wnn-set-param  2 10 2 45 1 80 5 1 50 -20 400 -10  100  -100 200 0 200))
+
+(defun wnn8-jserver-setup ()
+  (wnn-define-environment nil)
+  (wnn-set-fuzokugo   "system/kougo.fzk")
+  (wnn-add-fisys-dict "system/fisd" '("fisd.h") t)
+  (wnn-add-fiusr-dict '("fiud") nil t nil)
+
+  (wnn-add-dict "system/kihon.dic"          '("kihon.h")          6 nil t)
+  (wnn-add-dict "system/kihon3_4.dic"       '("kihon3_4.h")       6 nil t)
+  (wnn-add-dict "system/symbol.dic"         '("symbol.h")         1 nil t)
+  (wnn-add-dict "system/symbol3_4.dic"      '("symbol3_4.h")      1 nil t)
+  (wnn-add-dict "system/symbol_noat.dic"    '("symbol_noat.h")    1 nil t)
+  (wnn-add-dict "system/symbol3_4_noat.dic" '("symbol3_4_noat.h") 1 nil t)
+  (wnn-add-dict "system/tel.dic"            '("tel.h")            1 nil t)
+  (wnn-add-dict "system/zip.dic"            '("zip.h")            1 nil t)
+  (wnn-add-dict "system/tankan.dic"          nil                   1 nil nil)
+  (wnn-add-dict "system/tankan2.dic"         nil                   1 nil nil)
+  (wnn-add-dict "system/tankan3_4.dic"       nil                   1 nil nil)
+  (wnn-add-dict "system/ikeiji.dic"          nil                   1 nil nil)
+  (wnn-add-dict "system/rensou.dic"          nil                   1 nil nil)
+  (wnn-add-dict '("ud")                      ""                    15 t  t)
+
+  (wnn-add-dict "option/jinmei.dic"       '("jinmei.h")     1 nil t)
+  (wnn-add-dict "option/chimei.dic"       '("chimei.h")     1 nil t)
+  (wnn-add-dict "option/address.dic"      '("address.h")    1 nil t)
+  (wnn-add-dict "option/station.dic"      '("station.h")    1 nil t)
+  (wnn-add-dict "option/kana_english.dic" '("kana_english.h") 1 nil t)
+  (wnn-add-dict "option/enterprise.dic"   '("enterprise.h") 1 nil t)
+  (wnn-add-dict "option/airport.dic"      '("airport.h")    1 nil t)
+  (wnn-add-dict "option/university.dic"	  '("university.h") 1 nil t)
+  (wnn-add-dict "option/zoo.dic"          '("zoo.h")        1 nil t)
+  (wnn-add-dict "option/botanical_garden.dic" '("botanical_garden.h") 1 nil t)
+  (wnn-add-dict "option/aquarium.dic"     '("aquarium.h")   1 nil t)
+  (wnn-add-dict "option/conveni.dic"      '("conveni.h")    1 nil t)
+  (wnn-add-dict "option/amusement.dic"    '("amusement.h")  1 nil t)
+  (wnn-add-dict "option/computer.dic"     '("computer.h")   1 nil t)
+  (wnn-add-dict "option/business.dic"     '("business.h")   1 nil t)
+  (wnn-add-dict "option/food.dic"         '("food.h")       1 nil t)
+  (wnn-add-dict "option/hobby.dic"        '("hobby.h")      1 nil t)
+  (wnn-add-dict "option/mailextend.dic"   '("mailextend.h") 1 nil t)
+  (wnn-add-dict "option/person.dic"       '("person.h")     1 nil t)
+  (wnn-add-dict "option/sports.dic"       '("sports.h")     1 nil t)
+  (wnn-add-dict "option/spot.dic"         '("spot.h")       1 nil t)
+
+  (wnn-set-param  5 10 2 45 0  80 5 1 20  0 400 -100 400   80 200 2 200)
+
+  (wnn-add-notrans-dict '("katakana") 15 t)
+  (wnn-add-bmodify-dict '("bunsetsu") 15 t)
+
+  (wnn-set-last-is-first-mode t)
+  (wnn-set-complex-conv-mode nil)
+  ;; (wnn-set-okuri-flag -1)
+  (wnn-set-prefix-flag 0)
+
+  (wnn-set-okuri-learn-mode t)
+  (wnn-set-prefix-learn-mode t)
+  (wnn-set-suffix-learn-mode t)
+  (wnn-set-common-learn-mode t)
+  (wnn-set-yuragi-mode nil)
+
+  (wnn-set-freq-func-mode 4)
+
+  (wnn-set-yosoku-learn-mode t)
+  (wnn-set-yosoku-max-disp 10)
+  (wnn-set-yosoku-last-is-first-mode t)
+
+  (wnn-set-boin-kabusoku-mode t)
+  (wnn-set-shiin-choka-mode t)
+  (wnn-set-n-choka-mode t)
+  (wnn-set-nihongo-kosei-mode t)
+
+  ;; (wnn-set-numeric-mode -12)
+  ;; (wnn-set-alphabet-mode -30)
+  ;; (wnn-set-symbol-mode -40)
+
+  (wnn-define-environment t)
+  (wnn-set-fuzokugo "system/kougo.fzk")
+  (wnn-add-dict "system/kihonR.dic"     nil 1 nil nil)
+  (wnn-add-dict "system/kihon3_4R.dic"  nil 1 nil nil)
+  (wnn-add-dict "system/telR.dic"       nil 1 nil nil)
+  (wnn-add-dict "system/zipR.dic"       nil 1 nil nil)
+  (wnn-add-dict "system/tankanR.dic"    nil 1 nil nil)
+  (wnn-add-dict "system/tankan2R.dic"   nil 1 nil nil)
+  (wnn-add-dict "system/tankan3_4R.dic" nil 1 nil nil)
+
+  (wnn-add-dict "option/jinmeiR.dic"  nil 1 nil nil)
+  (wnn-add-dict "option/chimeiR.dic"  nil 1 nil nil)
+  (wnn-add-dict "option/addressR.dic" nil 1 nil nil)
+  ;;(wnn-add-dict "option/stationR.dic"          nil 1 nil nil)
+  ;;(wnn-add-dict "option/kana_englishR.dic"     nil 1 nil nil)
+  ;;(wnn-add-dict "option/enterpriseR.dic"       nil 1 nil nil)
+  ;;(wnn-add-dict "option/airportR.dic"          nil 1 nil nil)
+  ;;(wnn-add-dict "option/universityR.dic"       nil 1 nil nil)
+  ;;(wnn-add-dict "option/zooR.dic"              nil 1 nil nil)
+  ;;(wnn-add-dict "option/botanical_gardenR.dic" nil 1 nil nil)
+  ;;(wnn-add-dict "option/aquariumR.dic"         nil 1 nil nil)
+  ;;(wnn-add-dict "option/conveniR.dic"          nil 1 nil nil)
+  ;;(wnn-add-dict "option/amusementR.dic"        nil 1 nil nil)
+  ;;(wnn-add-dict "option/computerR.dic"         nil 1 nil nil)
+  ;;(wnn-add-dict "option/businessR.dic"         nil 1 nil nil)
+  ;;(wnn-add-dict "option/foodR.dic"             nil 1 nil nil)
+  ;;(wnn-add-dict "option/hobbyR.dic"            nil 1 nil nil)
+  ;;(wnn-add-dict "option/mailextendR.dic"       nil 1 nil nil)
+  ;;(wnn-add-dict "option/personR.dic"           nil 1 nil nil)
+  ;;(wnn-add-dict "option/sportsR.dic"           nil 1 nil nil)
+  ;;(wnn-add-dict "option/spotR.dic"             nil 1 nil nil)
+
+  (wnn-add-dict '("ud") "" 15 t t)
   (wnn-set-param  2 10 2 45 1 80 5 1 50 -20 400 -10  100  -100 200 0 200))
 
 (cond
  ((eq egg-backend-type 'wnn)
   (cond
    ((eq wnn-server-type 'jserver)
-    (if wnn-wnn6-server
-	(wnn6-jserver-setup)
-      (wnn4-jserver-setup)))
+    (if wnn-wnn8-server
+	(wnn8-jserver-setup)
+      (if wnn-wnn7-server
+	  (wnn7-jserver-setup)
+	(if wnn-wnn6-server
+	    (wnn6-jserver-setup)
+	  (wnn4-jserver-setup)))))
 
    ((eq wnn-server-type 'cserver)
     (if wnn-use-bixing
--- egg-4.0.6+0.20041122cvs.orig/egg/wnn.el
+++ egg-4.0.6+0.20041122cvs/egg/wnn.el
@@ -384,6 +384,8 @@
 (defsubst wnnenv-set-bmodify (env v)   (aset (wnnenv-get-auto-learn env) 1 v))
 
 (defsubst wnnenv-is-wnn6 (env)         (eq (wnnenv-get-wnn-version env) 'wnn6))
+(defsubst wnnenv-is-wnn7 (env)         (eq (wnnenv-get-wnn-version env) 'wnn7))
+(defsubst wnnenv-is-wnn8 (env)         (eq (wnnenv-get-wnn-version env) 'wnn8))
 
 (defvar wnn-environments nil
   "Environment for Wnn conversion server")
@@ -947,7 +949,7 @@
     (let* ((head (car bunsetsu-list))
 	   (env (wnn-bunsetsu-get-env head)))
       (prog1
-	  (if (wnnenv-is-wnn6 env)
+	  (if (or (wnnenv-is-wnn6 env) (wnnenv-is-wnn7 env) (wnnenv-is-wnn8 env))
 	      (progn
 		(wnn-clear-now-flag bunsetsu-list)
 		(wnn-merge-fi-rel head (cdr bunsetsu-list))
@@ -1263,12 +1265,17 @@
 (defvar wnn-current-envspec-reverse nil)
 (defvar wnn-server-type nil)
 (defvar wnn-wnn6-server nil)
+(defvar wnn-wnn7-server nil)
+(defvar wnn-wnn8-server nil)
 
 (defmacro wnn-envspec-conv-param-name-list ()
   ''(last-is-first complex okuri-learn okuri
      prefix-learn prefix suffix-learn common-learn freq-func
      numeric alphabet symbol yuragi rendaku bunsetsugiri muhenkan
-     fi-relation-learn fi-freq-func))
+     fi-relation-learn fi-freq-func
+     ;; Wnn7/8 funcs bellow
+     yosoku-learn yosoku-max-disp yosoku-last-is-first
+     boin-kabusoku shiin-choka n-choka nihongo-kosei))
 
 (defmacro wnn-envspec-conv-param-length ()
   (length (wnn-envspec-conv-param-name-list)))
@@ -1369,7 +1376,7 @@
 		   `((null (or (eq ,drw nil) (eq ,drw t)
 			       (eq ,drw 0) (eq ,drw 1)
 			       ,@(if dmax
-				     `((and wnn-wnn6-server
+				     `((and (or wnn-wnn6-server wnn-wnn7-server wnn-wnn8-server)
 					    ,@(let ((x `((eq ,drw 2))))
 						(when (>= dmax 3)
 						  (nconc x `((eq ,drw 3))))
@@ -1380,7 +1387,7 @@
 		   `((null (or (eq ,frw nil) (eq ,frw t)
 			       (eq ,frw 0) (eq ,frw 1)
 			       ,@(if fmax
-				     `((and wnn-wnn6-server
+				     `((and (or wnn-wnn6-server wnn-wnn7-server wnn-wnn8-server)
 					    ,@(let ((x `((eq ,frw 2))))
 						(when (>= fmax 3)
 						  (nconc x `((eq ,frw 3))))
@@ -1402,6 +1409,22 @@
   `(or wnn-wnn6-server
        (egg-error ,(format "%s is available only on Wnn6" func))))
 
+(defmacro wnn-wnn7-env-func (func)
+  `(or wnn-wnn7-server
+       (egg-error ,(format "%s is available only on Wnn7" func))))
+
+(defmacro wnn-wnn8-env-func (func)
+  `(or wnn-wnn8-server
+       (egg-error ,(format "%s is available only on Wnn8" func))))
+
+(defmacro wnn-wnn7-and-wnn8-env-func (func)
+  `(or (or wnn-wnn7-server wnn-wnn8-server)
+       (egg-error ,(format "%s is available only on Wnn7/Wnn8" func))))
+
+(defmacro wnn-wnn678-env-func (func)
+  `(or (or wnn-wnn6-server wnn-wnn7-server wnn-wnn8-server)
+       (egg-error ,(format "%s is available only on Wnn6/Wnn7/Wnn8" func))))
+
 (defun wnn-add-dict (dict freq priority dict-rw freq-rw
 		     &optional dict-passwd freq-passwd &rest reverse)
   (wnn-add-dict-param-check wnn-add-dict
@@ -1412,7 +1435,7 @@
 			    dict-passwd freq-passwd reverse))
 
 (defun wnn-add-fisys-dict (dict freq freq-rw &optional freq-passwd)
-  (wnn-wnn6-env-func wnn-add-fisys-dict)
+  (wnn-wnn678-env-func wnn-add-fisys-dict)
   (wnn-add-dict-param-check wnn-add-fisys-dict
 			    dict freq nil nil nil freq-rw 3
 			    nil freq-passwd)
@@ -1421,7 +1444,7 @@
 
 (defun wnn-add-fiusr-dict (dict freq dict-rw freq-rw
 			   &optional dict-passwd freq-passwd)
-  (wnn-wnn6-env-func wnn-add-fiusr-dict)
+  (wnn-wnn678-env-func wnn-add-fiusr-dict)
   (wnn-add-dict-param-check wnn-add-fiusr-dict
 			    dict freq nil dict-rw 3 freq-rw 3
 			    dict-passwd freq-passwd)
@@ -1431,7 +1454,7 @@
 
 (defun wnn-add-notrans-dict (dict priority dict-rw
 			     &optional dict-passwd &rest reverse)
-  (wnn-wnn6-env-func wnn-add-notrans-dict)
+  (wnn-wnn678-env-func wnn-add-notrans-dict)
   (wnn-add-dict-param-check wnn-add-notrans-dict
 			    dict nil priority dict-rw nil nil nil
 			    dict-passwd nil reverse)
@@ -1442,7 +1465,7 @@
 
 (defun wnn-add-bmodify-dict (dict priority dict-rw
 			     &optional dict-passwd &rest reverse)
-  (wnn-wnn6-env-func wnn-add-notrans-dict)
+  (wnn-wnn678-env-func wnn-add-notrans-dict)
   (wnn-add-dict-param-check wnn-add-bmodify-dict
 			    dict nil priority dict-rw nil nil nil
 			    dict-passwd nil reverse)
@@ -1466,22 +1489,22 @@
 		     (t (wnn-arg-type-error ,func)))))
 
 (defun wnn-set-last-is-first-mode (flag)
-  (wnn-wnn6-env-func wnn-set-last-is-first-mode)
+  (wnn-wnn678-env-func wnn-set-last-is-first-mode)
   (wnn-boolean-param-check wnn-set-last-is-first-mode flag)
   (wnn-envspec-set-conv-param-last-is-first wnn-current-envspec flag))
 
 (defun wnn-set-complex-conv-mode (flag)
-  (wnn-wnn6-env-func wnn-set-complex-conv-mode)
+  (wnn-wnn678-env-func wnn-set-complex-conv-mode)
   (wnn-boolean-param-check wnn-set-complex-conv-mode flag)
   (wnn-envspec-set-conv-param-complex wnn-current-envspec flag))
 
 (defun wnn-set-okuri-learn-mode (flag)
-  (wnn-wnn6-env-func wnn-set-okuri-learn-mode)
+  (wnn-wnn678-env-func wnn-set-okuri-learn-mode)
   (wnn-boolean-param-check wnn-set-okuri-learn-mode flag)
   (wnn-envspec-set-conv-param-okuri-learn wnn-current-envspec flag))
 
 (defun wnn-set-okuri-flag (mode)
-  (wnn-wnn6-env-func wnn-set-okuri-flag)
+  (wnn-wnn678-env-func wnn-set-okuri-flag)
   (setq mode (cond ((or (eq mode -1) (eq mode 'regulation)) -1)
 		   ((or (eq mode  0) (eq mode 'no))          0)
 		   ((or (eq mode  1) (eq mode 'yes))         1)
@@ -1489,29 +1512,29 @@
   (wnn-envspec-set-conv-param-okuri wnn-current-envspec mode))
 
 (defun wnn-set-prefix-learn-mode (flag)
-  (wnn-wnn6-env-func wnn-set-prefix-learn-mode)
+  (wnn-wnn678-env-func wnn-set-prefix-learn-mode)
   (wnn-boolean-param-check wnn-set-prefix-learn-mode flag)
   (wnn-envspec-set-conv-param-prefix-learn wnn-current-envspec flag))
 
 (defun wnn-set-prefix-flag (mode)
-  (wnn-wnn6-env-func wnn-set-prefix-flag)
+  (wnn-wnn678-env-func wnn-set-prefix-flag)
   (setq mode (cond ((or (eq mode 0) (eq mode 'hiragana)) 0)
 		   ((or (eq mode 1) (eq mode 'kanji))    1)
 		   (t (wnn-arg-type-error wnn-set-prefix-flag))))
   (wnn-envspec-set-conv-param-prefix wnn-current-envspec mode))
 
 (defun wnn-set-suffix-learn-mode (flag)
-  (wnn-wnn6-env-func wnn-set-suffix-learn-mode)
+  (wnn-wnn678-env-func wnn-set-suffix-learn-mode)
   (wnn-boolean-param-check wnn-set-suffix-learn-mode flag)
   (wnn-envspec-set-conv-param-suffix-learn wnn-current-envspec flag))
 
 (defun wnn-set-common-learn-mode (flag)
-  (wnn-wnn6-env-func wnn-set-common-learn-mode)
+  (wnn-wnn678-env-func wnn-set-common-learn-mode)
   (wnn-boolean-param-check wnn-set-common-learn-mode flag)
   (wnn-envspec-set-conv-param-common-learn wnn-current-envspec flag))
 
 (defun wnn-set-freq-func-mode (mode)
-  (wnn-wnn6-env-func wnn-set-freq-func-mode)
+  (wnn-wnn678-env-func wnn-set-freq-func-mode)
   (setq mode (cond ((or (eq mode 0) (eq mode 'not))    0)
 		   ((or (eq mode 1) (eq mode 'always)) 1)
 		   ((or (eq mode 2) (eq mode 'high))   2)
@@ -1521,7 +1544,7 @@
   (wnn-envspec-set-conv-param-freq-func wnn-current-envspec mode))
 
 (defun wnn-set-numeric-mode (mode)
-  (wnn-wnn6-env-func wnn-set-numeric-mode)
+  (wnn-wnn678-env-func wnn-set-numeric-mode)
   (setq mode (cond ((or (eq mode  -2) (eq mode 'han))       -2)
 		   ((or (eq mode -12) (eq mode 'zen))      -12)
 		   ((or (eq mode -13) (eq mode 'kan))      -13)
@@ -1533,14 +1556,14 @@
   (wnn-envspec-set-conv-param-numeric wnn-current-envspec mode))
 
 (defun wnn-set-alphabet-mode (mode)
-  (wnn-wnn6-env-func wnn-set-alphabet-mode)
+  (wnn-wnn678-env-func wnn-set-alphabet-mode)
   (setq mode (cond ((or (eq mode  -4) (eq mode 'han))  -4)
 		   ((or (eq mode -30) (eq mode 'zen)) -30)
 		   (t (wnn-arg-type-error wnn-set-alphabet-mode))))
   (wnn-envspec-set-conv-param-alphabet wnn-current-envspec mode))
 
 (defun wnn-set-symbol-mode (mode)
-  (wnn-wnn6-env-func wnn-set-symbol-mode)
+  (wnn-wnn678-env-func wnn-set-symbol-mode)
   (setq mode (cond ((or (eq mode  -5) (eq mode 'han))  -5)
 		   ((or (eq mode -40) (eq mode 'jis)) -40)
 		   ((or (eq mode -41) (eq mode 'asc)) -41)
@@ -1548,21 +1571,59 @@
   (wnn-envspec-set-conv-param-symbol wnn-current-envspec mode))
 
 (defun wnn-set-yuragi-mode (flag)
-  (wnn-wnn6-env-func wnn-set-yuragi-mode)
+  (wnn-wnn678-env-func wnn-set-yuragi-mode)
   (wnn-boolean-param-check wnn-set-yuragi-mode flag)
   (wnn-envspec-set-conv-param-yuragi wnn-current-envspec flag))
 
 (defun wnn-set-rendaku-mode (flag)
-  (wnn-wnn6-env-func wnn-set-rendaku-mode)
+  (wnn-wnn678-env-func wnn-set-rendaku-mode)
   (wnn-boolean-param-check wnn-set-rendaku-mode flag)
   (wnn-envspec-set-conv-param-rendaku wnn-current-envspec flag))
+
+;; added for Wnn7
+(defun wnn-set-yosoku-learn-mode (flag)
+  (wnn-wnn7-and-wnn8-env-func wnn-set-yosoku-learn-mode)
+  (wnn-boolean-param-check wnn-set-yosoku-learn-mode flag)
+  (wnn-envspec-set-conv-param-yosoku-learn wnn-current-envspec flag))
+
+(defun wnn-set-yosoku-max-disp (mode)
+  (wnn-wnn7-and-wnn8-env-func wnn-set-yosoku-max-disp)
+  (setq mode (cond ((and (<= mode 10) (>= mode 1) mode))
+		   (t (wnn-arg-type-error wnn-set-yosoku-max-disp))))
+  (wnn-envspec-set-conv-param-yosoku-max-disp wnn-current-envspec mode))
+
+(defun wnn-set-yosoku-last-is-first-mode (flag)
+  (wnn-wnn7-and-wnn8-env-func wnn-set-yosoku-last-is-first-mode)
+  (wnn-boolean-param-check wnn-set-yosoku-last-is-first-mode flag)
+  (wnn-envspec-set-conv-param-yosoku-last-is-first wnn-current-envspec flag))
+
+(defun wnn-set-boin-kabusoku-mode (flag)
+  (wnn-wnn7-and-wnn8-env-func wnn-set-boin-kabusoku-mode)
+  (wnn-boolean-param-check wnn-set-boin-kabusoku-mode flag)
+  (wnn-envspec-set-conv-param-boin-kabusoku wnn-current-envspec flag))
+
+(defun wnn-set-shiin-choka-mode (flag)
+  (wnn-wnn7-and-wnn8-env-func wnn-set-shiin-choka-mode)
+  (wnn-boolean-param-check wnn-set-shiin-choka-mode flag)
+  (wnn-envspec-set-conv-param-shiin-choka wnn-current-envspec flag))
+
+(defun wnn-set-n-choka-mode (flag)
+  (wnn-wnn7-and-wnn8-env-func wnn-set-n-choka-mode)
+  (wnn-boolean-param-check wnn-set-n-choka-mode flag)
+  (wnn-envspec-set-conv-param-n-choka wnn-current-envspec flag))
+
+(defun wnn-set-nihongo-kosei-mode (flag)
+  (wnn-wnn7-and-wnn8-env-func wnn-set-nihongo-kosei-mode)
+  (wnn-boolean-param-check wnn-set-nihongo-kosei-mode flag)
+  (wnn-envspec-set-conv-param-nihongo-kosei wnn-current-envspec flag))
+
 
 (defun wnn-renbunsetsu-conversion (env yomi hinshi fuzokugo v context)
   (let ((result
 	 (cond
 	  ((wnnenv-get-tankan env)
 	   (wnnrpc-tanbunsetsu-conversion env yomi hinshi fuzokugo v))
-	  ((wnnenv-is-wnn6 env)
+	  ((or (wnnenv-is-wnn6 env) (wnnenv-is-wnn7 env) (wnnenv-is-wnn8 env))
 	   (wnnrpc-fi-renbunsetsu-conversion env yomi hinshi fuzokugo v
 					     context))
 	  (t
@@ -1838,6 +1899,8 @@
 						 (eq wnn-server-type 'tserver))
 					     "PZ"))))
 	(fset 'is-wnn6-server (lambda () wnn-wnn6-server))
+	(fset 'is-wnn7-server (lambda () wnn-wnn7-server))
+	(fset 'is-wnn8-server (lambda () wnn-wnn8-server))
 	(fset 'set-wnn-fuzokugo 'wnn-set-fuzokugo)
 	(fset 'add-wnn-dict 'wnn-add-dict)
 	(fset 'set-wnn-param 'wnn-set-param)
@@ -1875,6 +1938,8 @@
 		    wnn-envspec-list nil)
 	      (condition-case err
 		  (let ((wnn-server-type server-type)
+			(wnn-wnn8-server (eq version 'wnn8))
+			(wnn-wnn7-server (eq version 'wnn7))
 			(wnn-wnn6-server (eq version 'wnn6)))
 		    (if wnn-use-v3-eggrc
 			(wnn-v3-eggrc-defines))
@@ -1946,8 +2011,10 @@
 	      (setq cvmask (wnn-envspec-conv-vmask spec)
 		    param (wnn-envspec-conv-param spec))
 	      (if (/= cvmask 0)
-		  (wnnrpc-set-conversion-env-param env cvmask param))))
-	   ((eq version 'wnn6)
+		  (if (or (wnnenv-is-wnn7 env) (wnnenv-is-wnn8 env))
+		      (wnn7rpc-set-conversion-env-param env cvmask param)
+		    (wnnrpc-set-conversion-env-param env cvmask param)))))
+	   ((or (eq version 'wnn6) (eq version 'wnn7) (eq version 'wnn8))
 	    (wnnenv-set-bmodify env (wnn-get-autolearning-dic-mode
 				     env (WNN-const BMODIFY_LEARN)))
 	    (wnnenv-set-notrans env (wnn-get-autolearning-dic-mode
@@ -1955,7 +2022,7 @@
 	  (cond
 	   ((eq (wnnenv-get-server-type env) 'jserver)
 	    (wnn-set-hinshi env 'noun "$BL>;l(B")
-	    (when (wnnenv-is-wnn6 env)
+	    (when (or (wnnenv-is-wnn6 env) (wnnenv-is-wnn7 env) (wnnenv-is-wnn8 env))
 	      (wnn-set-hinshi env 'settou "$B@\F,8l(B($B$*(B)")
 	      (wnn-set-hinshi env 'rendaku "$BO"By(B")))
 	   ((eq (wnnenv-get-server-type env) 'cserver)
@@ -2008,7 +2075,7 @@
       (WNN-const DIC_RDONLY))))
 
 (defun wnn-get-dictionary-list-with-environment (env)
-  (if (wnnenv-is-wnn6 env)
+  (if (or (wnnenv-is-wnn6 env) (wnnenv-is-wnn7 env) (wnnenv-is-wnn8 env))
       (wnnrpc-get-fi-dictionary-list-with-environment env
 						      (WNN-const DIC_NO_TEMPS))
     (wnnrpc-get-dictionary-list-with-environment env)))
--- egg-4.0.6+0.20041122cvs.orig/egg/wnnrpc.el
+++ egg-4.0.6+0.20041122cvs/egg/wnnrpc.el
@@ -126,8 +126,30 @@
 	  ((eq c 'JS_FI_DIC_LIST_ALL)         ?\xf00082)
 	  ((eq c 'JS_FUZOKUGO_LIST)           ?\xf00083)
 
+	  ((eq c 'JS_YOSOKU_INIT)                 ?\xf01001)
+	  ((eq c 'JS_YOSOKU_FREE)                 ?\xf01002)
+	  ((eq c 'JS_YOSOKU_YOSOKU)               ?\xf01003)
+	  ((eq c 'JS_YOSOKU_TOROKU)               ?\xf01004)
+	  ((eq c 'JS_YOSOKU_SELECTED_CAND)        ?\xf01005)
+	  ((eq c 'JS_YOSOKU_DELETE_CAND)          ?\xf01006)
+	  ((eq c 'JS_YOSOKU_CANCEL_LATEST_TOROKU) ?\xf01007)
+	  ((eq c 'JS_YOSOKU_RESET_PRE_YOSOKU)     ?\xf01008)
+	  ((eq c 'JS_YOSOKU_IKKATSU_TOROKU)       ?\xf01009)
+	  ((eq c 'JS_YOSOKU_SAVE_DATALIST)        ?\xf0100a)
+	  ((eq c 'JS_YOSOKU_INIT_TIME_KEYDATA)    ?\xf0100b)
+	  ((eq c 'JS_YOSOKU_INIT_INPUTINFO)       ?\xf0100c)
+	  ((eq c 'JS_YOSOKU_SET_USER_INPUTINFO)   ?\xf0100d)
+	  ((eq c 'JS_YOSOKU_SET_TIMEINFO)         ?\xf0100e)
+	  ((eq c 'JS_YOSOKU_STATUS)               ?\xf0100f)
+	  ((eq c 'JS_YOSOKU_SET_PARAM)            ?\xf01010)
+	  ((eq c 'JS_YOSOKU_IKKATSU_TOROKU_INIT)  ?\xf01011)
+	  ((eq c 'JS_YOSOKU_IKKATSU_TOROKU_END)   ?\xf01012)
+	  ((eq c 'JS_HENKAN_ASSOC)                ?\xf01013)
+
 	  ((eq c 'JLIB_VERSION)       ?\x4003)
 	  ((eq c 'JLIB_VERSION_WNN6)  ?\x4f00)
+	  ((eq c 'JLIB_VERSION_WNN7)  ?\x4f01)
+	  ((eq c 'JLIB_VERSION_WNN8)  ?\x4f02)
 
 	  ((eq c 'WNN_C_LOCAL)            "!")
 	  ((eq c 'WNN_FT_DICT_FILE)         1)
@@ -709,8 +731,10 @@
     (wnnrpc-get-result)))
 
 (defun wnnrpc-open (proc myhostname username)
-  "Open the session.  Return wnn4 or wnn6 on success, NIL on failure."
-  (let ((type-list `((wnn6 . ,(wnn-const JLIB_VERSION_WNN6))
+  "Open the session.  Return wnn4/wnn6/wnn7 or wnn8 on success, NIL on failure."
+  (let ((type-list `((wnn8 . ,(wnn-const JLIB_VERSION_WNN8))
+		     (wnn7 . ,(wnn-const JLIB_VERSION_WNN7))
+		     (wnn6 . ,(wnn-const JLIB_VERSION_WNN6))
 		     (wnn4 . ,(wnn-const JLIB_VERSION))))
 	(result (- (wnn-const WNN_BAD_VERSION)))
 	type version)
@@ -882,6 +906,38 @@
 		 (aref v 15) (aref v 16) (aref v 17))
     (wnnrpc-get-result)))
 
+(defun wnn7rpc-set-conversion-env-param (env mask v)
+  "Set Wnn7 conversion parameter."
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u u i i i i i i i i i i i i i i i i i i i i i i i i)
+                 (wnn-const JS_SET_HENKAN_ENV)
+                 env-id mask
+                 (aref v  0) (aref v  1) (aref v  2) (aref v  3) (aref v  4)
+                 (aref v  5) (aref v  6) (aref v  7) (aref v  8) (aref v  9)
+                 (aref v 10) (aref v 11) (aref v 12) (aref v 13) (aref v 14)
+                 (aref v 15) (aref v 16) (aref v 17) 
+		 ;; (aref v 18)
+		 ;; (aref v 19)
+                 ;; (aref v 20)
+		 ;; (aref v 21)
+		 ;; (aref v 22)
+		 ;; (aref v 23))
+		 0 10 0 0 0 0)
+    (wnnrpc-get-result)))
+
+(defun wnn7rpc-set-conversion-env-param-highbit (env maskh maskl v)
+  "Set Wnn7 conversion parameter (use high bit mask)."
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u w w i i i i i i i i i i i i i i i i i i i i i i i i)
+                 (wnn-const JS_SET_HENKAN_ENV)
+                 env-id maskh maskl
+                 (aref v  0) (aref v  1) (aref v  2) (aref v  3) (aref v  4)
+                 (aref v  5) (aref v  6) (aref v  7) (aref v  8) (aref v  9)
+                 (aref v 10) (aref v 11) (aref v 12) (aref v 13) (aref v 14)
+                 (aref v 15) (aref v 16) (aref v 17) (aref v 18) (aref v 19)
+                 (aref v 20) (aref v 21) (aref v 22) (aref v 23))
+    (wnnrpc-get-result)))
+
 (defun wnnrpc-temporary-dic-loaded (env)
   "Ask to the server whether the temporary dictionary is loaded or not.
 Return positive if loaded, zero if not, negative on failure."
@@ -1239,6 +1295,21 @@
       (vector p1 p2 p3 p4 p5 p6 p7 p8 p9
 	      p10 p11 p12 p13 p14 p15 p16 p17 p18))))
 
+(defun wnn7rpc-get-conversion-env-param (env)
+  ""
+  (wnnrpc-call-with-environment env (p1 p2 p3 p4 p5 p6 p7 p8 p9
+                                    p10 p11 p12 p13 p14 p15 p16 p17 p18
+                                    p19 p20 p21 p22 p23 p24)
+    (comm-format (u u) (wnn-const JS_GET_HENKAN_ENV) env-id)
+    (wnnrpc-get-result
+      (comm-unpack (i i i i i i i i i i i i i i i i i i i i i i i i)
+                   p1 p2 p3 p4 p5 p6 p7 p8 p9
+                   p10 p11 p12 p13 p14 p15 p16
+                   p17 p18 p19 p20 p21 p22 p23 p24)
+      (vector p1 p2 p3 p4 p5 p6 p7 p8 p9
+              p10 p11 p12 p13 p14 p15 p16 p17 p18
+              p19 p20 p21 p22 p23 p24))))
+
 (defun wnnrpc-file-loaded (proc path)
   ""
   (comm-call-with-proc proc (result)
@@ -1708,7 +1779,7 @@
 	       (eq type (wnn-const CWNN_REV_DICT))
 	       (eq type (wnn-const BWNN_REV_DICT))
 	       (eq type (wnn-const WNN_UD_DICT))
-	       (and (wnnenv-is-wnn6 env)
+	       (and (or (wnnenv-is-wnn6 env) (wnnenv-is-wnn7 env) (wnnenv-is-wnn8 env))
 		    (eq type (wnn-const WNN_FI_USER_DICT))))
 	   (wnnrpc-create-and-move-to-client env nil dicname type
 					     comment passwd hpasswd))
@@ -1768,4 +1839,175 @@
 	  (backward-char))
       (buffer-substring 1 (point))))))
 
-;;; egg/wnnrpc.el ends here
+;;; egg/wnnrpc.el ends here.
+
+;;;
+;;; Wnn7 new function:
+;;;   Input Prediction
+;;;
+;;;
+(defun wnn7rpc-yosoku-init (env)
+  "Initialize input prediction function"
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u) (wnn-const JS_YOSOKU_INIT) env-id)
+    (wnnrpc-get-result)))
+
+(defun wnn7rpc-yosoku-free (env)
+  "Free input prediction function area from server."
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u) (wnn-const JS_YOSOKU_FREE) env-id)
+    (wnnrpc-get-result)))
+(defun wnn7rpc-yosoku-yosoku (env moji)
+  "Execute input prediction."
+  (wnnrpc-call-with-environment env (candnum len kouho kouho-list)
+    (comm-format (u u E) (wnn-const JS_YOSOKU_YOSOKU) env-id moji)
+    (wnnrpc-get-result
+      (comm-unpack (i) candnum)
+      (while (> candnum 0)
+       (comm-unpack (u s) len kouho)
+       (setq kouho (decode-coding-string kouho 'euc-jp))
+       (setq kouho-list (nconc kouho-list (list kouho))
+             candnum (1- candnum)))
+      kouho-list)))
+
+(defun wnn7rpc-yosoku-toroku (env bun-suu yosoku-bunsetsu)
+  "Register the input prediction candidate."
+  (wnnrpc-call-with-environment env ()
+    (progn
+      (comm-format (u u u) (wnn-const JS_YOSOKU_TOROKU) env-id bun-suu)
+      (while yosoku-bunsetsu
+       (comm-format (E u E u u)
+                    (aref (car yosoku-bunsetsu) 0)
+                    (aref (car yosoku-bunsetsu) 1)
+                    (aref (car yosoku-bunsetsu) 2)
+                    (aref (car yosoku-bunsetsu) 3)
+                    (aref (car yosoku-bunsetsu) 4))
+       (setq yosoku-bunsetsu (cdr yosoku-bunsetsu))))
+    (wnnrpc-get-result)))
+
+(defun wnn7rpc-yosoku-selected-cand (env selectpos)
+  "Select the input prediction candidate."
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u u) (wnn-const JS_YOSOKU_SELECTED_CAND)
+                env-id selectpos)
+    (wnnrpc-get-result)))
+
+(defun wnn7rpc-yosoku-delete-cand (env selectpos)
+  "Delete the input prediction candidate."
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u u) (wnn-const JS_YOSOKU_DELETE_CAND)
+                env-id selectpos)
+    (wnnrpc-get-result)))
+
+(defun wnn7rpc-yosoku-cancel-latest-toroku (env)
+  "Cancel the latest registered word."
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u) (wnn-const JS_YOSOKU_CANCEL_LATEST_TOROKU) env-id)
+    (wnnrpc-get-result)))
+
+(defun wnn7rpc-yosoku-reset-pre-yosoku (env)
+  "Clear the connection information for the latest registered word."
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u) (wnn-const JS_YOSOKU_RESET_PRE_YOSOKU) env-id)
+    (wnnrpc-get-result)))
+
+(defun wnn7rpc-yosoku-ikkatsu-toroku (env torokustr)
+  "Register the input prediction candidate with phrase analysis."
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u S) (wnn-const JS_YOSOKU_IKKATSU_TOROKU)
+                env-id torokustr)
+    (wnnrpc-get-result)))
+
+(defun wnn7rpc-yosoku-save-datalist (env)
+  "Save the input prediction data in data file."
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u) (wnn-const JS_YOSOKU_SAVE_DATALIST) env-id)
+    (wnnrpc-get-result)))
+
+(defun wnn7rpc-yosoku-init-time-keydata (env)
+  "Initialize input efficiency data about inputed key."
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u) (wnn-const JS_YOSOKU_INIT_TIME_KEYDATA) env-id)
+    (wnnrpc-get-result)))
+
+(defun wnn7rpc-yosoku-init-inputinfo (env)
+  "Initialize input efficiency data about input time."
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u) (wnn-const JS_YOSOKU_INIT_INPUTINFO) env-id)
+    (wnnrpc-get-result)))
+
+(defun wnn7rpc-yosoku-set-user-inputinfo (env allkey userkey yosokuselect)
+  "Set user input information to the input efficiency data."
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u u u) (wnn-const JS_YOSOKU_SET_USER_INPUTINFO)
+                env-id allkey
+                (if yosokuselect
+                    (logior userkey ?\x8000)
+                  userkey))
+    (wnnrpc-get-result)))
+
+(defun wnn7rpc-yosoku-set-timeinfo (env yosokuselect throughyosoku inputtime
+                                      keylen)
+  "Set input-time information to the input efficiency data."
+  (wnnrpc-call-with-environment env ()
+    (comm-format (u u u u u u) (wnn-const JS_YOSOKU_SET_TIMEINFO)
+                env-id yosokuselect throughyosoku inputtime keylen)
+    (wnnrpc-get-result)))
+
+(defun wnn7rpc-yosoku-status (env)
+  "Get input efficiency information."
+  (wnnrpc-call-with-environment env (totalrod totalallkey totaluserkey
+                                    totalrot totalalltime totalusertime
+                                    stmday sthour stmin ltmday lthour ltmin
+                                    totalroykinput totalallykkey nowrod
+                                    nowallkey nowuserkey nowrot nowalltime
+                                    nowusertime timeperonekey)
+    (comm-format (u u) (wnn-const JS_YOSOKU_STATUS) env-id)
+    (comm-unpack (i) totalrod)
+    (if (< totalrod 0)
+       totalrod
+      (comm-unpack (u u u u u u u u u u u u u u u u u u u u)
+                  totalallkey totaluserkey
+                  totalrot totalalltime totalusertime
+                  stmday sthour stmin ltmday lthour ltmin
+                  totalroykinput totalallykkey
+                  nowrod nowallkey nowuserkey nowrot nowalltime nowusertime
+                  timeperonekey)
+      (vector totalrod totalallkey totaluserkey totalrot totalalltime
+             totalusertime stmday sthour stmin ltmday lthour ltmin
+             totalroykinput totalallykkey nowrod nowallkey nowuserkey
+             nowrot nowalltime nowusertime timeperonekey))))
+
+;;;
+;;; Wnn7 new function:
+;;;   association translation
+;;;
+(defun wnn7rpc-assoc-with-data (env yomi hinsi fuzokugo v
+                                  jilihin yomi_org jililen yomilen kanjilen
+                                  real_kanjilen)
+  "Convert YOMI string into Kanji with association."
+  (wnnrpc-call-with-environment env (kanji-length)
+       (comm-format (u u S i S i i u S i i i i) (wnn-const JS_HENKAN_ASSOC)
+                    env-id yomi hinsi fuzokugo
+                    (or v (wnn-const WNN_VECT_KANZEN))
+                    (if v (wnn-const WNN_VECT_KANZEN) (wnn-const WNN_VECT_NO))
+                    jilihin yomi_org jililen yomilen kanjilen real_kanjilen)
+       (wnnrpc-get-result
+        (comm-unpack (u) kanji-length) ; ignore kanji-length
+        (mapcar (lambda (b)
+                  (wnn7-bunsetsu-set-dai-continue b
+                                                  (wnn7-bunsetsu-connect-next b))
+                  (list b))
+                (wnn7rpc-receive-sho-bunsetsu-list env result)))))
+
+
+(defun wnn7rpc-set-henkan-hinshi (env mode nhinshi hlist)
+  ""
+  (wnnrpc-call-with-environment env ()
+     (progn
+       (comm-format (u u i i) (wnn-const JS_SET_HENKAN_HINSI)
+                   env-id mode nhinshi)
+       (while hlist
+        (comm-format (u) (car hlist))
+        (setq hlist (cdr hlist))))
+     (wnnrpc-get-result)))

