レコード書式と項目書式を記述したファイルを指定することで、入力されたレコードを、そのレコード書式と項目書式に従って変換し、変換結果のレコードを出力します。
下記コマンドは、Charset Managerをインストールしたディレクトリ配下のwconv配下に存在します。カレントディレクトリを上記ディレクトリに移動して、実行してください。
名前
wconv - 拡張データ変換
形式
wconv -fmt format [-o outfile] [-i infile] wconv -f fromcode -t tocode [-o outfile] [-i infile]
機能説明
wconvコマンドは、formatで指定されたファイルに記述されたレコード書式と項目書式に従って、infileで指定されたファイルから読み込んだデータをレコードごとに変換し、その結果をoutfileで指定されたファイルに出力します。
infileまたはoutfileの指定が省略された場合、それぞれ、標準入力からのデータ読み込み、または標準出力への変換結果出力を行います。
また、文字列変換のみの場合は、fromcodeで示す変換元コード系からtocodeで示す変換先コード系へ文字コード変換を行います。infileで指定されたファイルから読み込んだデータ、または標準入力から入力されたデータを変換し、outfileで指定されたファイル、または標準出力に出力します。出力側の文字コード系にない文字は、"_"(アンダースコア)へ変換されます。
fromcodeまたはtocodeには、“2.2 文字コードの種類”のうち、いずれか1つを記述します。
fromcodeまたはtocodeのいずれかが指定されていない場合、または、fromcodeとtocodeの組み合わせを拡張データ変換プログラムがサポートしていない場合は、エラーとなります。
オプション
書式を指定します。レコード書式と項目書式をformatから読み込みます。
formatがない場合は、エラーとなります。
出力ファイルのパス名を指定します。変換結果のレコードを書き込みます。
ファイルが存在する場合、上書きします。デフォルトは、標準出力です。
変換元文字コード系を指定します。入力データは、fromcodeの文字として変換されます。
fromcodeがない場合は、エラーとなります。
変換先文字コード系を指定します。入力データは、tocodeの文字へ変換され、出力されます。
tocodeがない場合は、エラーとなります。
オペランド
入力ファイルのパス名を指定します。入力データをinfileから読み込みます。
デフォルトは、標準入力です。
なお、LinuxおよびSolarisの32bit版では2GB以上のファイルは変換できません。この場合は、2GB未満のファイルサイズに区切って変換を行ってください。
formatファイルの書式
レコード書式と項目書式を記述するファイルの書式です。すべてASCIIコードの文字列で記述します。
1 カラム目は制御記号欄とし、2 カラム目から256 カラム目に制御文、レコード書式、および項目書式を記述します。1 カラム目には、次の制御記号のうち、いずれか1つを指定します。
この行を制御文として扱います。
この行を通常の書式として扱います。
この行をコメントとして扱います。
制御文には、以下の4つの制御文が必要となります。
入力レコード書式を指定します。
入力レコードの各項目書式を指定します。
出力レコード書式を指定します。
出力レコードの各項目書式を指定します。
INPUTRECORD、およびOUTPUTRECORD制御文の次行から、レコード書式を記述します。
レコード書式は、1つのファイルの中に、それぞれ1つずつしか記述できません。
レコード書式の記述は以下の形式とします。
文字コード系の種類・項目数
文字コード系の種類には、“2.2 文字コードの種類”のうち、いずれか1つを記述します。
項目数には、レコードの項目数を記述します。
INPUTFIELDS、およびOUTPUTFIELDS制御文の次行から、項目書式を記述します。
項目書式は、レコード書式の項目数で指定した数が必要です。
記述は、以下の形式とします。
項目のデータ型・項目のサイズ
項目のデータ型には、“2.6.2 wconv_pf(項目書式)”のty_fldに指定できるデータ型のうち、いずれか1つを記述します。
項目のサイズには、レコードに占める項目のバイト数を記述します。
なお、各項目の区切りは、半角のブランクで行います。
例
#INPUTRECORD
CDS_JKANA 2
#INPUTFIELDS
FLD_INTEGER_BIG 4
FLD_CHARS_ANC 8
#OUTPUTRECORD
CDS_SJIS 2
#OUTPUTFIELDS
FLD_INTEGER_LIT 4
FLD_CHARS_ANC 8
使用例
次の例は、ファイル person.dat の内容をpdata.fmtに記述されたレコード書式/項目書式に従って変換し、その結果をファイル pdata.localに出力します。
例
example% wconv -fmt pdata.fmt -i person.dat -o pdata.local
終了ステータス
以下の終了ステータスが返されます。
正常終了
エラーが発生した
エラーメッセージ
1 | option requires an argument - (argument) | |
【意味】 | 引数が不足しています。(argument)パラメタはオプションが必要です。 | |
【対処】 | パラメタを見直してください。 | |
2 | usage: wconv -f fromcode -t tocode [-i infile] [-o outfile] wconv -fmt formatfile [-I infile] [-o outfile] | |
【意味】 | パラメタエラーです。 | |
【対処】 | パラメタを見直してください。 | |
3 | Not supported | |
【意味】 | 以下のいずれかです。
| |
【対処】 | 変換元コード系、変換先コード系、およびformatファイルを見直してください。 | |
4 | Not supported (fromcode) to (tocode) | |
【意味】 | 指定された変換元コード系(fromcode)と変換先コード系(tocode)の組み合わせは、サポートしていません。 | |
【対処】 | 変換元コード系と変換先コード系を見直してください。 | |
5 | wconv: installation incomplete | |
【意味】 | 文字コード変換テーブルファイルにアクセスできません。 | |
【対処】 | 後ほど処理してもよいアプリケーションを終了し、再度実行してください。それでも発生する場合は、インストールに失敗している可能性があります。再インストールしてください。 | |
6 | (filename): No such file or directory | |
【意味】 | 指定されたファイル(filename)がありませんでした。 | |
【対処】 | 指定されたファイル(filename)を確認してください。 | |
7 | (filename): Can't open | |
【意味】 | 6以外の原因で指定されたファイル(filename)を開けませんでした。 | |
【対処】 | 指定されたファイル(filename)を確認してください。 | |
8 | wconv: Not enough buffer for output | |
【意味】 | 変換先レコードの項目のサイズが不足しました。 | |
【対処】 | formatファイルを見直して、再度実行してください。 | |
9 | wconv: Can't convert this format | |
【意味】 | 指定されたレコード書式または項目書式が不正です。 | |
【対処】 | formatファイルを見直してください。 | |
10 | wconv: Not enough memory | |
【意味】 | メモリが不足しました。 | |
【対処】 | 後ほど処理してもよいアプリケーションを終了させてから、再度実行してください。 | |
11 | wconv: Illegal byte sequence | |
【意味】 | 変換元データが異常です。以下のいずれかです。
| |
【対処】 | 変換元データを見直してください。 | |
12 | wconv[ERANGE]: overflow or underflow | |
【意味】 | オーバーフローまたはアンダーフローが発生しました | |
【対処】 | 変換元データを見直してください。 | |
13 | wconv[EFAULT]: Bad address | |
【意味】 | 指定されたレコード書式または項目書式が不正です。 | |
【対処】 | formatファイルを見直してください。 それでも発生する場合は、弊社技術員にご連絡ください。その際に以下の情報を通知してください。
| |
14 | wconv[(code)]: Can’t convert | |
【意味】 | 内部エラーです。 | |
【対処】 | 弊社技術員にご連絡ください。その際に以下の情報を通知してください。
|
注意
出力側の文字コード系にない文字を"_"(アンダースコア)へ変換した場合、終了ステータスは、0:正常終了を返します。