2009年11月19日木曜日

Windows Power Shellにて、EBCDICファイルからShift JISファイルへの変換をする




前回は、Windows Power Shellにおいて、Shift JIS形式のファイルを、コマンドラインだけで簡単にEBCDIC形式のファイルに変換出来るという記事を書かせて頂きました。

友達から、逆にEBCDICからShift JISへ復元(変換)する時はどうするのだ、という質問をもらいましたので、その件について書かせていただきます。

EBCDIC形式のファイルをShift JISへ変換するのは、大雑把に言って逆のコマンドを書けば良いのですが、さすがにコマンドラインにコマンドを投げっぱなしだと入力ミスした時に辛いんで、関数に仕立ててみました。
関数にしておけば、何度もコマンドを打ち込みする必要もないですし、それこそプログラムですから長くとも安心。

関数名はCodeConvertCoreにしましたが、こいつは、パラメータの指定によって、Shift JIS<--->EBCDICの両方向の変換に対応してます。
EBCDICからShift JISへの変換の時は、レコード長を変化させられます。
元々のファイルは1レコード14バイトでしたが、12バイトなどに変化させられます。
不足分は空白で補うように作ってあります。

EBCDIC形式ファイルからデータを読み取る時は、System.IO.StreamReaderクラスのReadToEnd()メソッドを使って一括で読み込み、読み込んだデータを、指定したレコード長に区切りながらShift JIS形式ファイルに出力し続ける仕組みです。