** 2024/11/23 * v1.24
XCV

たくさんオプションがありますが一般的な使い方は
  xcv -cm2m -f:cpfrom -t:-cpto inputfile -ooutputfile
m2f/f2mでは"m"には現在のコードページが対応しますが -L で現在のコードページ以外を指定できます

EBDCDICファイルの場合は
  xcv -cb2b -f:cpfrom -t:-cpto inputfile -mf:ebcmapfile
b2m/m2bでは"m"は現在のローカルコードページで"b"はebcmapfileで指定するか-CPEB:で指定します
  xcv -cb2m inputfile -cpeb:cp939
EBCDIC変換では改行コード(-Masceol/-Mseteol),DBCS SOSI処理(-Sx),-Fnn(固定長レコードサイズ)
などが関連するオプションです

Windowなど EBCDIC をサポートしていない場合、
あるいはLinuxでiconv がサポートしていないコードページの場合
ICUを導入してください。Windows11では ICU が使えるようです。
ICUでは独自の変換テーブルも追加できます。
追加の変換テーブルをICU導入ディレクトリー以外においた場合は
環境変数 ICU_DATAか xeのEBCDIC cfgファイルの ICU_DATA を指定する必要があかもしれません
(アンドロイドではICU導入ディレクトリーは保護されている可能性があります)
  xcv -cb2b -f:cpfrom -t:-cpto inputfile -icu
ICUを使用している場合は swaplfnl(390std) を指定できる場合があります
 (std :ebc-x15-->U0085, ebc-x25-->U000a ==> swap:ebc-x15-->U000a, ebc-x25-->U0085)
  xcv -cb2m inputfile -cpeb:ibm37,swaplfnl -f80

UTF8変換の場合は m2f/f2m/b2f/f2b を使用します

u2f/f2uでは\uxxxx表記のユニコードに対応します
ユニコード関連オプションは -Y4(ucs4) -Yb(BOM read/write) -yL/nL(Little/Big Endian)。

その他の NEC/IBM,JIS83/JIS78... 等は B2S/S2B など日本語変換用のオプションです

*********************************************************************
**(Unix では "/" のではなく "-" を使用する)
*********************************************************************

xcv:V1.24(6): SJIS,JIS,EUC,UCS,UTF-8,EBCDIC
              任意のiconv/ICU文字セット/WindowsCP コード変換 PGM。
format:
 xcv  [/options] [ infile | - ] [outfile]
  infile   :元ファイル名。省略するとパイプ入力。"-"は標準入力。
            b2s/s2b のとき "print"と指定するとDBCS変換テーブルを出力する。
  outfile  :出力ファイル名。省略すると標準出力に出力。
  /options :以下、大文字小文字区別なし。
    /2errf :標準エラー宛先ファイル。
    /[C]x2y:x2y は以下。(オプションパラメータとして最初に指定すること)
            e2s/s2e: EUC<-->SJIS.
            j2s/s2j: JIS<-->SJIS.
            j2e/e2j: JIS<-->EUC.
            e2e,s2s: EUC/SJISの半角カタカナ-->全角カタカナ変換に使用する。
            b2s/s2b: EBCDIC<-->SJIS。
            b2e/e2b: EBCDIC<-->EUC-Japanese。
            b2a/a2b: EBCDIC<-->ASCII。(SO/SIは無視、DBCS処理せず)
            b2m/m2b: EBCDIC<-->LOCAL CodePage。外部変換ツール(ICU/iconv)使用
            b2f/f2b: EBCDIC<-->UTF-8 。外部変換ツール(ICU/iconv)使用
            k2L/L2k: SJISの半角カタカナ(K)<-->英小文字変換(L)。
                     ASCII変換されたファイルを他方で再変換する。
            s2u,u2s: SJIS<-->UCS.
            s2f,f2s: SJIS<-->UTF-8 (8bit Unicode Translation Format).
            e2f,f2e: EUC(Japanese)<-->UTF-8.
            m2f,f2m: MB(LocaleCode)<-->UTF-8.
            m2m/b2b: "/F:", "/T:" で指定するコード間の変換
                     Windowsのコードページ番号,iconv --list,uconv -lから選択
                     Windows Codepage, ICU では
                     指定可能な値は "/List" でリストされます
            u2f,f2u: UCS<-->UTF-8.
    /CPEB:cp :EBCDIC コードページ。 B2M/M2B用。
    /Enn   :変換エラーMSG最大出力。省略値=10。
    /F:from:変換元コードページ。m2m/b2b で使用
#ifdef W32
            省略値は "0"(CP_ACP). 65001の代わりに"UTF8"でも良い。
#else
            指定がないと "locale -a"で調べて決める。
#endif
    /F[nn][N]:EBCDIC ファイルが固定長。nn:LRECL(省略値=80)。
              B2x(入力) 又は x2B(出力) EBCDIC ファイルのLRECL。
              N: 行末8桁が行番号欄。SO/SI挿入で行長を調整する。
                 "N" は m2b でのみ有効。
    /ICU     :B2x/x2B(x:B/M/F)のとき /mf:の指定無しで ICU 使用の指定。
              /MF:mapfile を指定しない場合は
              uconv.exe, ICU library(.dll)にPATH を通すこと
    /ICU_DATA:/Listのとき icudt*.dat を含むディレクトリーの指定。
              /MF の代わりに指定
              Winowsの省略値は c:\Windows\Globalization\ICU
    /List  :ICUコンバーター(/ICU指定時)またはWindowsコードページをリスト。
#ifdef LNX
    /Llocale:m2f/f2mで使用するロケールコード。
              指定がないと "locale -a"で調べて決める。
              ex) -Leucjp , -Lsjis , -Liso88591
#endif
    /Mxxx  :マッピングオプション。
            (必要なら "/mJIS78 /mNEC" のように複数指定してください。)
            CP943C / MS932 / SJIS(省略値)。s2u,s2fで使用。
              SJIS:Unicode=1:n のコードのときどのMappingをとるか選択する。
            NEC / IBM(省略値)。u2s,f2s,b2sで使用。
              SJIS:Unicode/EBCDIC=n:1 の時どの領域のSJISにMappingするか。
              IBM:IBM拡張文字、NEC:NEC特殊文字ないしNEC選定IBM拡張文字。
            SBCS: B2x,x2Bで使用。すべて一バイト文字として変換
            ANK / CRLF / CRLFZ。B2x,x2Bで使用。
              ANK:制御文字は'?'に変換。CRLF:制御文字は CR と LF のみ変換。
              CRLFZ: NL(0x15) と CR+NL(0x0d15) 両方で EBC ファイルを行分割
#ifdef UNX
            ASCEOL: EBCDIC ファイルの行末コードが 0x0a。省略値:0x15。
#else
            ASCEOL: EBCDIC ファイルの行末コードが 0x0d0a。省略値:0x15。
#endif
            SETEOL: 出力各行にEOL-IDを追加出力。m2m, x2B, レコードモード B2x用
            JIS78 / JIS83(省略値)。B2x,x2Bで使用。
              新JIS 旧JISを指定。新旧で28対56文字が入れ替わっている。
            CP290/CP037:CP1027の代わりにCP290/CP037変換TBL使用。 B2x,x2B で使用
              CP290:カタカナ拡張。CP1027:英小文字拡張。
              CP037:ラテン1 と ISO-88591。
              "KANA-EXT":カタカナ,"ENG-EXT":英小文字
    /MF:mapfile :B2M/M2B/B2B 用マッピングパラメータファイル。
                  (cv コマンドの説明(xej.txt内)を参照)
                 /CPEB:cp で EBCDIC コードページを指定しても良い
                 但し、ICUを使用する場合は/ICUかこのファイル内で指定
    /Ofnm  :outfile パラメータに同じ。 e.g) -oOutFile
    /Rx    :無効な変換不能文字を置きかえる文字。/r: /r'^' 等。
            省略値は '?'。u2s,f2s,B2x,x2B,m2m でのみ使用。
            2 バイトヘキサ文字指定も可能。/r7f 等。
            DBCS置換文字は 2 桁文字か 4 桁ヘキサ数値で指定。省略値は"?"。
            両方必要なときは "/r. /r。" のように指定する。
    /Sx    :B2x/x2B で SO(0e)/SI(0f)の取り扱いオプション。
            B2x の場合; x=d:削除。x=a:SOが行頭にあると想定。
                        x=r:SO/SI をスペースに置換。
                        B2mの場合、mappingファイルのオプションを上書きする。
            x2B の場合; x=r:前後がスペースなら置換、そうでないときは挿入。
                        x=s:スペース置換だが、挿入分は後続のスペースを縮める。
                        x=d:SO/SIを設定しない。x=i:SO/SIを挿入。
                        m2Bの場合、mappingファイルのオプションを上書きする。
    /T:to  :変換先コードページ。m2m/b2b で使用
#ifdef W32
            省略値は "0"(CP_ACP). 65001の代わりに"UTF8"でも良い。
#else
            指定がないと "locale -a"で調べて決める。
#endif
    /\u    :DBCSのユニコードが\uxxxx 表記。
    /Yx,/Nx:Yes/No フラグオプション、x は以下。省略値は ( )内。
            4  :4 バイトユニコード(/N4)
            b  :UTF-8 File読みこみ時先頭 BOM をCHK,書きこみ時BOMを出力。(/Nb)
            h  :入力はHexコード。省略値は標準入力は/Yh 以外は/Nh。
            i  :M2M で ICU 使用の指定。(/Ni)
#ifdef UNX
            L  :Unicode File をLittleEndianで読み書きする。(/NL)
#else
            L  :Unicode File をLittleEndianで読み書きする。(/YL)
#endif
            m  :入力がMac形式(EndOfLine ID が 0x0d)。(UCS変換以外で使用).(/Nm)
            q  :標準入力の時1回の処理で終了する。(/Nq)
            x  :Hex表示で出力。Xは大文字出力。(/Nx)
            z  :SJIS<->EUC<->JIS変換で半角カタカナを全角カタカナにする。(/Nz)
 例) xcv /cs2u sjis1 | xcv /u2s >sjis2; xcv /j2s -; xcv /cu2f /YLb ucsbe1 /of1
     xcv /ce2s /yz euc1 sjis3; xcv /u2s /r"/" /mNEC ucsdata sjis1
     xcv /cm2b ms932 ibm939.txt  /mf:sjisebc.map /F80 /Mseteol /Masceol
         (locale-->ebcdic, output LRECL=80, set ASCII-EOL-ID)
     xcv /cm2b ms932 ibm939.txt /mf:sjisebc.map  /Masceol /Mseteol
         (locale-->ebcdic, output line with appened ASCII-EOL)
     xcv /cb2m ebcf1 ascf2 /mf:sjisebc.map /F80 /Mseteol
         (locale<--ebcdic, input LRECL=80, output line with appened ASCII-EOL)
     xcv /cb2m ebcf1 ascf2 /mf:sjisebc.map /Masceol
         (locale<--ebcdic, input line with ASCII-EOL-ID
#ifdef W32
     xcv /cb2m ebcf1 ascf2 /mf:mapcv1 /CPEB:37
     xcv /cm2m latin1 latin15 /Mseteol /f:28591 /t:28605
#else
     xcv -cb2m ebcf1 ascf2 -mf:mapcv1 -CPEB:37
     xcv -cm2m latin1 latin15 -Mseteol -f:ISO-8859-1 -t:ISO-8859-15
#endif
     xcv /cm2m latin1 latin15 /Mseteol /f:28591 /t:28605
     xcv /cb2b ebc1   ebc2 /Mf:ebc.map /Mseteol /f:cp930 /t:cp939
     xcv /cf2b utf1 -oebc1 /Mf:xeebc.map /cpeb:cp939
     xcv /cf2b utf1 -oebc1 /ICU /cpeb:ibm-37,swaplfnl /mf:cfgmap.cv1