***** 2010/07/01 ***

.(BUG)
   -(wxe/gxe) 縦と横の両方でHEX表示しているときwxpコマンドがABEND.
   -NUM setr/setr コマンド:マージン溢れをチェックしてなかった。
   -シフト編集行コマンドがCOBOL行番号欄(Col.1-6)を考慮してなかった。
   -ワード探索(FWF/FWB/IWF/IWB)コマンド。
      マルチバイト探索文字を指定した時指定の分離文字( "(xxx" の xxx )が
      カーソル位置の行にないとき行頭ないし行末までの文字列が探索対象になる。
      省略値のスペースなど1バイト分離文字までを探索文字列とする。
   -TC コマンド 
      UTF8 ファイル上での TC 1-10="AsciiString" 形式の時 コンスタント文字列の変換が必要
      TC FMT コマンドで "N"(数字フィールドチェック)オプションが UTF8ファイル以外で無視されていた。
   -SPLit コマンド 
      STRDELM オプションでの分離文字列指定がDBCSのときUTF8ファイルで有効でない。
   -EBCDIC 変換cfg ファイルで CHARSET 指定無しで ICU モードを指定するとABENDする。

.RECORDモード編集オプション追加。
  -メインフレームのファイルは通常改行コードを使用しません。
   行長はファイルの属性として定義します。
   行長が固定長のファイルを PC に ダウンロードして編集する場合に使用します
  -E filename /M[m|p|u|t|R][m|p|u|R] /Fn[-m]
      R:レコードモード(前はReadオプション、後はWriteオプション
         p:改行文字が 0x0d0a, u:改行文字が 0x0a m:改行文字が 0x0d
      Fn[-m]:レコード長、マージン
        F80-72 で レコード長:80, 右マージンが col.73-80 
        右マージンを非保護域とするには P0 を指定してくださ
     例) e file1 /Mr /F80-72 P0
  -レコードモードReadは改行文字を無視し /Fn 指定の レコード長で読み込み    
   レコードモードWriteは改行文字を出力しません。
     レコードモード、レコード長はプロファイルに保存されます。
     レコードモードファイルに改行文字を挿入するには /Mrp などとします。
     非レコードモードファイルから改行文字を取り去るには /Mpr などとし、保存後
     /mr Fxx で開き直します。
     プロファイルのレコードモードをリセットしたい時は R 以外の/Mオプションを指定します
     /F0 指定の時もプロファイルのレコードモードをリセットします。
  -レコードサイズの変更。
   EDIt コマンドで新たに /F オプションを指定することでプロファイルは上書きされますが
   REPlace/CREate/SAVe コマンドで出力時に変更できます。
     REPlace/CREate/SAVe  filename  [/M[p|u|m|r]]  [/Fn[-m]]
   /M で レコードモード(改行コード無し)<-->通常の改行モード の変更が出来ます。
   /F で レコードモードの行長を指定あるいは変更出来ます。
   (SAVe コマンドではファイル名したときのみ /M, /F が有効です、単に保存する場合は 
    EDItコマンドの /M でレコードモード<-->改行モードのみ変更できますが、
    レコード長の変更は出来ません。)

     例1)  rep file1 cpeb /mr /f80
            改行モードで開いたファイルから EBCDIC 80 桁レコードモードファイルを作成
     例2)  s   file2 cplc /mp
            例1の逆の操作になります。
  -REPlace/CREate コマンドで /M /F を指定しなかった場合
   開く時の出力モードオプション指定が適用されます。
     例えば "e file1 cbep /mr f80" で ファイルを開き
            "rep file2 cplc" とすると短い行はレコード長まで拡張され
            file2 のプロファイルに CPLC, LRECL=80, レコードモードが記録されます
            " e file1 cpeb /mrp f80" で開き
            "rep file2 cplc" とすると各行には改行コードが追加されます。
            UTF8 ファイルの場合 LRECL/レコードモードはプロファイルに記録されません。
  -EBC ファイルを E8 コマンドで開くとレコードモードとみなします。
  -レコード長を超えた挿入は出来ません、短い行は保存時にレコード長まで拡張されます。
  -TABカウンターはオープン時は 1 に設定します。
   保存時にTABはスペース置換します。是を避けるには"NOTC" オプションで開いてください。
  -UTF8ファイルにはバイト長はなじまないので不適です。

.EBCDIC ファイルサポート。

  -ロケールコードに変換せずに直接編集、HEX表示はEBCDICコードを表示します。
   メインフレームのEBCDICファイルを無変換でダウンロードしたファイルを編集したり
   無変換オプションでEBCDICファイルをNFSマウントして編集する場合を想定しています
   画面にはユニコードで出力するのでローカルのコードページにない文字も表示可能です。

  -EDIt/SAVe/REPlace/CREate/APPend/CUT/END/COPy/MOVe/PASte コマンドで CPEB オプションを指定
   不正なEBCDIC文字があるときこれを無視して開く時は IE オプションを指定する。
   ヘッダー行には "=E" , バイナリーモードの場合は "=e" で表示されます
     例。 "e file1 cpeb"
   COPy/MOVe/PASte コマンドは指定のコードページからコピー先のコードページに変換され、
   SAVe/REPlace/CREate/APPend/CUT/ENDでは指定のコードページに変換して出力されます。
     例。 "rep file2 cpeb nx ie"
   出力時のオプションはプロファイルに記録されるので1度指定すればセッションを跨って有効です。
   またCOPy/MOVe/PASte コマンドはプロファイルの記録をチェックするので通常はCPxxの指定は不要でしょう。
   デレクトリーリストを開く時のCPEBオプションはフォルダー内のファイルの省略値となります。
   他のオプション(CPLC/CPU8/CPAS)で開くとプロファイルは上書きされます。

  -出力コマンドで変換エラーがあるときも最後まで出力されますがプロファイルは更新されません。
   変換エラー文字は代替文字に置換されます。
   代替文字はコードページ依存ですが cfg ファイルで設定できます(外部コンバーター使用の場合)。
   DBCSの代替文字は定義されてない場合 u-fffd,u-ff1f(DBCS "?"),u-3000(DBCS space)の順に
   変換可能なものを採用します。

  -DBCS について
   EBCDIC では 2バイト文字は SO(0x0e)とSI(0x0f)で囲まれます。例えば 0e-40-40-0f で DBCS のスペース。
   SO/SIは1文字ずつ囲む必要はなく文字列を囲みます。
   EBCDIC 以外では DBCS は 特定のLeadingバイト(>=0x80)と次の文字の組み合わせです。
   3バイト(EUC-SS3),4バイト(GB18030)の場合もあります。 DBCSスペースは例えば MS932 では 81-40 です。
   従ってEBCDIC<-->ロケールコードページの変換では行の長さが変わります。
   コマンドのオプションででSO/SIの扱いを指定してください。
   省略値はcfg ファイルで指定する。行コマンドのCopyはパラメータ指定できないのでcfgが適用されます。
     例.   COPy     file1 cpeb -sd       :EBCDIC ファイルを画面内にコピーする時 SO/SI を削除。
           COPy     file1 cpeb -sr       :SO/SIはスペース置換されます。行長が変わりません。
           REPlace  file1 cpeb -sr       :EBCDIC に変換して出力する時 SO/SIが挿入されるが
                                          前後がスペースであればそれを置き換える。
           REPlace  file1 cpeb -si       :SO/SIが挿入されるので行長が変わります。
   cfg では省略値を設定します。
       SOSI_A2E      REP (="-sr") または INS ("=-si")
       SOSI_E2A      DEL (="-sd") または REP ("=-sr") 
   
  -コードページ、オプションは cfg ファイルで指定。
     cfg ファイル名はINIファイルで指定,省略値は ::xeebc.cfg
       EBCDIC_cfg        ="" #("::xeebc.map")# EBCDIC translation config filename
     形式は従来 3270接続 で使用したものと共通です。
       但し以下のオプションがxe編集用にxehostsでの指定に替わり追加されました。
        SJIS_OPT  ENG_EXT      # 日本語英小文字拡張(CP939=CP1027)
        SJIS_OPT  KANA_EXT     # 日本語カタカナ拡張(CP930=CP290)
     CV コマンド(コード変換) B2M/M2B 用の マップファイルオプション -MF: は廃止されました
     ini ファイルでの指定が使用されます。
     cfgファイルがない時の省略値は以下のようになります。
       (Windows)
         日本語環境のとき コードページはCP930(日本語カタカナ拡張、内部変換テーブル)、JIS83 で画面表示されます。
         日本語環境以外の コードページはCP037で画面表示。DBCS(SO/SI)は考慮されません
       (Linux)
         日本語環境のとき コードページはEUC-JP(日本語カタカナ拡張、内部変換テーブル)、JIS83 で画面表示されます。
         日本語環境以外の コードページはCP037で画面表示。DBCS(SO/SI)は考慮されません
       cfg ファイルで CONVERTER=0 を指定した時もコードページの省略値は同じですが 
       SOSI,SJIS オプションを指定することが出来ます。

     (例)外部、Windowsの変換テーブルを使用するときはcfgファイルで以下のように指定します
           コントロールパネル->地域と言語のオプションで追加が必要かもしれません。
           Windows では DBCS はサポートされてないようです。
           従って日本語以外のCJKではWindowsではICUの導入が必要となります。
           ICU を使用する場合 DLL/so のPATHを設定する必要があるかもしれません。
           LIBPATH / LD_LIBRARY_PATH などOSにあわせて設定してください。

           CHARSETで指定する値はICU/Windows/LinuxICONVなどで異なります
           文字セットのリストは "uconv -l" ないし "iconv -l" で得ることができます。
           Windows の CP はコントロールパネル->地域と言語のオプションで調べる。

           (ICU を使用:SBCS言語) 
              CONVERTER          1
              ICU_DLL_SUFFIX    44
              ICU_API_SUFFIX   _44  
              SBCS_CHARSET     cp1047          //EBCDIC Latin/1 Open System(iso-8859-1)

           (ICU を使用:DBCS言語) 
              CONVERTER          1
              ICU_DLL_SUFFIX    44
              ICU_API_SUFFIX   _44  
              DBCS_CHARSET     cp1388          //chinese simplified. superset of cp935

           (Windows の MultiByteToWideChar/WideCharToMultibute API を使用)
              CONVERTER          2
              SBCS_CHARSET       20924        //EBCDIC Latin/1 Open System(1047+Euro)

           (Linux の iconv API を使用)
              CONVERTER          1
              SBCS_CHARSET       cp1047

     改行コードの変換は実用と定義とが不明確になっています
         EBCDIC NL(x15)-->u0085, LF(x25)-->u000a 
         ASCII  LF(0x0a)-->EBC-15/EBC-25
     コードページの変換を変更したい時は次のオプションを指定してください。
         MAP_E2A  0x15: 0x0a   # EBCDIC 0x15(NL) -> ASCII 0a(LF)
         MAP_E2A  0x25: 0x3b   # EBCDIC 0x25(LF) -> ASCII "?"
         MAP_A2E  0x0a: 0x15   # EBCDIC 0x15(NL) <- ASCII 0a(LF)
         

  -CV コマンドは CPLC(Locale コード)ファイルに対して B2M/M2B を使用できます。
   CPEBで開いたファイルには使えません REP コマンドなどで変換してください
   変換オプションは前記のcfgファイルを共用します。 -MFcfgfile  オプションは廃止です。
   B2M はロケールコードまで変換するので変換エラー表示の可能性(代替文字表示)が高くなります。
   編集ではユニコード変換した後にローケールコード変換せずに表示しています。

  -0x09はタブとしては扱われません。(0x05もタブとはしません)
   文字挿入モード時のTabキーは0x09の挿入ではなく文字置換モード時と同様タブジャンプとなります
  -HEX入力モード(Ctrl+F11)の時DBCS考慮はなく1バイトづつ画面に送られます。
  -SO(0x0e)/SI(0x0f):DBCS 囲み文字は "?" で表示されます。
   DBCS入力時はSO)/SIが挿入されます。
   EBCファイルからCut&Pasteの場合SO/SIで囲まれて初めて(偶数バイトのみ)DBCS評価されます。
   例えば、UTF8/ロケールコードファイルにPasteする場合コード変換されますがSO/SIも
   一緒にCopyしてないとSBCS変換されます。
   DBCS位置でSplit行コマンドで行分割された後、
   Join 行コマンドでの行連結ではDBCS評価され得ますがTflow コマンドは間に1スペース
   挿入するのでもとには戻りません。
   無効なDBCS-EBCDICは ":;" で画面表示されます。縦HEX表示でHexコードを確認してください。
  -バイナリーモードで開くと(EB コマンド) DBCSは考慮されません(SO/SIは無変換でコピーされます)
   制御文字が多すぎてバイナリーモードと判定された場合は ET コマンドで開いてください。
  -Find/Change コマンド。
     kbdのUTF8モードにかかわらずEBCDICコードで探索、置換します。
     バイナリーモードで開いた時はDBCSは考慮されません
     -g (Grep), P'.' 探索はサポートされていません。
  - "#" 行コマンド(その行に記述を Native コマンドとして実行) はサポートされません。

.その他。
  -END/SAVe/REPlace/CREate コマンド
   CPxx(ファイルエンコーディング)オプション指定があるときプロファイルに記録する。
  -"p"(印刷)ディレクトリーリスト行コマンドの時プロファイルのエンコーディングオプションの記録をチェックする。
  -UTF8コードの分離文字もサポート。
   TC FMT, SPLit, TFLow コマンド
  -EDIt コマンドの P[0|1] (右マージンの保護)オプション指定もプロファイルに記録します。
  -UCS マッピングテーブル(表示桁が1桁のユニコードを操作するための内部テーブル)が溢れた場合
   2桁表示するが(以下のエラーメッセージが表示されます)、
      "UCS map tbl overflow...."
   ユニコードオプション(iniファイルの UnicodeTbl/UnicodeTbl_Consoleオプションでマッピングファイルを指定)で
   使用しないユニコードの範囲をDBCSと指定することにより1桁表示できるようになった。
   以下はマッピングファイルの指定例
      例)  "2  e000-f8ff          # 1:SBCS,2:DBCS; Private User Area を SBCS 範囲から除外"
  -CV コマンド UCS4(4バイトユニコード) オプション追加。U2F, F2U 用。
  -gxe/wxe では ロケールコードファイルもLigature 表示対象とする。
  -比較("=")行コマンド で 異なるエンコーディング(UTF8とロケールコードなど)のファイル間の比較をサポート。