Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sj_open(3) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

SJ2LIB(3)  —  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
 − かな漢字変換ライブラリ

形式

#include <sj2lib.h>
 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.1C

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