ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

C言語でツールを作ることに

そもそもの話、汎用機上のファイル(キャラクタとか、パック10進数とかが入り混じったもの)を汎用機上でCSV形式にするツールってのがあるのですが、こいつがたまに言うことを聞かず、変換エラーとかで落ちてしまうのです。
いちいちデータを調べるのも骨だし、そのツールのソースがないというのも、またネックだったりします。
というわけで、汎用機上のファイルをバイナリモードでFTPダウンロードしてきて、そいつを適当にいじってやれば、CSV形式への変換ぐらいは出来るだろうとの判断で、ツールを作るにいたりました。
要件は、

  • データ型(charとかpackとか)・データ長がCSV形式で記載された定義ファイルを読み込む
  • データ長ごとにデータを区切りつつ、CSV形式に変換する
  • char型はebcdic→ascii変換をする(コード0-255の間のみサポート。漢字は無視。)
  • pack型は文字に変換する(符号も考慮)

といったところです。
昨日、VBScriptではバイナリファイルを扱えないらしいことが判明してから、じゃあなにでツールを作ろうかってことで考えていました。
Perlっていう選択肢が当然のごとくあったのですが、なぜだか久々にC言語が書きたくなって、Cで作ることにしました。
一応の形は出来たっぽいのですが、なにぶん開発マシンはWindowsなので、UNIX上で動くCのツールを使うには、やや手順が煩雑になってしまいます。

  • 汎用機からFTPバイナリモードでダウンロードする
  • UNIXFTPバイナリモードでアップロードする
  • 定義ファイルを作る (Windowsで作ってアップロードする)
  • ツールを実行する
  • 結果のCSVファイルをダウンロードする

JREは各端末に入っているっぽいので、Javaで作っても良かったかなぁと、ちと後悔。ツールを作る際の言語の選定も気を使った方が良さそうです。
まあ、ftpやrshを使って、バッチ的な処理も出来るはずなので、必要なパラメータを与えたら、後はCSVファイルの入手まで自動的にやることを検討しようと思ってます。(まあ、多分できるでしょう。)