[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]


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$DATE_TIME 日付けおよび時間の入手
JLB$DEV_KANJI 漢字端末かどうかのチェック
JLB$DEV_KANJI_IN 漢字入力端末かどうかのチェック
JSY$RMS_GET_ENCODING 現在のファイル名コンバータの名前を取得する
JSY$RMS_LIST_ENCODING システムにインストールされているファイル名コンバータの名前を取得する
JSY$RMS_SET_ENCODING RMS ファイル名コンバータを有効または無効にする

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

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

JLB$NOF_BYTE


文字列が占めるバイト数の入手

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

<形式>


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

<引数>

str-str
 JLB usage :入力文字列
 access :入力のみ
 mechanism :Descriptor渡し
nof_ char
 JLBusage :文字数
 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 文字位置

例)

     #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 文字位置

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

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 : ひらがな/カタカナ変換を行わない

<戻り値>

match 1 : 文字列1が文字列2で始まっている
0 : 文字列1が文字列2で始まっていない

JLB$STR_SEARCH


英大文字/小文字,全角/半角,ひらがな/カタカナ変換による文字列の検索

検索文字列が含まれていない場合は0を返します。

<形式>


index = JLB$STR_SEARCH ( src-str, sub-str [[, start-pos][, flg]] )

<引数>

src-str
 JLB usage :入力文字列
 access :入力のみ
 mechanism :Descriptor渡し
sub-str
 JLB usage :検索文字列
 access :入力のみ
 mechanism :Descriptor渡し
start-pos
 JLB usage :検索開始文字位置(省略時は1)
 type :Longword
 access:入力のみ
 mechanism :Reference渡し
flg
 JLBusage :変換フラグ (省略時は0)
 type :Byte
 access :入力のみ
 mechanism :Reference渡し
検索の前に行う変換を指定する。
bit 0 0 : 英大文字/小文字変換を行う
1 : 英大文字/小文字変換を行わない
bit 1 0 : 全角/半角変換を行う
1 : 全角/半角変換を行わない
bit 2 0 : ひらがな/カタカナ変換を行う
1 : ひらがな/カタカナ変換を行わない

<戻り値>

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

例)

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

     main()
     {
         struct dsc$descriptor_s     src_str;
         struct dsc$descriptor_s     sub_str;
         char        flg;
         int         index;
         extern int  jlb$str_search();
         char        src_str_body[] = "日本語ライブラリ",
                     sub_str_body[] = " らいぶらり";
         int         start_pos = 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;

         sub_str.dsc$b_class = DSC$K_CLASS_S;
         sub_str.dsc$b_dtype = DSC$K_DTYPE_T;
         sub_str.dsc$w_length = strlen( sub_str_body );
         sub_str.dsc$a_pointer = sub_str_body;

         printf( "文字列 1:\"%s\"    文字列 2:\"%s\"\n", src_str_body, sub_str_body);
         for ( flg = 0; flg < 8; ++flg ) {
             index = jlb$str_search( &src_str, &sub_str, &start_pos, &flg );
             printf( "変換フラグ :%1d    結果 :%d\n", flg, index );
         }
     }

JLB$TRIM


文字列の後の空白の切り捨て

文字列の後に含まれる空白(半角および全角)ならびにタブを切り捨てます。

<形式>


ret-status = JLB$TRIM ( dst-str, src-str [, out-len] )

<引数>

dst-str
 JLB usage :出力文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :入力文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :出力文字列のバイト長 (省略時は長さが返りません。)
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力文字列用領域の長さが足りないため,出力結果の切り捨てが行われた

例)

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

     #include <ssdef.h>
     #include <stsdef.h>
     #include <varargs.h>

     main()
     {
         struct dsc$descriptor_s     dst_str;
         struct dsc$descriptor_s     src_str;
         int         ret_status;
         extern int  jlb$trim();
         char        src_str_body[] = " 日本語    ";
         char        dst_str_body[] = " 外国人    ";

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

         printf( "入力文字列 :\"%s\"\n", src_str_body );

         ret_status = jlb$trim( &dst_str, &src_str, &dst_str.dsc$w_length );

         dst_str_body[ dst_str.dsc$w_length ] = '\0';
         printf( "出力文字列 :\"%s\"    文字列長 :%d    ステータス :",
             dst_str.dsc$a_pointer, dst_str.dsc$w_length );

         switch ( ret_status ) {
         case SS$_NORMAL:
             printf( "SS$_NORMAL" );
             break;
         case LIB$_STRTRU:
             printf( "LIB$_STRTRU" );
             break;
         }
         putchar( '\n' );
     }

JLB$TRUNC


文字列の切り捨て

文字列を指定された長さで切り捨てます。

<形式>


ret-status = JLB$TRUNC ( dst-str, src-str, size [, out-len] )

<引数>

dst-str
 JLB usage :出力文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :入力文字列
 access :入力のみ
 mechanism :Descriptor渡し
size
 JLB usage :切り捨てを行う長さ
 type :Word
 access :入力のみ
 mechanism :Reference渡し
out-len
 JLBusage :出力文字列のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

JLB$LOCC


文字の検索

入力文字列中で最初に現れた検索文字の文字位置を返します。 検索文字が含まれていない場合は0を返します。

<形式>


index = JLB$LOCC ( char-str, src-str )

<引数>

char-str
 JLB usage :検索文字
 access :入力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :入力文字列
 access :入力のみ
 mechanism :Descriptor渡し

<戻り値>

index 文字位置

例)

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

     main()
     {
         struct dsc$descriptor_s     char_str;
         struct dsc$descriptor_s     src_str;
         int         index;
         extern int  jlb$locc();
         char        char_str_body[] = " 本",
                     src_str_body[]  = " 日本語";
         char_str.dsc$b_class = src_str.dsc$b_class = DSC$K_CLASS_S;
         char_str.dsc$b_dtype = src_str.dsc$b_dtype = DSC$K_DTYPE_T;
         char_str.dsc$w_length = strlen( char_str_body );
         char_str.dsc$a_pointer = char_str_body;
         src_str.dsc$w_length = strlen( src_str_body );
         src_str.dsc$a_pointer = src_str_body;

         index = jlb$locc( &char_str, &src_str );

         printf( "検索文字 :\'%s\'    入力文字列 :\"%s\"\n 結果 :%d\n",
             char_str_body, src_str_body, index );
     }

JLB$SKPC


文字の飛び越し

入力文字列中で最初に現れた検索文字以外の文字位置を返します。 検索文字以外の文字がない場合は0を返します。

<形式>


index = JLB$SKPC ( char-str, src-str )

<引数>

char-str
 JLB usage :検索文字
 access :入力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :入力文字列
 access :入力のみ
 mechanism :Descriptor渡し

<戻り値>

index 文字位置

JLB$RCHAR


文字列からの文字の取り出し

<形式>


char-code = JLB$RCHAR ( src-str [, pos] )

<引数>

src-str
 JLB usage :入力文字列
 access :入力のみ
 mechanism :Descriptor渡し
pos
 JLB usage :文字位置
 type :Longword
 access :入力のみ
 mechanism :Reference渡し

<戻り値>

char-code 文字コード

JLB$RNEXT


文字列からの文字の取り出しおよびインデックスの更新

<形式>


char-code = JLB$RNEXT ( src-str [, pos] )

<引数>

src-str
 JLB usage :入力文字列
 access :入力のみ
 mechanism :Descriptor渡し
pos
 JLB usage :文字位置
 type:Longword
 access :更新
 mechanism :Reference渡し

<戻り値>

char-code 文字コード

JLB$WCHAR


文字列への文字の書き込み

<形式>


ret-status = JLB$WCHAR ( char-code, dst-str [, pos] )

<引数>

char-code
 JLB usage :文字コード
 type :Longword
 access :入力のみ
 mechanism :Reference渡し
dst-str
 JLB usage :出力文字列
 access :出力のみ
 mechanism :Descriptor渡し
pos
 JLB usage :文字位置
 type :Longword
 access :入力のみ
 mechanism :Reference渡し

<戻り値>

ret-status 1 : 正常終了
0 : 出力文字列の長さが短い

JLB$WNEXT


文字列への文字の書き込みおよびインデックスの更新

<形式>


ret-status = JLB$WNEXT ( char-code, dst-str [, pos] )

<引数>

char-code
 JLB usagec: 文字コード
 type :Longword
 access :入力のみ
 mechanism :Reference渡し
dst-str
 JLB usage :出力文字列
 access :出力のみ
 mechanism :Descriptor渡し
pos
 JLB usage :文字位置
 type :Longword
 access :更新
 mechanism :Reference渡し

<戻り値>

ret-status 1 : 正常終了
0 : 出力文字列の長さが短い

3.3 文字列変換ルーチン

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

JLB$TRA_ROM_HALF


ローマ文字全角から半角への変換

例)

             入力文字列      "abcdEFGHijklMNOP"
             出力文字列      "abcdEFGHijklMNOP"

<形式>


ret-status = JLB$TRA_ROM_HALF ( dst-str, src-str [, out-len] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

JLB$TRA_ROM_FULL


ローマ文字半角から全角への変換

例)

             入力文字列      "abcdEFGHijklMNOP"
             出力文字列      "abcdEFGHijklMNOP"

<形式>


ret-status = JLB$TRA_ROM_FULL ( dst-str, src-str [, out-len] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

JLB$TRA_ROM_SIZE


ローマ文字全角/半角の相互変換

例)

             入力文字列      "abcdEFGHijklMNOP"
             出力文字列      "abcdEFGHijklMNOP"

<形式>


ret-status = JLB$TRA_ROM_SIZE ( dst-str, src-str [, out-len] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

JLB$TRA_ROM_LOWER


英文字半角/全角の小文字への変換

例)

             入力文字列      "abcdEFGHijklMNOP"
             出力文字列      "abcdefghijklmnop"

<形式>


ret-status = JLB$TRA_ROM_LOWER ( dst-str, src-str [, out-len] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

JLB$TRA_ROM_UPPER


英文字半角/全角の大文字への変換

例)

             入力文字列      "abcdEFGHijklMNOP"
             出力文字列      "ABCDEFGHIJKLMNOP"

<形式>


ret-status = JLB$TRA_ROM_UPPER ( dst-str, src-str [, out-len] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

JLB$TRA_ROM_CASE


英文字全角/半角の大文字/小文字の相互変換

例)

             入力文字列      "abcdEFGHijklMNOP"
             出力文字列      "ABCDefghIJKLmnop"

<形式>


ret-status = JLB$TRA_ROM_CASE ( dst-str, src-str [, out-len] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

JLB$TRA_ROM_KANA


ローマ字から全角ひらがな/カタカナへの変換

例)

             入力文字列      "ro-maji"
             出力文字列      " ろーまじ "         ひらがな指定
             出力文字列      " ローマジ "         カタカナ指定

<形式>


ret-status = JLB$TRA_ROM_KANA ( dst-str, src-str [, flg [, out-len]] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
flg
 JLB usage :変換指示フラグ(省略時は0)
 type :Byte
 access :入力のみ
 mechanism :Reference渡し
bit 0 0 : 全角ひらがなへ変換
1 : 全角カタカナへ変換
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

例)

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

     main()
     {
         struct dsc$descriptor_s     dst_str;
         struct dsc$descriptor_s     src_str;
         char        flg;
         int         ret_status;
         extern int  jlb$tra_rom_kana();
         char        dst_str_body[] = "              ";
         char        src_str_body[] = "nihongo";

         dst_str.dsc$b_class = DSC$K_CLASS_S;
         dst_str.dsc$b_dtype = DSC$K_DTYPE_T;
         dst_str.dsc$w_length = strlen( dst_str_body );
         dst_str.dsc$a_pointer = dst_str_body;

         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;

         for ( flg = 0 ; flg < 2 ; ++flg ) {
             printf( "変換前文字列 :\"%s\"    変換フラグ :%1d\n", src_str_body, flg );

             ret_status = jlb$tra_rom_kana( &dst_str, &src_str,
                              &flg, &dst_str.dsc$w_length );
             dst_str_body[ dst_str.dsc$w_length ] = '\0';
             printf( "変換後文字列 :\"%s\"    文字列長 :%d    ステータス :",
                 dst_str.dsc$a_pointer, dst_str.dsc$w_length );

             switch ( ret_status ) {
             case SS$_NORMAL:
                 printf( "SS$_NORMAL" );
                 break;
             case LIB$_STRTRU:
                 printf( "LIB$_STRTRU" );
                 break;
             }
             printf( "\n\n" );
         }
     }

JLB$TRA_KANA_HIRA


全角カタカナから全角ひらがなへの変換

例)

             入力文字列      " あいうえおカキクケコ "
             出力文字列      " あいうえおかきくけこ "

<形式>


ret-status = JLB$TRA_KANA_HIRA ( dst-str, src-str [, out-len] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

JLB$TRA_KANA_KATA


全角ひらがなから全角カタカナへの変換

例)

             入力文字列      " あいうえおカキクケコ "
             出力文字列      " アイウエオカキクケコ "

<形式>


ret-status = JLB$TRA_KANA_KATA ( dst-str, src-str [, out-len] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

JLB$TRA_KANA_KANA


全角ひらがな/全角カタカナの相互変換

例)

             入力文字列      " あいうえおカキクケコ "
             出力文字列      " アイウエオかきくけこ "

<形式>


ret-status = JLB$TRA_KANA_KANA ( dst-str, src-str [, out-len] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

JLB$TRA_KANA_DAKU


全角ひらがな/カタカナの濁点/半濁点処理

例)

      入力文字列   " か゛き゛く゛け゛こ゛は゜ひ゜ふ゜へ゜ほ゜"
      出力文字列   " がぎぐげごぱぴぷぺぽ "

<形式>


ret-status = JLB$TRA_KANA_DAKU ( dst-str, src-str [, out-len] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

JLB$TRA_KANA_HALF


全角ひらがな/カタカナから半角カタカナへの変換

例)

<形式>


ret-status = JLB$TRA_KANA_HALF ( dst-str, src-str [, out-len] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

JLB$TRA_KANA_FULL


半角カタカナから全角ひらがな/カタカナへの変換

例)

<形式>


ret-status = JLB$TRA_KANA_FULL ( dst-str, src-str [, flg [, out-len]] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
flg
 JLB usage :変換指示フラグ
 type :Byte
 access :入力のみ
 mechanism :Reference渡し
bit 0 0 : 全角ひらがなへ変換
1 : 全角カタカナへ変換
bit 1 0 : 濁点/半濁点処理を行う
1 : 濁点/半濁点処理を行わない
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

JLB$TRA_SYMBOL


記号変換

例)

             入力文字列      "[( )] <> k<> 123"
             出力文字列      " 【 】 ◇ ◆ └┴┘ "

<形式>


ret-status = JLB$TRA_SYMBOL ( dst-str, src-str [, out-len] )

<引数>

dst-str
 JLB usage :変換後文字列
 access :出力のみ
 mechanism :Descriptor渡し
src-str
 JLB usage :変換前文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :変換結果のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切り捨てが行われた

3.4 漢字変換入力ルーチン

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

JLB$GET_COMMAND


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

標準ランタイム・ライブラリのLIB$GET_COMMANDと同様に使用でき, ローマ字・かな漢字変換入力が可能です。 変換対象文字列は入力を行う前に表示され,変換を行うことができます。

<形式>


ret-status = JLB$GET_COMMAND ( get-str [,[prompt-str] [,[out-len] [,[src-str]]]] )

<引数>

get-str
 JLB usage :入力文字列
 access :出力のみ
 mechanism :Descriptor渡し
prompt-str
 JLB usage :プロンプト文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :入力文字列のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し
src-str
 JLB usage :変換対象文字列
 access :入力のみ
 mechanism :Descriptor渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
RMS$_ EOF End of File検出時

JLB$GET_INPUT


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

標準ランタイム・ライブラリのLIB$GET_INPUTと同様に使用でき, ローマ字・かな漢字変換入力が可能です。 変換対象文字列は入力を行う前に表示され,変換を行うことができます。

<形式>


ret-status = JLB$GET_INPUT ( get-str [,[prompt-str] [,[out-len] [,[src-str]]]] )

<引数>

get-str
 JLB usage :入力文字列
 access :出力のみ
 mechanism :Descriptor渡し
prompt-str
 JLB usage :プロンプト文字列
 access :入力のみ
 mechanism :Descriptor渡し
out-len
 JLB usage :入力文字列のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し
src-str
 JLB usage :変換対象文字列
 access :入力のみ
 mechanism :Descriptor渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
RMS$_ EOF End of File検出時

3.5 その他のルーチン

JLB$DATE_TIME


現在の日付けおよび時間の入手

例)

     12時間制の場合  平成元年 2月14日 (火) 午後 5時21分 3秒
     24時間制の場合  平成元年 2月14日 (火) 17時21分 3秒

<形式>


ret-status = JLB$DATE_TIME ( dst-str [, flg[, out-len]] )

<引数>

dst-str
 JLB usage :出力文字列
 access :出力のみ
 mechanism :Descriptor渡し
flg
 JLBusage :時間制の指定
 type :Byte
 access :入力のみ
 mechanism :Reference渡し
0 : 12時間制(省略時の値)
1 : 24時間制
out-len
 JLB usage :出力文字列のバイト長
 type :Word
 access :出力のみ
 mechanism :Reference渡し

<戻り値>

ret-status SS$_NORMAL 正常終了
LIB$_ STRTRU 出力結果の切捨てが行われた

JLB$DATE_TIMEで使用する元号の名称および日付は,論理名で定義されます。 この論理名は,システムのスタートアップ時に, SYS$STARTUP:JSY$DT_STARTUP.COMを実行することによって定義されます (SYS$STARTUP:JSY$STARTUP.COMの中から実行されます)。省略時には次のように定義します。

     $       define/system/exec jsy$era_name -
                                     "平成", -
                                     "昭和", -
                                     "大正", -
                                     "明治"
     $       define/system/exec jsy$era_begin_date -
                                     "19890108", -
                                     "19261425", -
                                     "19140730", -
                                     "18680908"
     $       define/system/exec jsy$era_display_form 1

3番目の論理名,JSY$ERA_DISPLAY_FORMATは, その元号の初年度を「1年(0)」で表示するか, または「元年(1)」で表示するかを選択します。 省略時の設定では「元年」です。

例)

     #include <stdio.h>
     #include <descrip.h>
     #include <ssdef.h>
     #include <libdef.h>

     #define BUFLEN 100

     main()
     {
         struct dsc$descriptor_s     dst_str;
         char        flg;
         short int   out_len;
         int         ret_status;
         char        buffer[ BUFLEN ];
         extern int  jlb$date_time();

         dst_str.dsc$b_class = DSC$K_CLASS_S;
         dst_str.dsc$b_dtype = DSC$K_DTYPE_T;
         dst_str.dsc$w_length = sizeof( buffer );
         dst_str.dsc$a_pointer = buffer;

         for ( flg = 0 ; flg < 2 ; ++flg ) {
             ret_status = jlb$date_time( &dst_str, &flg, &out_len );

             buffer[ out_len ] = '\0';
             printf( "フラグ :%1d\n 時間 :\"%s\"    ステータス :",
                 flg, dst_str.dsc$a_pointer );

             switch ( ret_status ) {
             case SS$_NORMAL:
                 printf( "SS$_NORMAL" );
                 break;
             case LIB$_STRTRU:
                 printf( "LIB$_STRTRU" );
                 break;
             }
             putchar( '\n' );
         }
     }

JLB$DEV_KANJI


漢字端末かどうかのチェック

端末がVT80に設定されているかどうか, またはKANJIGENのSET/OUTPUT=KANJI により出力が漢字に設定されているかどうかをチェックします。

<形式>


ret-status = JLB$DEV_KANJI ( device-name )

<引数>

device-name
 JLB usage :デバイス名
 type :文字列
 access :入力のみ
 mechanism :Descriptor渡し

<戻り値>

ret-status 1 : 漢字端末
0 : 漢字端末ではない

JLB$DEV_KANJI_IN


漢字入力端末かどうかのチェック

端末がKANJIGENのSET /INPUT=KANJIにより, 漢字入力に設定されているかどうかをチェックします。

<形式>


ret-status = JLB$DEV_KANJI_IN ( device-name )

<引数>

device-name
 JLB usage :デバイス名
 type :文字列
 access :入力のみ
 mechanism :Descriptor渡し

<戻り値>

ret-status 1 : 漢字入力端末
0 : 漢字入力端末ではない

8888888888888888888888888888888888

JSY$RMS_GET_ENCODING


現在のRMSファイル名コンバータの状態を取得します。

コンバータが有効の場合は"sdeckanji"が返されます。コンバータが無効の場合は"DISABLE" が返されます。

<形式>


ret-status = JSY$RMS_GET_ENCODING ( dst-str, dst-len )

<引数>

src-str
 JLB usage :コンバータ名の出力領域の先頭を指すポインタ
 type :文字列
 access :出力のみ
 mechanism :Value 渡し
src-len
 JLB usage :コンバータ名のバイト長
 type :Longword
 access :出力のみ
 mechanism :Reference 渡し

<戻り値>

ret-status
SS$_NORMAL :正常終了
SS$_INSFARG :引数の数が少なすぎる
SS$_TOO_MANY_ARGS :引数の数が多すぎる

JSY$RMS_LIST_ENCODING


システムにインストールされているファイル名コンバータの名前を取得します。

最初にJSY$RMS_LIST_ENCODINGを呼び出す時に,あらかじめ引数context をゼロに初期化しておきます。そしてJSY$RMS_LIST_ENCODING を呼び出すごとに,システムにインストールされているファイル名コンバータを1つずつ返します。

全てのコンバータの名前を取得し終えると,戻り値としてSS$_ NOMOREITEMSが返されます。この場合,コンバータ名は返されず, 引数contextも更新されません。

<形式>


ret-status = JSY$RMS_LIST_ENCODING ( context, dst-str, dst-len )

<引数>

context
JLB usage :コンバータ管理用インデックス
type :Longword
access :更新
mechanism :Reference渡し
src-str
JLB usage :コンバータ名の出力領域の先頭を指すポインタ
type :文字列
access :出力のみ
mechanism:Value渡し
src-len
JLB usage :コンバータ名のバイト長
type :Longword
access :出力のみ
mechanism :Reference渡し

<戻り値>

ret-status
SS$_NORMAL :正常終了
RMS$_EXTNOTFOU :ファイル名コンバータがシステムにインストールされていない
SS$_BADPARAM :引数の値が不正である
SS$_INSFARG :引数の数が少なすぎる
SS$_NOMOREITEMS :これ以上ファイル名コンバータが見つからない
SS$_TOO_MANY_ARGS :引数の数が多すぎる

JSY$RMS_SET_ENCODING


RMSファイル名コンバータを有効または無効に設定します。

コンバータを有効にする場合はコンバータ名として"sdeckanji"を指定します。 コンバータを無効にする場合はコンバータ名として"DEFAULT" を指定します。なお,大文字/小文字の違いは無視されます。

<形式>


ret-status = JSY$RMS_SET_ENCODING ( src-str, src- len )

<引数>

src-str
JLB usage :コンバータ名の先頭を指すポインタ
type :文字列
access :入力のみ
mechanism:Value渡し
src-len
JLB usage :コンバータ名のバイト長
type :Longword
access :入力のみ
mechanism :Value渡し

<戻り値>

ret-status
SS$_NORMAL :正常終了
RMS$_EXTNOTFOU :指定されたファイル名コンバータが見つからない
SS$_ACCVIO :不正なメモリをアクセスしようとした
SS$_BADPARAM :引数の値が不正である
SS$_INSFARG :引数の数が少なすぎる
SS$_TOO_MANY_ARGS :引数の数が多すぎる


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]