日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第1章:DEC入力サーバライブラリ
   ≫ 概要
   ≫ DIMsクラスのリソース
   ≫ パブリック・ルーチン
   ≫ サンプル・ファイル
PDF
OpenVMS ホーム
日本語 HP DECwindows Motif for OpenVMS

日本語 HP DECwindows Motif for OpenVMS
DEC 入力サーバ・ライブラリ


目次

第 1 章
DEC 入力サーバ・ライブラリ

OpenVMS オペレーティング・システムでは,通信メカニズムに関する詳しい知識がなくても入力サーバを作成できるようなアプリケーション・プログラミング・インタフェース (API) を提供しています。

1.1 用語

名前 説明
IMS
(Input Method Server)
入力サーバ。 XIMライブラリからの入力キー・イベントおよびプロトコルを受信および処理し,前編集と文字列の確定を行うプロセスです。
IMSSL
(Input Method Server Service Layer )
IMSの開発に必要なすべてのAPIが含まれている層です。
DECXimプロトコル 弊社の入力メソッド・プロトコルです。
IMSプログラマ IMSの開発者です。
DIMsウィジェット
(Digital Input Method Server widget)
クライアントがXCreateIC()を実行するときに作成されるウィジェットです。 DIMsウィジェットは,クライアントのXICオブジェクトを処理する基本単位です。
DIMクラス DIMsウィジェットの特性と動作を決定するオブジェクトです。IMSプログラマはこのDIMsクラスにリソースを設定します。



1.2 背景

日本語,中国語,韓国語といったアジア言語環境では文字入力メソッドが複雑なため,文字入力メソッド部分は通常,アプリケーションから独立したサーバ・プロセスとして構成されます。ウィンドウ環境においては,入力サーバ (IMS) がその役割を受け持ちます。

OpenVMS では,入力サーバとクライアント間の通信は R6 XIM プロトコルで行われます。クライアント側では,X ライブラリ (Xlib),X ツールキット・ライブラリ (Xt) および Motif ライブラリ (Xm) を使用することによって R6 XIM プロトコルを扱うことができます。しかし,入力サーバ側にはそのような上位レベルのプログラミング・インタフェースは提供されていませんでした。

1.3 アーキテクチャ



クライアントがXOpenIM()を呼び出すと, IMライブラリとIMSSLとの間の接続が行われます。 IMSSLは接続を行い,IMライブラリ・コンテキストを作成し,クライアントに対するXIMIDを生成します。クライアントは,XCreateIC()を使用して各入力テキスト・フィールドに対応する入力コンテキスト(IC)を作成します。

クライアントが複数の入力フィールドを持っている場合, IMSSLは個々の入力フィールドを管理するためにフィールドと同数のICを作成し,有効なXICIDを生成します。さらに,個々のICに対応するDIMsウィジェットが作成されます。このDIMsウィジェットは, IMSプログラマによってコールバック・ルーチンなどのリソースで設定されるDIMsクラスの動作を継承します。このように, IMSSLのIMおよびICのコンテキストがIMSプログラマに対して透過的になっています。このため, IMSプログラマはそれぞれのDIMsウィジェットを扱い, IMSのスタートアップ時にDIMsクラスのリソースを設定するだけでよいのです。

図 1-1 に,IMSSLの構造と各構成要素の関係を示します。

図 1-1 IMSSLの構造




イベント処理モデルには,FrontEndメソッドおよびBackEndメソッドの2種類があります。

FrontEndメソッドでは,クライアント・ウィンドウの入力イベントは, XサーバによってIMSライブラリとXIMライブラリの両方に直接渡されます。 FrontEndメソッドは,対話式の前編集において優れた性能を提供します。ただしFrontEndモデルでは, IMSが処理するキー・イベントとクライアントが処理する他のイベントとの間で,同期化の問題が発生します。このため,FrontEndメソッドではキー・イベントの損失または重複が発生することがあります。

BackEndメソッドでは,クライアント・ウィンドウの入力イベントは, XIMライブラリに渡したあとIMSに渡されます。各イベントは渡された順でシリアルに処理されるため, XIMライブラリとIMSライブラリとの間で同期化の問題は発生しません。 BackEndメソッドを使用すると,IMライブラリは,すべてのKeyPressとKeyRelease,およびイベント・フロー制御で必要とするその他のイベントをIMSに転送し, IMSと同期をとります。

R6 XIM および R5 DECXimプロトコルは,BackEndモデルのみをサポートしています。

1.3.3 イベント・フロー制御

R6 XIM および R5 DECXimプロトコルは,XIMライブラリとIMS間の通信のために静的イベント・フローおよび動的イベント・フローの 2種類のイベント・フロー・モデルをサポートしています。

静的イベント・フローでは,入力キー・イベントがクライアントからIMSに常に送信されます。

動的イベント・フローでは,処理が必要なキー・イベントだけがクライアントからIMSに送信されます。たとえば,ASCII文字と漢字を組み合わせて入力する場合, ASCII文字はIMSで処理する必要はないのでキー・イベントをIMSに送信する必要はありませんが,漢字を形成するために必要なキー・イベントはIMSに送信しなければなりません。

動的イベント・フロー・モデルをサポートするには,IMSプログラマはトリガ・オン・キー・リストをクライアントに送信する必要があります(詳細は, 第 1.4.8 項 を参照)。クライアントは,トリガ・オン・キー・リストに含まれるキーを受信して初めて,キー・イベントをIMSに送信します。 IMSプログラマがトリガ・オフ・キー・リストを提供している場合,トリガ・オフ・キー・リストに含まれるキーを受信すると,クライアントはIMSへのイベントの送信を停止します。 IMSがトリガ・オフ・キー・リストを提供していない場合, IMSはトリガ・オフ・キーをチェックするためにAPIを呼び出し,イベント・フローを停止します。詳細は, 第 1.5 節DIMsSetEventsForward の項を参照してください。

1.3.4 サーバの命名規則

IMSは,クライアントからの接続のために1つまたは複数のアトムを登録します。クライアントは,ロケール情報と環境変数 XMODIFIERSから特定のIMSと接続しようとします。たとえば,XMODIFIERSが@im=wnnでロケールがja_JP.SJISの場合,クライアントは_XIM_ja_JP.SJIS@wnnというアトムを検索します。このアトムが検出できない場合,クライアントは_XIM_ja_JP@wnnというアトムを探します。このアトムも検出できない場合は,接続が失敗したとみなされます。 XMODIFIERS 環境変数が設定されていない場合,クライアントは_XIM_ja_JP.SJIS@DEC および _XIM_ja_JP@DECを検索します。これらは弊社が提供するIMSのサーバ名です。サーバ名の設定方法についての詳細は, 第 1.4.2 項 を参照してください。

1.3.5 IMSSLの機能

OpenVMSのIMSSLは,IMSの開発者に以下のような機能を提供します。

  • ネットワーク透過性
    R6 XIM および R5 DECXimプロトコルはXプロトコルに基づいており,下位層のネットワーク・プロトコルから独立しています。このため,DEC 入力サーバ・ライブラリによって開発されたIMSは, TCP/IP,DECnetなど,どのようなネットワーク上でも動作します。

  • プロトコルと転送メカニズムの透過性
    IMSプログラマには, R6 XIM および R5 DECXimプロトコルのフォーマットや,転送メカニズムの動作方法についての知識は不要です。

  • 信頼性
    R6 XIM および R5 DECXimプロトコルは,より信頼性の高いBackEndメソッドをサポートしています。詳細については, 第 1.3.2 項 を参照してください。

  • イベント・フロー制御
    R6 XIM および R5 DECXimプロトコルは,静的フロー・モデルおよび動的フロー・モデルの両方をサポートしています。詳細は, 第 1.3.3 項 を参照してください。

  • エラー検出
    IMSSLは,クライアントで発生したエラーをチェックし,クライアントにエラーを返します。たとえば,クライアントが無効なXIC値をIMSに送信した場合や, XNClientWindowのような必須の属性を省略してXCreateIC()を呼び出した場合などです。

  • データ変換
    IMSSLは,すべてのデータ型変換を実行します。また,IMSの要求に応じてプロトコル・フォーマットからデータ構造への,あるいはその逆の変換を行います。

  • 拡張XIC属性およびXIM属性
    R6 XIM および R5 DECXimは,拡張XIC属性とXIM属性のメカニズムをサポートしています。詳細については, 第 1.4.4 項 および 第 1.4.5 項 を参照してください。

  • 簡単なプログラム・インタフェース
    IMSSLは,便利な関数とコールバック・ルーチンをIMSプログラマに提供します。 IMSプログラマは,IMコンテキストやICコンテキストを処理および管理する代わりに, DIMsウィジェットを処理するだけでよいのです。


目次

© 2011 Hewlett-Packard Development Company, L.P.