# 日本語 Compaq OpenVMS
日本語ライブラリ 利用者の手引き

前へ | 次へ | 目次 | 索引

# 第 3 章
汎用ライブラリ

汎用ライブラリ とは，プログラミング言語から標準的なインタフェースで利用できる日本語処理ルーチン群です。

この章では，汎用ライブラリの次の項目について説明します。

> 汎用ライブラリ・ルーチン一覧
> 日本語文字列操作ルーチン
> 文字列変換ルーチン
> 漢字変換入力ルーチン
> その他のルーチン

# 3.1 汎用ライブラリ・ルーチン一覧

日本語文字列操作ルーチン

日本語データを扱うための基本的なルーチン群です。 1 バイト /2 バイトの文字コードを正しく取り扱うために使用します。

JLB$NOF_BYTE | 文字列が占めるバイト数の入手
JLB$NOF_CHAR | 文字列に含まれる文字数の入手
JLB$POS_CURR | 現在の文字の文字位置の入手
JLB$POS_NEXT | 次の文字の文字位置の入手
JLB$POS_PREV | 前の文字の文字位置の入手
JLB$POSITION | 文字列の検索
JLB$STR_EQUAL | 英大文字/小文字，全角/半角， ひらがな/カタカナ変換による文字列の比較
JLB$STR_START | 英大文字/小文字，全角/半角， ひらがな/カタカナ変換による文字列の比較
JLB$STR_SEARCH | 英大文字/小文字，全角/半角， ひらがな/カタカナ変換による文字列の検索
JLB$TRIM | 文字列の後の空白の切り捨て
JLB$TRUNC | 文字列の切り捨て
JLB$LOCC | 文字の検索
JLB$SKPC | 文字の飛越し
JLB$RCHAR | 文字列からの文字の取り出し
JLB$RNEXT | 文字列からの文字の取り出し， およびインデックスの更新
JLB$WCHAR | 文字列への文字の書込み
JLB$WNEXT | 文字列への文字の書込み， およびインデックスの更新

文字列変換ルーチン

文字列の各種変換を行うルーチン群です。

JLB$TRA_ROM_HALF | ローマ文字全角から半角への変換
JLB$TRA_ROM_FULL | ローマ文字半角から全角への変換
JLB$TRA_ROM_SIZE | ローマ文字全角/半角の相互変換
JLB$TRA_ROM_LOWER | 英文字半角/全角の小文字への変換
JLB$TRA_ROM_UPPER | 英文字半角/全角の大文字への変換
JLB$TRA_ROM_CASE | 英文字全角/半角の大文字/小文字の相互変換
JLB$TRA_ROM_KANA | ローマ字から全角ひらがな/カタカナへの変換
JLB$TRA_KANA_HIRA | 全角カタカナから全角ひらがなへの変換
JLB$TRA_KANA_KATA | 全角ひらがなから全角カタカナへの変換
JLB$TRA_KANA_KANA | 全角ひらがな/全角カタカナの相互変換
JLB$TRA_KANA_DAKU | 全角ひらがな/カタカナの濁点/半濁点処理
JLB$TRA_KANA_HALF | 全角ひらがな/カタカナから半角カタカナへの変換
JLB$TRA_KANA_FULL | 半角カタカナから全角ひらがな/カタカナへの変換
JLB$TRA_SYMBOL | 記号変換

漢字変換入力ルーチン

ローマ字・かな漢字変換入力を簡単に行うためのルーチン群です。

JLB$GET_COMMAND | LIB$GET_COMMAND のローマ字・かな漢字変換入力版
JLB$GET_INPUT | LIB$GET_INPUT のローマ字・かな漢字変換入力版

日本語ファイル名ルーチン

JLB$RMS_USER_VTF7 | 指定されたコードセットから VTF-7 コードセットへ日本語ファイル名の文字コード変換を行う。
JLB$RMS_VTF7_USER | VTF-7 コードセットから指定されたコードセットへ日本語ファイル名の文字コード変換を行う。
JSY$RMS_GET_ENCODING | 現在のファイル名コンバータの名前を取得する
JSY$RMS_LIST_ENCODING | システムにインストールされているファイル名コンバータの名前を取得する
JSY$RMS_SET_ENCODING | RMS ファイル名コンバータを有効または無効にする
JSY$RMS_USER_VTF7 | 指定されたコードセットから VTF-7 コードセットへ日本語ファイル名の文字コード変換を行う。
JSY$RMS_VTF7_USER | VTF-7 コードセットから指定されたコードセットへ日本語ファイル名の文字コード変換を行う。

その他のルーチン

JLB$DATE_TIME | 日付けおよび時間の入手
JLB$DEV_KANJI | 漢字端末かどうかのチェック
JLB$DEV_KANJI_IN | 漢字入力端末かどうかのチェック

# 3.2 日本語文字列操作ルーチン

日本語文字列操作ルーチンは，日本語データを扱うための基本的なルーチン群です。 1 バイト /2 バイトの文字コードを正しく取り扱うために使用します。

JLB$NOF_BYTE

> 文字列が占めるバイト数の入手
> 文字列内の指定された文字数によって占められるバイト数を返します。

＜形式＞

> nof-byte = JLB$NOF_BYTE ( src-str , nof-char )

＜引数＞

src-str
JLB usage | 入力文字列
access | 入力のみ
mechanism | Descriptor渡し
nof_char
JLB usage | 文字数
type | Longword
access | 入力のみ
mechanism | Reference渡し

＜戻り値＞

nof_byte | バイト数

例)

    #include <stdio.h>
    #include <descrip.h>
    #include <string.h>

    main()
    {
        struct dsc$descriptor_s     src_str;
        int         nof_byte;
        extern int  jlb$nof_byte();
        char        src_str_body[] = "日本語RTL";
        int         nof_char = 4;

        src_str.dsc$b_class = DSC$K_CLASS_S;
        src_str.dsc$b_dtype = DSC$K_DTYPE_T;
        src_str.dsc$w_length = strlen( src_str_body );
        src_str.dsc$a_pointer = src_str_body;

        nof_byte = jlb$nof_byte( &src_str, &nof_char );

        printf( "文字列 :\"%s\"    文字数 :%d\n 結果 :%d\n",
            src_str_body, nof_char, nof_byte );
    }

JLB$NOF_CHAR

> 文字列が含まれる文字数の入手
> 文字列全体に含まれる文字数を返します。

＜形式＞

> nof-char = JLB$NOF_CHAR ( src-str )

＜引数＞

src-str
JLB usage | 入力文字列
access | 入力のみ
mechanism | Descriptor渡し

＜戻り値＞

nof-char | 文字数

JLB$POS_CURR

> 現在の文字の文字位置の入手
> 指定された文字位置が，文字の1バイト目，2バイト目のどちらを指しているかにかかわらず，常に現在指している文字の1バイト目の文字位置を返します。

＜形式＞

> index = JLB$POS_CURR ( src-str, curr-index )

＜引数＞

src-str
JLB usage | 入力文字列
access | 入力のみ
mechanism | Descriptor渡し
curr-index
JLB usage | 現在の文字位置
type | Longword
access | 入力のみ
mechanism | Reference渡し

＜戻り値＞

index | 文字位置

JLB$POS_NEXT

> 次の文字の文字位置の入手
> 指定された文字位置が，文字の1バイト目，2バイト目のどちらを指しているかにかかわらず，常に現在指している文字の次の文字の，1バイト目の文字位置を返します。

＜形式＞

> index = JLB$POS_NEXT ( src-str, curr-index )

＜引数＞

src-str
JLB usage | 入力文字列
access | 入力のみ
mechanism | Descriptor渡し
curr-index
JLB usage | 現在の文字位置
type | Longword
access | 入力のみ
mechanism | Reference渡し

＜戻り値＞

index | 文字位置
| curr-index が src-str の長さより大きい場合は 0
| curr-index がマイナスの場合は 0

例)

    #include <stdio.h>
    #include <descrip.h>
    #include <string.h>

    main()
    {
        struct dsc$descriptor_s     src_str;
        int         index;
        extern int  jlb$pos_next();
        char        src_str_body[] = "日本語RTL";
        int         curr_index = 1;

        src_str.dsc$b_class = DSC$K_CLASS_S;
        src_str.dsc$b_dtype = DSC$K_DTYPE_T;
        src_str.dsc$w_length = strlen( src_str_body );
        src_str.dsc$a_pointer = src_str_body;

        index = jlb$pos_next( &src_str, &curr_index );

        printf( "文字列 :\"%s\"    文字位置 :%d\n 結果 :%d\n",
            src_str_body, curr_index, index );
    }

JLB$POS_PREV

> 前の文字の文字位置の入手
> 指定された文字位置が，文字の1バイト目または2バイト目のどちらを指しているかにかかわらず，常に現在指している文字の前の文字の1バイト目の文字位置を返します。

＜形式＞

> index = JLB$POS_PREV ( src-str, curr-index )

＜引数＞

src-str
JLB usage | 入力文字列
access | 入力のみ
mechanism | Descriptor渡し
curr-index
JLB usage | 現在の文字位置
type | Longword
access | 入力のみ
mechanism | Reference渡し

＜戻り値＞

index | 文字位置
| curr-index が src-str の長さより大きい場合は 0
| curr-index がゼロ以下の場合は 0

JLB$POSITION

> 入力文字列中に含まれる検索文字列の先頭の文字位置を返します。
> 検索文字列が含まれていない場合は0を返します。

＜形式＞

> index = JLB$POSITION ( src-str, sub-str [, start-pos] )

＜引数＞

src-str
JLB usage | 入力文字列
access | 入力のみ
mechanism | Descriptor渡し
sub-str
JLB usage | 検索文字列
access | 入力のみ
mechanism | Descriptor渡し
start-pos
JLB usage | 検索開始文字位置 (省略時は1)
type | Longword
access | 入力のみ
mechanism | Reference渡し

＜戻り値＞

index | 検索文字列が含まれている場合はその開始位置
| 検索文字列が含まれていなければ 0
| 検索文字列の長さがゼロの場合は 1

JLB$STR_EQUAL

> 英大文字/小文字，全角/半角，ひらがな/カタカナ変換による文字列の比較

＜形式＞

> match = JLB$STR_EQUAL ( str1, str2 [, flg] )

＜引数＞

strl |
--- | ---
JLB usage | 比較対象文字列1
access | 入力のみ
mechanism | Descriptor渡し
str2 |
JLB usage | 比較対象文字列2
access | 入力のみ
mechanism | Descriptor渡し
flg |
JLB usage | 変換フラグ(省略時は0)
type | Byte
access | 入力のみ
mechanism | Reference渡し
| 比較の前に行う変換を指定する。
| bit 0 | 0 : 英大文字/小文字変換を行う
|  | 1 : 英大文字/小文字変換を行わない
| bit 1 | 0 : 全角/半角変換を行う
|  | 1 : 全角/半角変換を行わない
| bit 2 | 0 : ひらがな/カタカナ変換を行う
|  | 1 : ひらがな/カタカナ変換を行わない

＜戻り値＞

match | 1 : 文字列1が文字列2が等しい
| 0 : 文字列1が文字列2が等しくない

JLB$STR_START

> 英大文字/小文字，全角/半角，ひらがな/カタカナ変換による文字列の比較
> 文字列1が文字列2で始まっているかどうかを調べます。

＜形式＞

> match = JLB$STR_START ( str1, str2 [, flg] )

＜引数＞

strl |
--- | ---
JLB usage | 比較対象文字列1
access | 入力のみ
mechanism | Descriptor渡し
str2 |
JLB usage | 比較対象文字列2
access | 入力のみ
mechanism | Descriptor渡し
flg |
JLB usage | 変換フラグ
type | Byte
access | 入力のみ
type | Reference渡し
| 比較の前に行う変換を指定する。
| bit 0 | 0 : 英大文字/小文字変換を行う
|  | 1 : 英大文字/小文字変換を行わない
| bit 1 | 0 : 全角/半角変換を行う
|  | 1 : 全角/半角変換を行わない
| bit 2 | 0 : ひらがな/カタカナ変換を行う
|  | 1 : ひらがな/カタカナ変換を行わない

前へ | 次へ | 目次 | 索引