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で指定。