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


OpenVMS マニュアル


 

OpenVMSマニュアル
ライブラリ

タイトルページ
目次
まえがき
第1章:IMLIBの機能
第2章:アプリケーションの作成
第3章:ACTIONの実行
第4章:アプリケーションの作成方法
第5章:IMLIBライブラリ・ルーチン
第6章:プログラムの開発
付録A :IMLIBがサポートするKEYSYM
付録B :定義済のシンボル
索引
PDF
OpenVMS ホーム
日本語OpenVMS

日本語OpenVMS
IMLIB/OpenVMS ライブラリ・ リファレンス・マニュアル


目次 索引

第 5 章
IMLIBライブラリ・ルーチン

この章では,IMLIB ルーチンについて説明します。

5.1 IMLIBルーチンとは?

IMLIBルーチンとは,ユーザが,かな漢字変換のキー定義をできるようなアプリケーションを作成するためのルーチンです。

5.1.1 プログラミング言語

IMLIBルーチンは,C言語用のインターフェイス(Cバインディング) と,C以外の言語のためのインターフェイス(VMSバインディング)の2つのインターフェイスを提供します。

5.2 PROFILEに関連するルーチン



IMLIBを使うアプリケーションは,まず最初にPROFILEをオープンします(OPEN PROFILE)。 OPEN PROFILEをしなければ,IMLIBの機能を使うことはできません。通常はアプリケーションの起動時にOPEN PROFILEが実行されます。OPEN PROFILEによってPROFILEの情報は,すべてメモリ中に読み込まれます。OPEN PROFILEが返す整数値UNIT IDは,IMLIBの他のルーチンを呼ぶときに使われます。UNIT IDによって複数のコンテキストをコントロールします。

5.2.2 PROFILEのクローズ

アプリケーションは,IMLIBを使い終った後でPROFILEをクローズします (CLOSE PROFILE)。CLOSE PROFILEを行った後は,IMLIBの機能を使うことはできません。通常はアプリケーションの終了時に CLOSE PROFILEを実行します。

5.2.3 PROFILEデータの検索

PROFILEに書かれたデータを検索するには,GET PROFILE DATAを使います。GET PROFILE DATAは,OPEN PROFILEによってメモリ中に読み込まれたデータを検索して,値を返します。

5.2.4 PROFILEデータの変更

アプリケーションがPROFILEに書かれたデータを書き換えるには,SET PROFILE DATAを使います。SET PROFILE DATAは,メモリ中に読み込まれたPROFILEのデータを変更しますので,その後の GET PROFILE DATAは変更の影響を受けます。 WRITE PROFILEによって変更されたメモリ中のデータが,ファイルに書き込まれます。

5.2.5 PROFILEデータの書き込み

SET PROFILE DATAによって変更されたメモリ中の内容をファイルに反映させるには, WRITE PROFILEを使います。WRITE PROFILEを行わなければ,メモリ中の変更は CLOSE PROFILE によって失われます。

5.3 KEYBINDに関連するルーチン



アプリケーションは,SET KEYBINDによってバイナリ形式のKEYBINDファイルの内容をメモリ中に読み込みます。キーに対応するACTIONを得るためには,SET KEYBIND を実行しておかなければなりません。 KEYBIND情報は1つのUNIT IDにつき1つだけ設定できます。すでに,指定したUNIT IDによってKEYBIND情報が読み込まれていた場合には,古い情報は消えて新しいものと置き換わります。

5.3.2 ACTIONを得るルーチン (C バインディング)

Cバインディングでは,GET KEY ACTIONによってキーに定義されたACTION の情報を得ます。GET KEY ACTIONは1度に複数のACTIONを返しますので,アプリケーションは得られたACTIONを1つずつ実行します。

5.3.3 ACTIONを得るルーチン(VMSバインディング)

VMSバインディングでは,ACTIONを得るために2つのルーチンを使います。まず, SET KEYによってキーを通知して,GET ACTIONによってACTIONを得ます。GET ACTIONは1度に1つのACTIONだけしか返さないので,キーに複数のACTIONが定義されているときには,GET ACTIONを繰り返し呼んで,得られたACTIONを1つずつ実行します。

5.3.4 STATEを初期化するルーチン

KEYBINDの内部状態を初期化するには,INIT KEY STATEを使います。INIT KEY STATE によって,STATEは強制的に "initial" に移ります。GET KEY ACTION (Cバインディング) またはGET ACTION(VMSバインディング) によって,KEYBIND情報の中にそのキーが定義されていないというステータスが返されると,アプリケーションが「初期状態」にない場合には,INIT KEY STATEを呼んで KEYBINDの内部状態を初期化します。

5.3.5 直前のSTATEに戻すルーチン

最近のキーまたは最近の複数キーによるACTIONが不正な場合,またはその ACTIONの結果が不正の場合に, RECOVER KEY STATEによって,そのキーまたは複数キーが押される直前のSTATEに戻すことができます。アプリケーションがその時点の状態を保存していれば,その状態から実行を再開できます。

5.4 KEYCODEに関連するルーチン



GET KEYCODEは,キーの名前を示す文字列を,IMLIBが定義するKEYCODEに変換します。個々のキーのキー名については,『ユーザ・キー定義 利用者の手引き』を参照してください。

5.4.2 KEYCODEに対応する文字を返すルーチン

キーの中には,画面に表示される文字に対応するキーがあります。GET CHARACTERは, KEYCODEに対応する文字を得るのに使われます。指定された KEYCODEが,表示される文字に対応しない場合には,GET CHARACTERはそのことを示すステータスを返します。

5.4.3 半角カナのKEYCODE に対応する文字を返すルーチン

半角カナは文字コードセットによって若干コードが変わりますので,GET CHARACTER にコードセット指定のパラメータを加えた MC GET CHARACTER を使って文字を得ます。 MC GET CHARACTER は半角カナの KEY CODE 以外の入力に対しては GET CHARACTER と同じ動作を行います。

5.4.4 キーが発生するコードからKEYCODEへの変換

キーが発生するコードは,ENCODE KEYによってそのキーに対応するKEYCODEに変換されます。ENCODE KEYには数字キーパッド,編集キーパッド,ファンクション・キーが発生するエスケープ・シーケンスも正しく処理します。

5.4.5 KEYSYMからKEYCODEへの変換

DECwindowsのキー入力ルーチンXLookupString (3X11)が返すKEYSYMの値を KEYSYM TO KEYCODEに渡すと,KEYSYMはIMLIBのKEYCODEに変換されます。

5.4.6 半角カナからKEYCODEへの変換

半角カナは文字コードセットによって若干コードが変わりますので, ENCODE KEY にコードセット指定のためのパラメータを加えた MC ENCODE KEY を使って KEYCODE に変換します。 MC ENCODE KEY は半角カナ以外の入力に対しては ENCODE KEY と同じ動作を行います。

5.5 IMLIBルーチン

IMLIBルーチンのインターフェイスと機能についてに個々に示します。




PROFILEを読み込み,そのcontextを示すunit IDを返します。

VMSバインディング

status =IM$OPEN_PROFILE (file, unit_id)


戻り値



OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value



引数



file

OpenVMS 用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor


PROFILEのファイル指定です。このパラメータに長さ0の文字列が渡されると,論理名IM$PROFILEで指定されるファイルが,省略時のPROFILEとして使われます。

unit_id

OpenVMS 用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス write only
受け渡し方 by reference


Unit IDと呼ばれる正の整数値が返されます。Unit IDは以後のIMLIBルーチンの呼び出しで使われます。


Cバインディング

status =ImOpenProfile (file, unit_id)


戻り値

OPEN PROFILEは条件値を返します。


引数



char *file (Input)

PROFILEのファイル指定です。このパラメータにヌル・ポインタ(NULL)が渡されると,論理名IM$PROFILEで指定されるファイルが省略時のPROFILEとして使われます。

int *unit_id (Output)

Unit IDと呼ばれる正の整数値が返されます。Unit IDは以後のIMLIBルーチンの呼び出しで使われます。

説明

OPEN PROFILEはPROFILEファイルを読み込み,メモリ上にPROFILEのデータ構造を作ります。OPEN PROFILEは,このデータ構造を示すためのUnit IDを返します。 Unit IDは,以後のIMLIBルーチンの呼び出しにおいてここで作られたデータ構造を指定するために使われます。

省略時のPROFILEファイルのdefault file specificationは, "IM$DEFAULTS:.DAT"です。したがって,論理名IM$DEFAULTSで指定されるディレクトリ以外のディレクトリに PROFILEファイルがある場合は,論理名IM$PROFILEをディレクトリ名から指定しなければなりません。

論理名IM$DEFAULTSは,通常SYS$LOGIN:とSYS$LIBRARY:を指定しています。


戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__FILNOTFND Error File not found.
IM__CANNOTOPN Error Cannot open.
IM__INSVIRMEM Error Insufficient virtual memory.
IM__SYNTAXERR Error Syntax error.
IM__READERR Error File read error.
IM__INVSTRDES Error Invalid string descriptor.




PROFILEのデータ構造を指定したファイルに書き込みます。

VMSバインディング

status =IM$WRITE_PROFILE (unit_id, file)


戻り値



OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value



引数



unit_id

OpenVMS 用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference


OPEN PROFILEによって返された整数値。

file

OpenVMS 用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor


書き込むPROFILEファイル名の指定。文字列の長さが0のときはOPEN PROFILE で使われたファイルと同じファイル名が使われます。


Cバインディング

status =ImWriteProfile (unit_id, file)


戻り値

WRITE PROFILEは条件値を返します。


引数



int unit_id (Input)

OPEN PROFILEによって返された整数値。

char *file (Input)

書き込むPROFILEファイル名の指定。ヌル・ポインタが(NULL)指定されたときは OPEN PROFILEで使われたファイルと同じファイル名が使われます。

説明

WRITE PROFILEはPROFILEのデータをファイルに書き込みます。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__CANNOTOPN Error Cannot open.
IM__INSVIRMEM Error Insufficient virtual memory.
IM__ILLUNIT Error Illegal unit ID.
IM__WRITEERR Error File write error.
IM__INVSTRDES Error Invalid string descriptor.
IM__INSPRV Error Insufficient priviledge or file protection violation




CLOSE PROFILEはOPEN PROFILEとSET KEYBINDによってメモリ中に読み込まれた内容をすべて廃棄します。

VMSバインディング

status =IM$CLOSE_PROFILE (unit_id)


戻り値



OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value



引数



unit_id

OpenVMS 用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference


OPEN PROFILEによって返された整数値。


Cバインディング

status =ImCloseProfile (unit_id)


戻り値

CLOSE PROFILEは条件値を返します。


引数



int unit_id (Input)

OPEN PROFILEによって返された整数値。

説明

CLOSE PROFILEはPROFILEとKEYBINDの構造をすべて廃棄します。このルーチンは OPEN PROFILEとSET KEYBINDによって割り当てたメモリをすべて解放します。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__ILLUNIT Error Illegal unit ID.




PROFILEのデータを変更または追加します。

VMSバインディング

status =IM$SET_PROFILE_DATA (unit_id, index-string, value-string)


戻り値



OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value



引数



unit_id

OpenVMS 用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference


OPEN PROFILEによって返された整数値。

index-string

OpenVMS 用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor


INDEX文字列。

value-string

OpenVMS 用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor


VALUE文字列。


Cバインディング

status =ImSetProfileData (unit_id, index-string, value-string)


戻り値

SET PROFILE DATAは条件値を返します。


引数



int unit_id (Input)

OPEN PROFILEによって返された整数値。

char *index-string (Input)

INDEX文字列。

char *value-string (Input)

VALUE文字列。

説明

SET PROFILE DATAはPROFILEのデータを変更したり,新しいデータを追加したりするために使われます。指定したINDEX文字列がすでにPROFILEに存在すると,そのVALUEが指定したもので置きかわります。指定したINDEX文字列が存在しない場合には新しいINDEXが作られます。

SET PROFILE DATAは,PROFILEのメモリ上のデータを変更します。変更されたデータをファイルに書き込むにはWRITE PROFILEを使ってください。なお,INDEX 文字列は大文字・小文字を区別しません。


戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__INSVIRMEM Error Insufficient virtual memory.
IM__INVSTRDES Error Invalid string descriptor.
IM__ILLUNIT Error Illegal unit ID.




PROFILEに書かれたデータを検索します。

VMSバインディング

status =IM$GET_PROFILE_DATA (unit_id, index-string, value-string, len)


戻り値



OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value



引数



unit_id

OpenVMS 用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference


OPEN PROFILEによって返された整数値。

index-string

OpenVMS 用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor


INDEX文字列。

value-string

OpenVMS 用法 char string
データ型 char string
アクセス write only
受け渡し方 by descriptor


INDEX文字列に対応する VALUE 文字列。

value-length

OpenVMS 用法 word_unsigned
データ型 word (unsigned)
アクセス write only
受け渡し方 by reference


GET PROFILE DATAによって得られた,VALUE文字列のバイト長。これには,固定長文字列に対するパディング文字は含まれていません。 value-lengthは,value-stringの長さを格納する1ワードのアドレスです。 value-stringがvalue-stringデスクリプタで指定された長さに切り取られた場合は, value-lengthにはその長さが入ります。


Cバインディング

status =ImGetProfileData (unit_id, index-string, value-string, buflen)


戻り値

GET PROFILE DATAは条件値を返します。


引数



int unit_id (Input)

OPEN PROFILEによって返された整数値。

char *index-string (Input)

INDEX文字列。

char *value-string (Output)

VALUE文字列が返されるバッファのアドレス。

int buflen (Input)

VALUE文字列が返されるバッファの長さ。

説明

GET PROFILE DATAは,PROFILEで指定されたデータを検索するために使われます。 INDEX 文字列で指定された PROFILE データが,VALUE 文字列の受け取りバッファに入り切らない場合は,IM__TRUNCATED が返され,途中までの値がバッファに書き込まれます。この状態になったら,アプリケーションはより大きいバッファを作って再度 GET PROFILE DATA を呼ぶ必要があります。なお,INDEX 文字列の大文字・小文字は区別されません。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__INSVIRMEM Error Insufficient virtual memory.
IM__ILLUNIT Error Illegal unit ID.
IM__NOINDEX Error No index.
IM__TRUNCATED Warning String truncated.
IM__INVSTRDES Error Invalid string descriptor.
IM__FATERRLIB Fatal Fatal library internal error.


目次 索引

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