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

6 DEC漢字コード変換ユーティリティ(KCONVERT)

この章では,DEC漢字コード変換ユーティリティ (KCONVERT) について説明します。


6.1 機能概要

DEC漢字セットとASCII文字セットで記述された日本語文書内の特定の漢字コードを, 変換指定テーブルにしたがって変換します。日本語OpenVMSオペレーティング・ システムではDEC漢字1978年版とDEC漢字1983年版間の変換指定テーブルが提供されます。 変換指定テーブルはエディタなどを用いて利用者が作成/変更することもできます。

漢字コード変換ユーティリティ(KCODE)は他社の漢字コード系との変換を行いますが, このDEC漢字コード変換ユーティリティ(KCONVERT)は,入力ファイルも出力ファイルも DEC漢字コード系であることを前提にしています。

DCLコマンドですぐに利用できるユーティリティと, プログラムから呼びだすルーチンの2種類があります。


6.2 KCONVERTコマンド

この節では,KCONVERTコマンドの形式,パラメータ,修飾子について説明します。


KCONVERT

DEC漢字コード変換ユーティリティを起動します。

形式

     KCONVERT/TABLE =変換テーブル・ファイル指定[/修飾子] 入力ファイル指定 
                     [出力ファイル指定]

パラメータ

入力ファイル指定

変換するファイル名を指定します。ワイルドカードも指定できます。

出力ファイル指定

変換したファイルの出力先を指定します。省略時には, 入力ファイルと同じ名前で,バージョンを更新したファイルに出力します。

修飾子

/CHECK

/TABLEで指定された変換テーブルに記述された漢字コードが入力ファイルに あるかどうかのみを検査し,その情報を/LOG_FILEで指定された出力先に出力します。 漢字コード変換された出力ファイルは生成されません。/NOCHECKが指定された場合は, 実際の変換を行い,コード変換された出力ファイルが生成されます。

/FIELD = (...)

1レコード内の変換・検査の範囲を指定します。/FIELD修飾子は 16個まで記述できますが,各々の/FIELD修飾子で指定する範囲が重なってはいけません。 /FIELD修飾子の指定がない場合は,1レコード全体が変換・検査の対象になります。 以下の項目が指定できます。

START: i 変換・検査の開始位置をバイト・オフセットで指定します。 レコードの先頭は1です。省略時設定値は1です。
END: j 変換・検査の終了位置をバイト・オフセットで指定します。 LENGTH と同時には指定できません。ENDもLENGTHも指定されていない場合は, レコードの最後まで変換・検査を行います。
LENGTH:k 変換・検査する範囲をSTARTで指定した位置からのバイト数で指定します。 ENDと同時には指定できません。ENDもLENGTHも指定されていな場合は, レコードの最後まで変換・検査を行います。
KANJI 半角カタカナ混じりの文章の場合, 最初が漢字で始まっていることを指定します。
KATAKANA 半角カタカナ混じりの文章の場合, 最初が半角カタカナで始まっていることを指定します。 KANJIとKATAKANAのいずれの指定もない場合は, /MODE修飾子で指定された文字で開始しているものとみなします。

/INQUIRE

変換テーブルで指定された(変換指定の)漢字コードがあった際, 変換するかどうかを問い合わせます。/CHECKと同時には指定できません。 省略時は問い合わせを行わず,指定のコードに変換します。

/LOG_ FILE =出力先名

変換・検査の情報を指定の出力先に出力します。省略時は SYS$OUTPUTに出力します。/NOLOG_FILEを指定した場合には, 変換・検査の情報は出力されません。

/MODE =文字コード指定

文書がDEC漢字コードと半角カタカナ混じりの場合, 最初が漢字で始まっているか半角カタカナで始まっているかを指定します。 以下の2つを指定できます。

KANJI 漢字で始まる
KATAKANA 半角カタカナで始まる

KCONVERTユーティリティは,文書中にエスケープ・シーケンス(LS2R, LS3R) があると自動的に

     LS2R (〈ESC〉 } ).....この制御コード以後は半角カタカナと
                           みなし,次にLS3Rがみつかるまで
                           変換・検査を行わない

     LS3R (〈ESC〉 | ).....この制御コード以後は漢字とみなし,
                           変換・検査を行う

注意

〈ESC〉は16進数の1B,‘ } ’は7D,|は7Cです。

として処理し,漢字の部分のみを変換・検査の対象にします。

  1. 文書がLS3Rなしの漢字コードで始まり,途中に半角カタカナが混じっている場合

    この場合は漢字で始まっていますから/MODE修飾子を省略できます。

             $ KCONVERT/TABLE=...  Input_file  Output_file
    

  2. 文書がLS2Rコードなしの半角カタカナで始まっている場合

    この場合は半角カタカナで始まっていることを/MODE=KATAKANAで指定します。

             $ KCONVERT/MODE=KATAKANA/TABLE=...  Input_file  Output_file
    

  3. 文書にLS2RまたはLS3Rコードがある場合

    または

    この場合は/MODE=KANJIを指定しても/MODE=KATAKANAを指定しても, 変換・検査の結果は同じですから,/MODEの指定は不要です。

             $ KCONVERT/TABLE=...  Input_file  Output_file
    

/RANGE = (...)

入力ファイルの一部のレコードのみを変換・検査する場合に用います。 /RANGE修飾子は16個まで記述できますが,各々の /RANGE修飾子で指定するレコードの範囲が重なってはいけません。 /RANGE修飾子の指定がないときは,すべてのレコードが変換・ 検査の対象になります。以下の項目が指定できます。

START:i 変換・検査する開始レコード番号を指定します。 最初のレコード番号は1です。省略時設定値は1です。
END:j 変換・検査する終了レコード番号を指定します。LENGTHと同時には指定できません。 ENDもLENGTHも指定されていないときは,最後のレコードまで変換・検査を行います。
LENGTH:k 変換・検査するレコード数を指定します。 ENDと同時には指定できません。ENDもLENGTHも指定されていないときは, 最後のレコードまで変換・検査を行います。
KANJI 半角カタカナ混じりの文章のとき, 最初が漢字で始まっていることを指定します。
KATAKANA 半角カタカナ混じりの文章のとき, 最初が半角カタカナで始まっていることを指定します。KANJIと KATAKANAのいずれの指定も無いときは, /MODE修飾子で指定された文字で開始しているものとみなします。

/TABLE =変換テーブル・ファイル指定

変換テーブルのファイル名を指定します。変換・検査は, この変換テーブルにしたがって行われます。 この修飾子と変換テーブルのファイル名は必ず指定しなければなりません。 日本語OpenVMSではDEC漢字1978年版と1983年版の変換テーブル (JSY$SYSTEM:KCV78TO83.TABLE とJSY$SYSTEM:KCV83TO78.TABLE) を提供します。

  1. DEC漢字1978年版漢字コードをDEC漢字1983年版に変換する場合
         $ KCONVERT/TABLE=JSY$SYSTEM:KCV78TO83.TABLE  Input_file  Output_file
    

  2. DEC漢字1983年版漢字コードをDEC漢字1978年版に変換する場合
         $ KCONVERT/TABLE=JSY$SYSTEM:KCV83TO78.TABLE  Input_file  Output_file
    

  3. 利用者が作成した変換テーブル(CONVERT.TABLE)にしたがって変換・検査を行う場合
         $ KCONVERT/TABLE=CONVERT.TABLE  Input_file  Output_file
    

    変換テーブルの形式については 第6.3節を参照してください。


6.3 変換指定テーブル

変換・検査で使用する変換指定テーブルの形式を説明します。 利用者定義による漢字コード変換を行う場合は, KCONVERTユーティリティを使用する前に, 変換テーブルを日本語エディタなどで作成します。

       ! KCONVERT 変換指定テーブルの例
       !
       C XB1B1     XC1C1     ! 臼 を 疏 に変換する
       C XB1B2     XC1C2     ! 渦 を 疎 に変換する
       I XD1D1                !冪 があれば通知する
         ...................
         ...................
       END                    !変換指定テーブル 終り

  1. コメント行

    半角の感嘆符'!'で始まる行はコメント行です。変換・検査には使用されません。

  2. 変換指定行

    先頭が半角の'C'で始まる行は変換指定になります。

  3. 通知指定行先頭が'I'で始まる行で記述した漢字コードは変換されません。 変換・検査を実行した際に, この漢字コードが入力ファイルに存在したことを通知する指定です。

  4. 終了行

    先頭が'END'で始まる行までが変換テーブルとして扱われます。 この行以降は何が記述されていても無視されます。


6.4 使用例

使用例として,DEC漢字1978年版漢字コードと DEC漢字1983年版の相互変換方法を説明します。


6.4.1 1978年版から1983年版への変換

DEC漢字1978年版のファイルをDEC漢字1983年版に変換する場合は, 変換テーブルとして

         JSY$SYSTEM:KCV78TO83.TABLE

を用います。このテーブルでは,

     $ KCONVERT/TABLE=JSY$SYSTEM:KCV78TO83.TABLE[/修飾子] 入力ファイル名
                                                                [出力ファイル名]

とします。


6.4.2 1983年版から1978年版への変換

DEC漢字1983年版の漢字コードをDEC漢字1978年版に変換する場合は, 変換テーブルとして

        JSY$SYSTEM:KCV83TO78.TABLE

を用います。このテーブルでは,

が指定されています。

     $ KCONVERT/TABLE=JSY$SYSTEM:KCV83TO78.TABLE[/修飾子] 入力ファイル名
                                                                [出力ファイル名]
とします。

日本語OpenVMSが標準として提供するのは上の2つのテーブルのみです。 変換を罫線コードに限定するなど変換内容を変える場合は, 新たに変換テーブルを作成してください。


6.5 コード変換ライブラリ

KCONVERTユーティリティが使用しているルーチンがランタイム・ライブラリとして JSY$LIBRARY:JSYLIB.OLB に入っています。また,ステータス定義ファイルとしては JSY$SYSTEM:JSYDEF.* (*はFOR,Hなど各言語用)があります。 KCONVERTユーティリティでは処理できない場合は, コード変換ルーチンを用いて専用の変換プログラムを作成してください。

各ルーチンについては 『日本語ライブラリ 利用者の手引き』を参照してください。


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