+;; (defun sj3-open (hostname-list)
+;; "Establish the connection to SJ3 server. Return process object."
+;; (let* ((buf (generate-new-buffer " *SJ3*"))
+;; (msg-form "SJ3: connecting to sj3serv at %s...")
+;; hostname proc result msg)
+;; (save-excursion
+;; (set-buffer buf)
+;; (erase-buffer)
+;; (buffer-disable-undo)
+;; (setq enable-multibyte-characters nil))
+;; (cond
+;; ((null hostname-list)
+;; (setq hostname-list '("localhost")))
+;; ((null (listp hostname-list))
+;; (setq hostname-list (list hostname-list))))
+;; (while (and hostname-list (null proc))
+;; (setq hostname (car hostname-list)
+;; hostname-list (cdr hostname-list))
+;; (message msg-form hostname)
+;; (sit-for 0)
+;; (condition-case result
+;; (setq proc (open-network-stream "SJ3" buf hostname sj3-server-port))
+;; (error nil))
+;; (if proc
+;; (progn
+;; (process-kill-without-query proc)
+;; (set-process-coding-system proc 'no-conversion 'no-conversion)
+;; (set-marker-insertion-type (process-mark proc) t)
+;; ;; Initialize dictionaries
+;; (setq sj3-sys-dict-list nil)
+;; (setq sj3-user-dict-list nil)
+;; (setq result (sj3rpc-open proc (system-name) (user-login-name)))
+;; (if (< result 0)
+;; (progn
+;; (delete-process proc)
+;; (setq proc nil
+;; msg (format "Can't open SJ3 session (%s): %s"
+;; hostname msg)))
+;; (setq result (sj3rpc-get-stdy-size proc))
+;; (if (< result 0)
+;; (progn
+;; (delete-process proc)
+;; (setq proc nil
+;; msg (format "Can't get SJ3 STDYSIZE: %s"
+;; (sj3rpc-get-error-message (- result)))))
+;; (setq sj3-stdy-size result))))))
+;; (if proc
+;; (progn
+;; (setq sj3-open-message (format (concat msg-form "done") hostname))
+;; proc)
+;; (kill-buffer buf)
+;; (error "%s" (or msg "no sj3serv available")))))
+