Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sj3_unlockserv(3J) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sj3(1)

sj3serv(1)

sj3dic(1)

SJ3LIB(3J)  —  NEWS-OS Programmer’s Manual

名称

sj3_open, sj3_close, sj3_getkan, sj3_douoncnt, sj3_getdouon, sj3_gakusyuu, sj3_gakusyuu2, sj3_touroku, sj3_syoukyo, sj3_lockserv, sj3_unlockserv, sj3_rkinit, sj3_rkconv, sj3_hantozen, sj3_zentohan − かな漢字変換ライブラリ

形式

#include <sj3lib.h>

sj3_open(hname, uname)
char ∗hname, ∗uname;

sj3_close()

sj3_getkan(yomi, bun, knjbuf, knjsiz)
unsigned char ∗yomi;
struct bunsetu ∗bun;
unsigned char ∗knjbuf;
int knjsiz;

sj3_douoncnt(yomi)
unsigned char ∗yomi;

sj3_getdouon(yomi, dou)
unsigned char ∗yomi;
struct douon ∗dou;

sj3_gakusyuu(id)
struct studyrec ∗id;

sj3_gakusyuu2(yomi1, yomi2, id)
unsigned char ∗yomi1, ∗yomi2;
struct studyrec ∗id;

sj3_touroku(yomi, kanji, code)
unsigned char ∗yomi, ∗kanji;
int code;

sj3_syoukyo(yomi, kanji)
unsigned char ∗yomi, ∗kanji;
int code;

sj3_lockserv()

sj3_unlockserv()

sj3_rkinit(file)
char ∗file;

sj3_rkconv(romaji, kana)
unsigned char ∗romaji, ∗kana;

sj3_hantozen(zen, han)
unsigned char ∗zen, ∗han;

sj3_zentohan(han, zen)
unsigned char ∗han, ∗zen;

解説

仮名漢字変換サーバ sj3serv との接続
sj3_open(hname, uname)
char ∗hname, ∗uname;

ホスト hname 上の仮名漢字変換サーバ sj3serv(1) に、ユーザ名 uname で接続を試みます。 hname が NULL あるいは "unix" へのポインタの場合には AF_UNIX で、 それ以外のときは AF_INET で接続します。 接続できたときにはサーバの辞書ディレクトリのメイン辞書‘sj3main.dic’と ユーザ辞書‘user/uname/private.dic’学習 ファイル‘user/uname/study.dat’をオープンします。 ユーザ辞書、学習ファイルがないときには作成されます。 サーバと正常に接続できたときには 0 を、エラーがあったときには 0 以外の エラーステータスを返します。 この関数は、かな漢字変換を開始する以前に必ず呼ばなければなりません。 エラーステータスの詳細は以下のとおりです。

SJ3_SERVER_DEAD 接続処理中にサーバがダウンしました。

SJ3_CONNECT_ERROR サーバがない、あるいは接続できません。

SJ3_ALREADY_CONNECTED サーバと接続済です。

SJ3_CANNOT_OPEN_MDICT メイン辞書がオープンできません。

SJ3_CANNOT_OPEN_UDICT ユーザ辞書がオープンできません。

SJ3_CANNOT_OPEN_STUDY 学習ファイルがオープンできません。

SJ3_CANNOT_MAKE_UDIR ユーザ用のディレクトリが作成できません。

SJ3_CANNOT_MAKE_UDICT ユーザ辞書が作成できません。

SJ3_CANNOT_MAKE_STUDY 学習ファイルが作成できません。

エラーステータスには、これらうち少なくとも 1 ビットが立っています。 SJ3_SERVER_DEAD あるいは SJ3_CONNECT_ERROR 以外のときは、 サーバと接続されています。

サーバとの接続切り放し
sj3_close()

sj3_open により確立されたサーバとの接続を切り放します。 正常に切り放せたときには 0 が、エラーがあったときには 0 以外の エラーステータスを返します。 この関数は、かな漢字変換ルーチンの使用を終えるときに 呼ばなければなりません。 エラーステータスの詳細は以下のとおりです。

SJ3_SERVER_DEAD 切り放し処理中にサーバがダウンしました。

SJ3_DISCONNECT_ERROR サーバで内部エラーがありました。

SJ3_NOT_CONNECTED サーバと接続されていません。

SJ3_NOT_OPEN_MDICT メイン辞書がオープンされていません。

SJ3_NOT_OPEN_UDICT ユーザ辞書がオープンされていません。

SJ3_NOT_OPEN_STUDY 学習ファイルがオープンされていません。

SJ3_CLOSE_MDICT_ERROR メイン辞書がクローズできません。

SJ3_CLOSE_UDICT_ERROR ユーザ辞書がクローズできません。

SJ3_CLOSE_STUDY_ERROR 学習ファイルがクローズできません。

エラーステータスには、これらうち少なくとも 1 ビットが立っています。 どの場合もサーバとの接続は切れています。

文章一括変換
sj3_getkan(yomi, bun, knjbuf, knjsiz)
unsigned char ∗yomi;
struct bunsetu ∗bun;
unsigned char ∗knjbuf;
int knjsiz;

読み yomi を文章一括変換し、その結果を返します。 長さ knjsiz の領域 knjbuf には結果の文字列が、 そして struct bunsetu bun[] には各文節に関する情報がセットされ、 文節数がリターン値となります。 struct bunsetu は sj3lib.h で宣言されている以下のような構造です。

struct bunsetu {
int             srclen;         /∗ 読みの長さ         ∗/
int             destlen;        /∗ 漢字の長さ         ∗/
unsigned char   ∗srcstr;        /∗ 読みへのポインタ   ∗/
unsigned char   ∗deststr;       /∗ 漢字へのポインタ   ∗/
struct studyrec dcid;           /∗ 学習のためのデータ ∗/
};

漢字文字列を返せない文節が生じたときには、読み文字列へのポインタを srcstr に、 その長さを srclen に持ち、destptr が NULL で destlen が 0 の文節が 生成されます。 読み yomi は、シフト JIS の 2 バイトコードで構成されていることが 原則ですが、1 バイトコードが混じっていてもかまいません。 ただしその際には、1 バイトコードは漢字に変換されることはありません。 読み文字列はナルで終了していなければならず、 最大でも 256 文字を越えてはなりません。 越えた場合は、何もせずに文節数として 0 を返します。 サーバがダウンしたときには −1 を返します。 struct bunsetu bun[] の実体は、ユーザプログラム側で 取らなければなりません。

同音異義語数の取得
sj3_douoncnt(yomi)
unsigned char∗yomi;

読み yomi を文節変換し、同音異義語数を返します。 読み yomi は、シフト JIS 2 バイトコードで構成されていることが 原則ですが、シフト JIS 1 バイトコードが混じっていてもかまいません。 ただしその際には、シフト JIS 1 バイトコードは漢字に変換されることはありません。 読み文字列はナルで終了していなければならず、 最大でも 64 文字を越えてはなりません。 変換した結果、読み文字列で 1 文節が構成されなかったときには、 同音語数は 0 となります。サーバがダウンしたときには −1 を返します。

同音異義語の取得
sj3_getdouon(yomi, dou)
unsigned char∗yomi;
struct douon∗dou;

読み yomi を文節変換し、同音異義語を与えられた構造体に セットするとともに、リターン値として同音異義語数を返します。 struct douon dou[] には同音異義語に関する情報がセットされます。 struct douon は sj3lib.h で宣言されている以下のような構造です。

struct douon {
unsigned char    ddata[256];  /∗ 同音異義語のデータ ∗/
int              dlen;        /∗ 同音異義語の長さ   ∗/
struct studyrec  dcid;        /∗ 学習のためのデータ ∗/
};

読み yomi は、シフト JIS 2 バイトコードで構成されていることが 原則ですが、シフト JIS 1 バイトコードが混じっていてもかまいません。 ただしその際には、シフト JIS 1 バイトコードは漢字に変換されることはありません。 読み文字列はナルで終了していなければならず、 最大でも 64 文字を越えてはなりません。 変換した結果、読み文字列で 1 文節が構成されなかったときには、 同音語数は 0 となります。サーバがダウンしたときには −1 を返します。 struct douon dou[] の実体はユーザプログラム側で取らなければなりません。 ddata はナルで終了する文字列です。

文節学習
sj3_gakusyuu(id)
struct studyrec ∗id;

sj3_getkan や sj3_getdouon により得られた 学習データ id の文節学習を行います。 サーバがダウンしたときには −1 を、正常に学習できたときには 0 を、 学習できなかったときにはそれ以外の値を返します。

文節長学習
sj3_gakusyuu2(yomi1, yomi2, id)
unsigned char ∗yomi1;
unsigned char ∗yomi2;
struct studyrec ∗id;

ナルで終端する読み yomi1 を持つ第1文節と、 ナルで終端する読み yomi2 と学習データ id を持つ第2文節の、 文節長学習を行います。 サーバがダウンしたときには −1 を、正常に学習できたときには 0 を、 学習できなかったときにはそれ以外の値を返します。

単語登録
sj3_touroku(yomi, kanji, code)
unsigned char ∗yomi, ∗kanji;
int code;

読み yomi、漢字 kanji、品詞コード code で 指定された熟語をユーザ辞書に登録します。 サーバがダウンしたときには −1 を、 登録できたときには 0 を、登録できなかったときにはそれ以外の エラーステータスを返します。 エラーステータスの詳細は以下のとおりです。

SJ3_DICT_ERROR 辞書が存在しない、あるいはリードオンリーです。

SJ3_DICT_LOCKED 読み出しのためにロックされた辞書です。

SJ3_BAD_YOMI_STR 読み文字列が不正です。

SJ3_BAD_KANJI_STR 漢字文字列が不正です。

SJ3_BAD_HINSI_CODE 品詞コードが不正です。

SJ3_WORD_EXIST 登録済の熟語です。

SJ3_DOUON_FULL これ以上同音語を登録できません。

SJ3_DICT_FULL これ以上辞書に登録できません。

SJ3_INDEX_FULL これ以上インデックスに登録できません。

SJ3_TOUROKU_FAILED 辞書への登録に失敗しました。

エラーステータスには、少なくともこれらのうち 1 ビットが立っています。 読み yomi は以下のシフト JIS コードで構成され、 かつナルで終了していなければなりません。 またその長さは、最大でも 31 文字を越えてはなりません。

ー#・〒
0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
あいうえおかきくけこさしすせそたちつてとなにぬねの
はひふへほまみむめもや ゆ よらりるれろわゐ ゑをん
がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ
ぁぃぅぇぉ  っ  ゃ ゅ ょゎ
ヴヵヶ

ただし以下の文字は読みの先頭となることが出来ません。

ーをんぁぃぅぇぉっゃゅょゎヵヶ

漢字 kanji は原則としてシフト JIS コードで構成され、 かつナルで終了していなければなりません。 またその長さは、最大でも 32 文字を越えてはなりません。 漢字には半角コードを含ませることも可能ですが、その際にも 全体が 32 文字 を越えてはなりません。 品詞コード code は以下のとおりです。

SJ3_H_NRMNOUN 普通名詞  SJ3_H_ADJVERB 形容動詞 SJ3_H_PRONOUN 代名詞    SJ3_H_SILVERB サ変動詞 SJ3_H_LNAME   苗字      SJ3_H_ZILVERB ザ変動詞 SJ3_H_FNAME   名前      SJ3_H_ONEVERB 一段動詞 SJ3_H_LOCNAME 地名      SJ3_H_KAVERB  カ行五段動詞 SJ3_H_PREFIC  県/区名  SJ3_H_GAVERB  ガ行五段動詞 SJ3_H_RENTAI  連体詞    SJ3_H_SAVERB  サ行五段動詞 SJ3_H_CONJUNC 接続詞    SJ3_H_TAVERB  タ行五段動詞 SJ3_H_SUBNUM  助数詞    SJ3_H_NAVERB  ナ行五段動詞 SJ3_H_NUMERAL 数詞      SJ3_H_BAVERB  バ行五段動詞 SJ3_H_PREFIX  接頭語    SJ3_H_MAVERB  マ行五段動詞 SJ3_H_POSTFIX 接尾語    SJ3_H_RAVERB  ラ行五段動詞 SJ3_H_ADVERB  副詞      SJ3_H_WAVERB  ワ行五段動詞 SJ3_H_ADJECT  形容詞    SJ3_H_SINGLE  単漢字

辞書削除
sj3_syoukyo(yomi, kanji, code)
unsigned char ∗yomi, ∗kanji;
int code;

読み yomi、漢字 kanji、品詞コード code で 指定された熟語をユーザ辞書から削除します。 サーバがダウンしたときには −1 を、削除できたときには 0 を、 削除できなかったときにはそれ以外のエラーステータスを返します。 エラーステータスの詳細は以下のとおりです。

SJ3_DICT_ERROR 辞書が存在しない、あるいはリードオンリーです。

SJ3_DICT_LOCKED 読み出しのためにロックされた辞書です。

SJ3_BAD_YOMI_STR 読み文字列が不正です。

SJ3_BAD_KANJI_STR 漢字文字列が不正です。

SJ3_BAD_HINSI_CODE 品詞コードが不正です。

SJ3_WORD_NOT_EXIST
熟語が存在しません。

SJ3_SYOUKYO_FAILED 辞書からの消去に失敗しました。

エラーステータスには、少なくともこれらのうち 1 ビットが立っています。 読み文字列 yomi、漢字文字列 kanji、品詞コード code は sj3_touroku に準じます。

辞書のロック
sj3_lockserv()

現在オープンしている辞書を、登録削除できないようにロックします。 クライアントが学習IDを取得した後に単語の登録/削除が行われると、 学習IDの不整合を起こすことがあります。それを避けるためには、クライアントが 学習IDを保持している間は、辞書ファイルをロックしなければなりません。

辞書のアンロック
sj3_unlockserv()

sj3_lockserv によってロックされた辞書をアンロックします。 クライアントが辞書をロックしている間は単語の登録削除は出来ないので、 学習IDを保持する必要のなくなったクライアントは、 ただちに辞書をアンロックするべきです。

ローマ字かな変換の初期化処理
sj3_rkinit(file)
char ∗file;

定義ファイル file を読み込んで、ローマ字かな変換テーブルを 生成します。 定義ファイルの各行は以下のとおりです。

「入力ローマ字」 「出力かな」 [「出力ローマ字」]

ローマ字かな変換
sj3_rkconv(romaji, kana)
unsigned char ∗romaji, ∗kana;

文字列 romaji をローマ字かな変換し、 結果をシフト JIS コードで kana に返します。 ローマ字かな変換規則は sj3_rkinit で設定されたものです。 変換できたときには変換された文字列の文字数を、変換できるかどうか 不定のときには 0 を、変換できないときには −1 を返します。 変換できたときには romaji 中の変換された文字は除去され、 変換されなかった文字が残ります。

全角変換
sj3_hantozen(zen, han)
unsigned char ∗zen, ∗han;

与えられた半角文字列 han の中の半角アルファベットを 全角アルファベットに、半角カタカナを全角ひらがなに変換し、 結果を zen に返します。 zen[] の実体はユーザプログラム側で取らなければなりません。

半角変換
sj3_zentohan(han, zen)
unsigned char ∗han, ∗zen;

与えられた全角文字列 zen の中の全角アルファベットを 半角アルファベットに、全角ひらがなあるいは全角カタカナを 半角カタカナに変換し、結果を han に返します。 han[] の実体はユーザプログラム側で取らなければなりません。
 

関連ファイル

/usr/sony/bin/sj3serv かな漢字変換サーバ

/usr/sony/lib/sj3/serverrc かな漢字変換サーバ セットアップファイル

/usr/sony/bin/sj3 日本語入力フロントエンドプロセッサ

/usr/sony/dict/sj3/ かな漢字変換サーバ デフォルト辞書ディレクトリ

    sj3main.dic かな漢字変換メイン辞書

    user/username/private.dic
かな漢字変換ユーザ辞書

    user/username/study.dat かな漢字変換学習ファイル

/usr/sony/include/sj3lib.h かな漢字変換ライブラリ用インクルードファイル

/usr/sony/lib/libsj3lib.a かな漢字変換ライブラリ

/usr/sony/demo/sj3/∗ かな漢字変換ライブラリ 使用法サンプル

関連事項

sj3(1), sj3serv(1), sj3dic(1)

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026