2024/11/30
= コード変換 (ConVersion)
CV {e2s|s2e|e2e|s2s|s2j|j2s|e2j|j2e} [z] [NX] [.lab1 .lab2]
CV {s2u|u2s|s2f|f2s|u2f|f2u|e2f|f2e|m2f|f2m} [bom] [ucs4] [be|le] [ibm|nec]
[\u] ['err-rep-char']
CV {b2s|s2b|b2e|e2b|b2a|a2b} [CRLF|ANK] [CP290|CP1027|KANA-EXT|ENG-EXT]
[JIS78] [-S[a|d|r|m|s]|-SBCS] ['err-rep-char']
CV {K2L|L2K}
CV x2c [EBC] [i[-m[:{n|max|rep}]]] [mult | -Hpre[XXpost]]
[CRLF|ANK] [CP290|CP1027|KANA-EXT|ENG-EXT] [JIS78] [-S[bcs|a|d|r]
CV {M2B|B2M} [CP290|CP1027|KANA-EXT|ENG-EXT] ['err-rep-char']
CV {M2B|B2M|B2F|F2B} [CPEB:ebcdic-codepage] [-S{a|d|r}]
CV B2B [CPEB:ebcdic-codepage] [-S{a|d|r}] [SETCP]
CV M2M -F:charset -T:charset [-SBCS] [-ANK] [ICU] ['err-rep-char']
2 番目以降の形式は DOS版ではSupportされません。
[NX], [.lab1 .lab2]は共通。
(同じ機能のバッチコマンドxcv も同梱しています)
e2s/s2e :EUC<-->SJIS
s2s :SJIS半角カタカナを全角に変換
e2e :EUC半角カタカナを全角に変換
s2j/j2s :SJIS<-->JIS
e2j/j2e :EUC <-->JIS
s2u/u2s :SJIS<-->UCS2(2byte Unicode)
s2f/f2s :SJIS<-->UTF8(8bit UTF)
#if defined(W32)||defined(LNX)
e2f/f2e :日本語EUC<-->UTF8(8bit UTF)
m2f/f2m :環境のコードページ<-->UTF8(8bit UTF)
現在開いているファイルのLocaleコードとUTF8との変換。
変換不能文字は"?"に置換しますが変換エラーでなくても
不正なLocaleコードにより変換は非可逆(Locale->utf8->Localeで元に戻らない)
であることもあります。
#endif
u2f/f2u :UCS2<-->UTF8
b2s/s2b :IBM-EBCDIC<-->SJIS 変換。
b2e/e2b :IBM-EBCDIC<-->EUC-JP 変換。
b2a/a2b :IBM-EBCDIC<-->ASCII 変換。SO/SI(0x0e/0x0f)は無視されます。
k2L/L2k :半角カタカナ<-->英小文字変換。
EBCDIC-->ASCII変換で英小文字が半角カタカナに
誤って変換されてしまったファイルの英小文字を復元
k2L:CP290 による変換をCP1027で変換しなおす。
L2k:CP1027による変換をCP290 で変換しなおす。
x2c :有効なヘキサ文字列を(スペースは無視)バイトコード変換。
#if (defined(W32)||defined(LNX))
M2B/B2M :Localコードページ<->EBCDIC 変換を mapfileに従って変換します
mapfileにはEBCDIC/Localのコードページ、変換の補正などを定義します
mapfile は ini ファイルで指定します
'err-rep-char'はmapfileのSUBCHARを上書きします。
"EBCDIC変換"参照
CPEB:ebcdic-codepae オプションを指定するとmapfile定義以外のコードページを指定できます。
F2B/B2F :UTF8<->EBCDIC 変換(M2B/B2Mで"M"=UTF8)
F2Bの場合、CPU8で開いたファイルは直接変換できないので
CPLCで開いてF2Bを実行してください。
また改行コードは/Meを指定しないと変更されません。
例えば "END /Me" または "SAVe xx /Me".
保存後にも "EDIt xx /Mue" で 改行コードをEBCDICに変更できます
B2Fの場合も同様に改行コードの変更が必要です。
B2B :EBCDIC ファイルを開いて、異なるコードページに変換する時に使用します
CPEB:ebcdic-codepae で変換先のコードページを指定する
変換元のコードページはファイルのコードページ。
コンバーターは ::xeebc.map の指定に従い
ICU か iconv(Linuxの場合) を使用します
SETCP :開いたEBCDICファイルのコードページをCPEB:指定のコードページに変換後に
そのコードページで表示します。
SETCPの指定がない場合は、変換後のコードは元のコードページで表示されます
変換を伴わないコードページの変更には "EBC SETCP:codepage" コマンドを使用してください。
M2M :任意のコードページ間の変換。
-f:charset -t:charset に コードページを指定する。
を指定する。
指定可能なコードページ番号は
"xe -c?" (Windows)
"iconv -l" (Linux)
"uconv -l" (ICU)
でリストされる。
一方は省略できます、そのときは Windowsの場合"0"(=CP_ACP)、
Linuxの場合現在のLocaleとiconvのリストから決定する。
Windows では "65001" の代わりに "UTF8"を指定できます。
EBCDICの変換には使用できません。 B2M/M2B/B2B を使用してください。
#endif
z :半角カタカナを全角に変換。
#ifdef UNX
変換タイプの指定が無ければ省略値は e2eのカタカナ変換
#else
変換タイプの指定が無ければ省略値は s2sのカタカナ変換
#endif
BOM :u2f/s2f/f2u/f2sの時ファイル先頭のBOM(UTF-8の
タイプ識別子)をCHK/WRITEするとき指定。
UCS4 :u2f/f2uで4バイトユニコードで読み書きする
"UCS4"を指定しない時 f2u は u-10000 以上に対しサロゲートペアを出力します
BE|LE :u2s/u2f/s2u/f2uのときUnicodeをの読み書きが
BigEndianかLittleEndianか指定。
省略値は UNIXではBE、以外はLE。
ICU :M2MでICUコンバータを使用する
IBM|NEC :u2s/f2sのとき1つのUnicodeに対し複数のSJISコード
ポイントがある時どのSJIS領域に対応させるかの指定。
省略値は IBM。
JIS78 :JIS78(旧JIS)->JIS83(新JIS)で 28文字のコードポイント
の入れ替えがあったがJIS78に従った変換をする。
ANK :EBCDIC 制御文字の変換は代替文字(B2Mでは'?'、など)で置き換え。
\u :\uxxxx形式のユニコードを置換する(u2s,u2f)
:\uxxxx形式のユニコードへ置換する(s2u,f2u)
CRLF :制御文字はCR,LFのみ置換する。
EBC :x2cの結果をIBM-EBCDIC-->ASCII変換する。
SBCS 指定でない場合 SO/SIは rep オプションでない限り
次行に継続する。
CP290/ :b2s/s2bのEBC変換でIBM-CP290 SBCS変換テーブル(カタカナ拡張)使用。
CP1027 SBCS変換の省略値はIBM-CP1027(英小文字拡張)。
KANA-EXT/ :KANA-EXT:CP290
ENG-EXT ENG-EXT:CP1027
i[-m[:{n|max|rep}]]
:i-m:入力桁範囲。指定無しは行頭。m 無しは行末まで。
n:出力挿入桁位置。省略値は行頭。
max :出力位置を最長行の行長位置とする。
rep :HEX文字その位置で置換する。
mult :HEX文字エラーがあっても次のHEX文字を探す。
-Hpre[XXpost]:prefixとpostfixの間を変換。
XXがprefix,postfixの区切り。
例。-H0x' -Hx'xx'
-S[a | d | i | r | m | s | bcs]
a:行頭にSOがあるものと想定する。
bcs:SBCSモード(DBCS置換をしない)
d:B2xでSO(0x0e)/SI(0x0f)を削除,x2BでSO/SIを設定しない。。
i:x2BでSO(0x0e)/SI(0x0f)を挿入
r:x2Bで前後がスペースならSO/SIで置換、
スペースでなければSO/SIを挿入。
B2xではSO/SIをスペース置換
m:B2xでSIが行末までない時次行SOが継続とみなす。
s:上記 -Sr の操作でSO/SIの挿入による拡張分を後続のスペースを縮める
ことで補う。2桁以上の連続スペースからSO/SI挿入による増加分を相殺します
省略値はB2xではスペースに置換、x2BではSO/SI挿入。
但し外部コンバーター使用(B2M/M2B,B2F/F2B)ではxeebc.mapが
省略値を定義します
err-rep-char:変換できない時出力する文字を指定する。
HEX文字指定もOK。SBCS と DBCS と両方する時は2回別々に指定する。
例) xcv f2s "."
xcv m2b "6f" "4040"
xcv b2m "?-"
省略値は '?'。
NX :非表示行は対象外とする。
.lab1/2 :対象行範囲をラベル行コマンドIDで指定。