SJ2LIB(3J) — NEWS-OS Programmer’s Manual
名称
sj_open, sj_close, sj_getkan, sj_douoncnt, sj_gakusyuu, sj_touroku, sj_syoukyo, sj_getalpha, sj_getcode, sj_getromaji, sj_set_romajitbl, sj_clear_romajitbl − かな漢字変換ライブラリ
形式
sj_open(usrdic)
char ∗usrdic; /∗ input ∗/
sj_close()
sj_getkan(yomi, bun)
unsigned char ∗yomi; /∗ input ∗/
struct bunsetu ∗bun; /∗ output ∗/
sj_douoncnt(yomi)
unsigned char ∗yomi; /∗ input ∗/
sj_getdouon(yomi, dou)
unsigned char ∗yomi; /∗ input ∗/
struct douon ∗dou; /∗ output ∗/
sj_gakusyuu(id)
struct studyrec ∗id; /∗ input ∗/
sj_touroku(yomi, kanji, code)
unsigned char ∗yomi; /∗ input ∗/
unsigned char ∗kanji; /∗ input ∗/
unsigned char code; /∗ input ∗/
sj_syoukyo(yomi, kanji)
unsigned char ∗yomi; /∗ input ∗/
unsigned char ∗kanji; /∗ input ∗/
sj_getalpha(alpha, out)
unsigned char ∗alpha; /∗ input ∗/
unsigned char ∗out; /∗ output ∗/
sj_getcode(kana, out, flag)
unsigned char ∗kana; /∗ input ∗/
unsigned char ∗out; /∗ output ∗/
int flag; /∗ input ∗/
sj_getromaji(roma, kana)
unsigned char roma; /∗ input ∗/
unsigned char ∗kana; /∗ output ∗/
sj_set_romajitbl(tbl, num)
struct romaji ∗∗tbl; /∗ input ∗/
int num /∗ input ∗/
sj_clear_romajitbl()
解説
辞書の使用開始
sj_open(usrdic)
char ∗usrdic; /∗ ユーザ辞書ファイル名へのポインタ ∗/
メイン辞書である "/usr/sony/dict/sj2main.dic" をリードオンリーで、 また usrdic により指定されたユーザ辞書をリード/ライトでオープンします。 usrdic が NULL の場合には "/usr/sony/dict/sj2usr.dic" をオープンしに行きます。 メイン辞書とユーザ辞書の両方をオープンできたときには 0 を、 どちらか一方でもオープンできなかったときには 0 以外の エラーステータスを返します。 この関数は、かな漢字変換を開始する以前に必ず呼ばなければなりません。 エラーステータスの詳細は以下のとおりです。
0x01メイン辞書はすでにオープンされています。
0x02メイン辞書のオープンに失敗した。
0x04メイン辞書が不正です。メイン辞書はオープンされていない。
0x10ユーザ辞書はすでにオープンされています。
0x20ユーザ辞書のオープンに失敗した。
0x40ユーザ辞書が不正です。ユーザ辞書はオープンされていない。
エラーステータスには、これらのうち少なくとも 1 ビットが立っています。
辞書の使用終了
sj_close()
sj_open によりオープンされたメイン辞書とユーザ辞書をクローズします。メ イン辞書とユーザ辞書の両方をクローズできたときには 0 を、どちらか一 方でもクローズできなかったときには 0 以外のエラーステータスを返します。 この関数は、かな漢字変換ルーチンの使用を終えるときに呼ばなければ なりませんりません。 エラーステータスの詳細は以下のとおりです。
0x01メイン辞書はすでにクローズされています。
0x10ユーザ辞書はすでにクローズされています。
エラーステータスには、これらうち少なくとも 1 ビットが立っています。
文章一括変換
sj_getkan(yomi, bun)
unsigned char ∗yomi; /∗ 読み文字列へのポインタ ∗/
struct bunsetu ∗bun; /∗ 文節構造体へのポインタ ∗/
与えられた読みを文章一括変換し、その結果を返します。struct bunsetu bun[] には各文節に関する情報がセットされ、文節数がリターン値となります。 struct bunsetu は、 <sj2lib.h> で宣言されており以下のような構造です。
struct bunsetu {
int srclen; /∗ 読みの長さ ∗/
int destlen; /∗ 漢字の長さ ∗/
unsigned char ∗srcstr; /∗ 読みへのポインタ ∗/
unsigned char ∗deststr; /∗ 漢字へのポインタ ∗/
};
読みとして与えられる文字列は、半角コードで構成されていることが原則ですが、 シフト JIS 文字列が混じっていてもよい。 ただしその際には、シフト JIS 文字列は漢字に変換されることはありません。 読み文字列はナルで終了していなければいけません。 最大でも 511 バイトを越えてはなりません。 越えた場合は、何もせずに文節数として 0 が返されます。 struct bunsetu bun[] の実体は、 ユーザプログラム側で取らなければなりません。 読みおよび漢字の実体は、ライブラリ側の次のエリアに保存されています。
unsigned charyomiout[512];
unsigned charkanjiout[1024];
同音意義語数の取得
sj_douoncnt(yomi)
unsigned char∗yomi;/∗ 読み文字列へのポインタ ∗/
与えられた読みを文節変換し、同音意義語数を返します。 読みとして与えられる文字列は、半角コードで構成されていることが原則ですが、 シフト JIS 文字列が混じっていても構いません。 ただしその際には、シフト JIS 文字列は漢字に変換されることはありません。 読み文字列はナルで終了していなければなりません。 最大でも 32 バイトを越えてはなりません。 変換した結果、読み文字列で 1 文節が構成されなかったときには、 同音語数は 0 となります。
同音意義語の取得
sj_getdouon(yomi, dou)
unsigned char∗yomi;/∗ 読み文字列へのポインタ ∗/
struct douon∗dou;/∗ 同音意義語構造体へのポインタ ∗/
与えられた読みを文節変換し、同音意義語を与えられた構造体にセットす るとともに、リターン値として同音意義語数を返します。struct douon dou[] には同音意義語に関する情報がセットされる。struct douon は、 <sj2lib.h> で宣言されており、以下のような構造です。
struct douon {
unsigned char ddata[128]; /∗ 同音意義語のデータ ∗/
int dlen; /∗ 同音意義語の長さ ∗/
struct studyrec dcid; /∗ 学習のためのデータ ∗/
};
読みとして与えられる文字列は、半角コードで構成されていることが原則ですが、 シフト JIS 文字列が混じっていても構いません。 ただしその際には、シフト JIS 文字列は漢字に変換されることはありません。 読み文字列はナルで終了していなければなりません。 最大でも 32 バイトを越えてはなりません。 変換した結果、読み文字列で 1 文節が構成されなかったときには、 同音語数は 0 となります。 struct douon dou[] の実体はユーザプログラム側で取らなければなりません。 ddata はナルで終了する文字列です。
文節学習
sj_gakusyuu(id)
struct studyrec ∗id; /∗ 学習のためのデータへのポインタ ∗/
sj_getdouon により得られた dcid を受け取り、文節学習を行います。正常 に学習できたときには 0 を、学習できなかったときには 0 以外を返します。
辞書登録
sj_touroku(yomi, kanji, code)
unsigned char ∗yomi; /∗ 読み文字列へのポインタ ∗/
unsigned char ∗kanji; /∗ 漢字文字列へのポインタ ∗/
unsigned char code; /∗ 品詞コード ∗/
読み文字列、漢字文字列、品詞コードを受け取ることにより、指定された 漢字をユーザ辞書に登録します。登録できたときには 0 を、登録できなかっ たときには 0 以外のエラーステータスを返します。エラーステータスの 詳細は以下のとおりです。
0x80辞書が他のプロセスにロックされています。
0x20同音語ブロックがあふれました。
0x10文法情報が不正です。
0x08漢字文字列が不正です。
0x04読み文字列が不正です。
0x02登録しようとした語はすでに存在しています。
0x01これ以上登録できません。
エラーステータスには、少なくともこれらのうち 1 ビットが立っています。
読みは半角コードで構成され、かつナルで終了していなければなりません。 またその長さは、最大でも 32 文字を越えてはなりません。 漢字は原則としてシフト JIS コードで構成され、 かつナルで終了していなければなりません。 またその長さは、最大でも 64 文字を越えてはなりません。 漢字には半角コードを含ませることも可能ですが、その際にも 全体が 64 文字 を越えてはなりません。品詞コードは、以下のとおりです。
0x01 普通名詞 0x0F 形容動詞
0x02 人名詞(姓) 0x10 サ変動詞
0x03 地名詞 0x11 ザ変動詞
0x04 代名詞 0x12 一段動詞
0x05 人名詞(名) 0x13 カ行五段動詞
0x06 県/区名 0x14 ガ行五段動詞
0x07 数詞 0x15 サ行五段動詞
0x08 接頭語 0x16 タ行五段動詞
0x09 接尾語 0x17 ナ行五段動詞
0x0A 助数詞 0x18 バ行五段動詞
0x0B 副詞 0x19 マ行五段動詞
0x0C 接続詞 0x1A ラ行五段動詞
0x0D 連体詞 0x1B ワ行五段動詞
0x0E 形容詞 0x1C 単漢字
辞書削除
sj_syoukyo(yomi, kanji)
unsigned char ∗yomi; /∗ 読み文字列へのポインタ ∗/
unsigned char ∗kanji; /∗ 漢字文字列へのポインタ ∗/
sj_touroku によりユーザ辞書に登録された漢字を削除します。削除でき たときには 0 を、削除できなかったときには 0 以外のエラーステータスを返します。 エラーステータスの詳細は以下のとおりです。
0x80辞書が他のプロセスにロックされています。
0x08漢字文字列が不正です。
0x04読み文字列が不正です。
0x01削除しようとした語は存在しません。
読みは半角コードで構成され、かつナルで終了していなければなりません。 またその長さは、最大でも 32 文字を越えてはなりません。 漢字は原則としてシフト JIS コードで構成され、かつナルで 終了していなければなりません。 またその長さは、最大でも 64 文字を越えてはなりません。 漢字には半角コードを含ませることも可能ですが、 その際にも全体が 64 文字を越えてはなりません。
全角アルファベット変換
sj_getalpha(alpha, out)
unsigned char ∗alpha; /∗ 半角アルファベットへのポインタ ∗/
unsigned char ∗out; /∗ 全角アルファベットへのポインタ ∗/
与えられた半角アルファベットを全角アルファベットに変換します。 out[] の実体はユーザプログラム側で取らなければなりません。 out[] は、NULL ターミネートされて出力されます。
全角カタカナ/ひらがな変換
sj_getcode(kana, out, flag)
unsigned char ∗kana; /∗ 半角カタカナへのポインタ ∗/
unsigned char ∗out; /∗ 全角文字へのポインタ ∗/
int flag; /∗ カタカナ/ひらがな指定フラグ ∗/
与えられた半角カタカナ文字列を、全角カタカナあるいは全角ひらがなに 変換します。 out[] の実体はユーザプログラム側で取らなければなりません。 out[] は、NULL ターミネートされて出力されます。 flag には、 <sj2lib.h> に定義されている次のどちらかを指定します。
#define HIRAGANA0
#define KATAKANA1
ローマ字かな変換
sj_getromaji(roma, kana)
unsigned char roma; /∗ 半角アルファベット ∗/
unsigned char ∗kana; /∗ 半角カタカナへのポインタ ∗/
与えられた半角アルファベットの roma を 1 文字ずつ内部バッファに入 れてゆき、変換可能ならば、半角カタカナコードへ変換します。 内部バッファの大きさは 15 文字です。 変換できた場合には、変換された内部バッファの文字数を返します。 変換できなければ、0 を返します。 また、変換した場合には、変換された内部バッファの文字は クリアされ、変換されなかった分が内部バッファに残ります。 内部バッファを強制的にクリアするためには、NULL を roma に入れます。 このとき、内部バッファの内容が kana にはいります。 kana[] の実体は、ユーザプログラム側で取らなければなりません。 sj_getromaji の処理できる最大出力文字数は 255 文字です。 内部のローマ字検索テーブルには、全角片仮名が登録されています。 sj_getromaji は、これを半角片仮名に変換して出力します。 全角片仮名は、次のエリアに保存されています。
unsigned charz_kana_buf[512];
ユーザ定義ローマ字綴りの設定
sj_set_romajitbl(tbl, num)
struct romaji ∗∗tbl; /∗ ローマ字綴り構造体ポインタへのポインタ ∗/
int num; /∗ 定義数 ∗/
与えられたユーザ定義ローマ字綴りのテーブルをセットします。 sj_getromaji は、まずこの設定されたテーブルを検索し、なければデフォルトの テーブルを検索します。テーブルが設定されていなければ、 sj_getromaji は、デフォルトのテーブルのみを検索します。 デフォルトのテーブルについては、SJ2 の取扱説明を参照のこと。 struct romaji は、 <sj2lib.h> に定義されている 次のような構造体です。
struct romaji {
unsigned char ∗tuduri; /∗ ローマ字綴りへのポインタ ∗/
unsigned char ∗kana; /∗ 全角カタカナへのポインタ ∗/
};
tuduri は、ローマ字の綴りをあらわす半角アスキーコード文字列 へのポインタです。 kana は、その綴りに対応する全角カタカナ文字列へのポインタです。 sj_getromaji は、検索した全角カタカナを、半角カタカナにして出力します。 tbl には、この構造体へのポインタの配列を渡します。 num には、定義する個数を渡します。
ユーザ定義ローマ字綴りの解除
sj_clear_romajitbl()
sj_set_romajitbl で設定されていた、ローマ字綴りテーブルを解除します。
関連ファイル
/usr/sony/bin/sj2 日本語入力フロントエンドプロセッサ
/usr/sony/dict/sj2main.dic
かな漢字変換メイン辞書
/usr/sony/dict/sj2usr.dic.org
かな漢字変換ユーザ辞書 オリジナル
/usr/sony/dict/sj2usr.dic デフォルトかな漢字変換ユーザ辞書
/usr/sony/include/sj2lib.h かな漢字変換ライブラリ用インクルードファイル
/usr/sony/lib/libsj2lib.a かな漢字変換ライブラリ
/usr/sony/demo/sj2/∗ かな漢字変換ライブラリ 使用法サンプル
関連事項
NEWS-OSRelease 4.2.1R