- ベストアンサー
固定長データ加工
固定長データをCSVに生成する際、表示させたいデータが、 スキップされ文字コードとして認識されないため 固定長データの加工のノウハウを勉強したいと思っています。 例えば固定長データをバイナリエディタでチェックして 文字コードと認識されない領域をデータ加工にて、「0000」のところに→「F0F0」を埋め込む作業等は どのようなプログラム言語、またはツールなどを使用して開発するのが理想でしょうか?? アドバイスどうぞよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>エクセルでバイナリモードでファイルをオープンするのはどのように操作すればよいのでしょうか?? 「Excelでバイナリモード」じゃなくて「ExcelのVBAでバイナリモード」のやり方ですよね? そのままGoogleで検索してください。
その他の回答 (3)
- notnot
- ベストアンサー率47% (4900/10359)
>固定長データを加工できるプログラム開発は、ウィンドウズ上で出来ますでしょうか?? Windows上でもMac上でもLinux上でも、どこでも、どんなプログラミング言語でも出来ますよ。 この程度の処理で言語による難易度の差はほとんど出ません。 Windowsなら、CをインストールしてCで書くか、Excel VBAを使うかかな。どちらも入門書を1冊マスターすれば十分だと思います。 Cならバイナリモードでファイルをオープンしてfread関数を使います。 VBAならバイナリモードでファイルをオープンしてget文を使います。
補足
>VBAならバイナリモードでファイルをオープンしてget文を使います。 VBAではエクセルからCSVデータを外部データとして、 テキストファイルから開いてヘルプで試行錯誤しながらですが 基礎的なコードを書いてプログラムを組んで対応しています。 固定長データのサンプルはあるのですが エクセルでバイナリモードでファイルをオープンするのは どのように操作すればよいのでしょうか?? たびたびすいませんがご教授お願いします。
- notnot
- ベストアンサー率47% (4900/10359)
どんなプログラミング言語でも良いです。作業する環境で一番コンパイルなどしやすい言語。 Unix/Linuxだと汎用のツールがいっぱいあるのですが、文字列処理メインで作られているので、00 だけは扱いにくいです。Unix/Linuxでたいていインストールされているツールで出来そうなのはPerlとかですかね。Cで書いてももちろん良いです。 0000 -> F0F0 ということはメインフレームですか?メインフレーム上で一回きりならエディタで置換しますね。
補足
ご回答ありがとうございます。 メインフレームとなる汎用機はなく 固定長のデータを、レコードレイアウト通りにプログラムをシステムに 組んでコマンドプロンプト操作でCSV生成します。 Perlですか。 固定長データを加工できるプログラム開発は、ウィンドウズ上で出来ますでしょうか??
> 表示させたいデータが、スキップされ文字コードとして認識されないため 後付で何とかするよりも、ちゃんと認識されるようにする方法を考えるのが先決じゃないですかね?そうしないと、認識されなかった領域のサイズがどうなるか保証できないことになり、固定長データであるという前提そのものが崩壊しかねませんから。 文字コードにならない元の固定長データって、テキスト以外の値を含むバイナリデータですか?だとしたら安直には16進ダンプしてから扱えば、全てのデータがテキストの0~9,A~F(とスペース)の羅列になりますから、余計な小細工をしなくても済みそうに思います。
補足
ご回答ありがとうございます。 認識されるようにする方法が、最終的に固定長データ時に加工する方法になったのです。 文字コードにならない元の固定長データって、テキスト以外の値を含むバイナリデータですか? そうなります。 固定長時はテキスト形式ではありませんが CSVになった時点で、全角・半角・バイナリ(NULL値)になります。 ですので、バイナリの領域の16進数の部分を 10進数で見た数値が取得したいので 固定長時に文字コードとして認識される加工が必要になるのです。 固定長データはお客様から来る段階で 文字コードと認識されるデータとバイナリでNULL値としてスキップ(フィールドが空白) されてしまうデータが混在しています。 プログラム業者は加工すると、そのフィールドのバイト数は増え レコード自体は長くなるとのことです。 でもその点はサポート業者で検証済みで 長くなっても問題ないとのことです。 プログラム業者にやってもらったほうが 安全なのですが、今後ノウハウをためていければいいのですが ウインドウズ上で開発出来るプログラムがあれば と思いご質問してみました。
補足
ご回答ありがとうございます。 プログラム加工はExcelVBAで操作し ファイルオープンはエクセルの外部から開けるのかと思い ご質問してみました。 ファイルオープンに関しての操作は調べてみます。 丁寧にどうもありがとうございました。