.EBCDIC変換 設定ファイル
EBCDIC ファイルサポートでは特定の内部変換テーブルに加えて、
ICU/WindowsApi/iconvなど外部のコンバータを使用することが出来ます。
内部変換テーブルを使用する場合はコマンドラインパラメータの指定により、
特定のEBCDIC変換を、cfgファイル無しで利用することもできます
cfg ファイルの場所は ini ファイルで指定します。省略値は ::xeebc.map
EBCDIC_cfg ="" #("::xeebc.map")# EBCDIC translation config filename
ユーティリティ XCV では /MF:mapfile パラメータで指定します。
****************************************************************************
変換パターンが2種あります。
(a).内部テーブルを使用した日本語の変換。
コマンドパラメータの指定に加えて変換オプションの指定ができます
有効なパラメータは SJIS_OPT,SOSI_A2E,SOSI_E2A です。
(b).ICU ないしはシステム(Windows API, Linux iconv)コンバータを使用した変換。
ICUには uconv コマンドが、iconv には iconv コマンドが利用でき、
コンバータのリストは "uconv -l" (ICU) ないし "iconv -l" で得ることができます。
Windows11ではICUはDefaultで導入されているようですが uconv.exe がありません
uconv が利用できない場合は "xcv -list -ICU" を試してください。
Windows コードページ, ICU のコードページは "xcv -List" で出ます。
尚、Windows コードページ 20290 は 日本語カタカナ拡張となっていますが
日本語漢字はサポートされていないようです、DBCS が必要な場合は ICU を利用してください。
オプションパラメータ。
#####################################################################################
CONVERTER : コンバーターの選択
0 : 内部テーブルのみで変換する
MAP_E2A, MAP_A2E 文字単位で補正可能
1 : ICU で変換(ICUの導入が必要)
2 : Linuxでは iconv API, Windowsでは WideCharToMultibyte/MultiByteToWideCharで変換。
例)
CONVERTER 1 # use ICU converter
## 次の ICU_DLL_SUFFIX, ICU_API_SUFFIX は "CONVERTER 1" のとき必要ですが
xe は システムディレクトリーを調べるので指定は不要かと思いますが、エラーが発生するときは指定してください
(Windows では c:\Windows\System32 内を、Linux では "uconv --version" で調べます)
ICU_DLL_SUFFIX : .dllないし、.so ライブラリ名のサフィクス。
例)
ICU_DLL_SUFFIX 44
ICU_API_SUFFIX : ICU API 名のサフィックス。
例)
ICU_DLL_SUFFIX _44
## 次の ICU_DATAは Windows11では c:\Windows\Globalization\ICU でよければ指定は不要です
Linux でも "uconv --version" がOKなら必要ないですが、コンバータ Open が失敗する場合に
libicudata.so.xx を探してそのディレクトリーを指定してください。
自分で .cnv ファイルを作成して省略値のフォルダー以外においた場合はその場所を指定する必要があります
環境変数 ICU_DATA に設定してもOKです
ICU_DATA
例)(Linux) ICU_DATA /system/usr/icu:/data/data/yourcnvs
(Windows) ICU_DATA w:\icu\icu562\icu\bin;w:\icu\icu481\icu\bin
DBCS_CHARSET : UCS<-->EBCDIC 変換でDBCS をサポートする文字セットを指定する。
この指定がない場合は全SBCS変換になります。
"CONVERTER 0" の場合は DBCS_CHARSET ではなく SJIS_OPT で指定してください
例)
DBCS_CHARSET cp939 #Japanese
DBCS_CHARSET cp933 #Korean Mixed EBCDIC
DBCS_CHARSET cp935 #Chinese(Simplified) Mixed EBCDIC
DBCS_CHARSET cp937 #Chinese(Traditional)Mixed EBCDIC
SBCS_CHARSET : UCS2<-->EBCDIC SBCS 変換文字セットを指定。
DBCS_CHARSET を指定した場合は不要。
"DefaultMap"を指定すると CP037 の ISO8859-1<-->EBCDIC に相当する内部テーブルを使用。
"DefaultMapEuro" は CP1140 相当で ebc-9f が u00a4(Currency Sign) ではなく u-20ac(Euro Sign) に変換します
"CONVERTER 0" の場合は DEFAULTMAP/DeafultMapEuro のみ指定でき、この時はDBCS_CHARSETは指定できません
"CONVERTER 1" の場合は 9f-->20ac(Euro sign) を定義するコンバーターは
cp037 vs cp1140 や cp273 vs cp1141 の様に別途あるの使い分けてください
例)
SBCS_CHARSET DefaultMap
SBCS_CHARSET CP1140 #ICU; EBCDIC 037+Euro
SBCS_CHARSET 500 #Windows codepage;IBM EBCDIC International
LOCAL_CHARSET : ユニコード<-->PC コードページ コンバーター名。
指定のない場合は 環境変数などからコードページが決定される
例)
LOCAL_CHARSET 437 # Windows codepage
LOCAL_CHARSET ISO-8859-1 # Linux, iconv converter
MAP_E2A/MAP_A2E: SBCS変換の補正をコードポイントごとに指定します。
"CONVERTER 0" のときのみ有効です
E2A は "CV b2m" に有効ですが "CV m2b" には影響しません
E2A の逆を別途 A2E で 指定する必要があります
例)
MAP_E2A 0xa0:0xaf
MAP_A2E 0xaf:0xa0
MAP_E2A 0xa1:~ # EBCDIC 0xa1 -> ASCII tilde
MAP_E2A 0xa1:u0101 # Uxxxx format is target of MAP_E2A only
MAP_A2E ~:0xa1 # EBCDIC 0xa1 <- ASCII tilde
SJIS_OPT KANA_EXT/ENG_EXT を使用する場合は E2A で Ascii>0x80 にするときは注意が必要です
ShiftJisでは 0x81<-->0x9f,0xe0<-->0xfc、EUC-JP では 0xa1<-->0xfe が 日本語DBCSの
1バイト目と定義されているのでB2Mの出力結果をM2BするとSBCSを誤ってDBCSに変換する可能性があります
例えば、次の例は ebc-15 と ebc-25 の置換を目的としたと考えられますが
MAP_E2A 0x15:0x0a
MAP_E2A 0x25:0x85
MAP_A2E 0x0a:0x15
MAP_A2E 0x85:0x25
0x85 はSJISのDBCS第一バイトなので、B2Mの出力 0x85xx が
0x85 の次のバイトと組み合わせで日本語DBCSとみなされます
SUBCHAR_0a : PCコードページへの変換のとき 0x0a(改行コード)の出力を制御する。
パターン (b):外部コンバータ使用 でのみ有効なパラメータ。
1 : 0x0a を SBCS 代替文字(の変換)で置換する。
0 : 0x0a をそのまま出力する。(省略値)
SUBCHAR_S2D : PCコードページへ変換の時、EBCDIC SBCS->マルチバイト変換を許すか。
パターン (b):外部コンバータ使用 でのみ有効なパラメータ。
例えば cp037 で ebc-a7==>u-00a7 だが cp932 では "CV b2m" で u-00a7==> 0x8198(2桁)
となる。"SUBCHAR_S2D 1" とすると u-00a7==> '?' とする。
1 : SBCS 代替文字(の変換)で置換する。
0 : マルチバイト出力を許す。(省略値)
SJIS_OPT : SJIS 変換オプションを指定する。
パターン (a):内部テーブル使用 でのみ有効なパラメータ。
XCV/CV コマンドでは同じ効果のコマンドラインパラメータがあり、
コマンドのパラメータの指定が優先される。
ENG_EXT :日本語英小文字拡張(CP939=CP300+CP1027)
KANA_EXT:日本語カタカナ拡張(CP930=CP300+CP290)
IBM :EBCDIC 漢字を SJIS-IBM エリアにマッピング (省略値)
NEC :EBCDIC 漢字を SJIS-NEC エリアにマッピング
JIS78:SJIS 1978 版
JIS83:SJIS 1983 版 (省略値)
例)
SJIS_OPT NEC
SJIS_OPT JIS78
SJIS_OPT KANA_EXT
SOSI_A2E : DBCS を EBCDIC へ変換する時の SO/SI 設定オプション。
XCV/CV/SAVe/REPlace/COPy/... コマンドでは同じ効果のコマンドラインパラメータがあり、
コマンドラインパラメータの指定が優先される。
省略値は INS。
INS :SO(0xe), SI(0x0f) を 挿入。 出力は伸張します。
REP :DBCS文字列の前後がスペースがあればこれを置換、なければ挿入。
SHIFT:REPに加えて挿入による伸張分を後続のスペースの削除で吸収。
例)
SOSI_A2E REP
SOSI_E2A : DBCS を EBCDIC から変換する時の SO/SI の取り扱い。
XCV/CV/SAVe/REPlace/COPy/...などのコマンドでは同じ効果のコマンドラインパラメータがあり、
コマンドラインパラメータの指定が優先される。
DEL :SO/SI を削除。出力行長が短縮になります。
REP :SO/SI を ASCII スペースで置換(省略値)。
## サンプルファイル ##
xeebc.map ~
###########################################################################
# CONVERTER 1 # 0:Internal Table, 1:ICU, 2:iconv/WindowsAPI||+v124R
# ICU_DLL_SUFFIX 44 # ICU dllname suffix
# ICU_API_SUFFIX _44 # ICU apiname suffix
# DBCS_CHARSET cp939 #(Linux)EBCDIC Japanese English lower-case letter extension.~||+v124R
# SBCS_CHARSET cp037 #(ICU)EBCDIC-US ||+v124R
# SBCS_CHARSET 37 #(Windows)ECDIC-US ||+v124I
# SBCS_CHARSET DefaultMapEuro # for "Converter 0"
# LOCAL_CHARSET ISO-8859-1 #(Linux)Latin-1 ||+v124R
# LOCAL_CHARSET 28591 #(Windows Codepage) for ISO-8859-1||+v124R
#
# SJIS_OPT ENG_EXT # ENG_EXT/KANA_EXT
# SJIS_OPT NEC # IBM/NEX/JIS78/JIS83
#
# MAP_E2A 0xa2: 0x5c # Yen sign and backslash
# MAP_A2E 0x5c: 0xa2 #
# MAP_E2A 0xa1: ~ # tilde and upper bar
# MAP_A2E ~: 0xa1 #
# MAP_E2A 0xa0: ? # tilde and upper bar
#
# SOSI_A2E INS # INS/REP/SHIFT
# SOSI_E2A DEL # DEL/REP
# SUBCHAR_0a 1 #1/0 replace by SBCS substitution char.
# SUBCHAR_S2D 1 #1/0 replace converter output by sub-char when SBCS is translated to pc-DBCS.
##################################################################################||~v124R
#
## Use Internal mapping table
#
# CONVERTER 0
# SJIS_OPT KANA_EXT
# MAP_E2A 0x15:0x0a
#
## Use ICU , DBCS codepage
#
# CONVERTER 1
# DBCS_CHARSET cp930
#
## Use ICU , SBCS codepage
#
# CONVERTER 1
# SBCS_CHARSET cp037
#
## Use iconv (Linux)
#
# CONVERTER 2
# SBCS_CHARSET cp1047
#
##################################################################################