• 締切済み

COBOL で組まれたシステムのデータに関して

8年程前に組まれた、COBOLベースのシステムからデータを抽出したくて困っています。 データの実体は、見つけておりそれがバイナリデータである事までは確認出来ています。 そのデータを変換して、データの中身を確認したいのです。 バイナリデータ⇒16進数データ(.hex)にまでは変換出来たのですが、 それ以降、どうすれば良いのかがわかりません。 別途、COBOLプログラムを組んでデータを抽出する事も考えましたが、 COBOLの知識が皆無で、それをやるのは最終手段だと考えています。 仮に上記のような要件を満たす為に他にどのような情報が必要かもよく分かりませんので、 その辺も含めて教えて頂ければと思います。

みんなの回答

  • root139
  • ベストアンサー率60% (488/809)
回答No.3

まずは、↓辺りを明確にされた方が良いでしょう。 1. 何のデータが格納されていると考えられるのか? 2. COBOLのプログラムはどんな環境で動かしていたのか? 3. COBOLのプログラムはどんな目的のシステムか? また、何を持って、バイナリデータ、つまり、テキストデータではないと判断されたのでしょうか? どんな形式のデータかも分からないのにバイナリーデータと判断するのは容易ではないと思います。例えば、COBOLのプログラムが汎用機やそれに準じる環境で動いていたのであれば、EBCDICコードとその日本語拡張コードに拠るテキストファイルを扱っていた可能性も有るとおもいますが、PCの環境で正常に表示できるエディタやビューワーは滅多にないでしょう。 http://ja.wikipedia.org/wiki/EBCDIC また、日本語だけを見ても様々なエンコード方式が有りますからその全てに当てはまらない事を確認しなくてはなりません。 > バイナリデータ⇒16進数データ(.hex)にまでは変換出来た ということですが、具体的にどの様な処理を行ったのでしょうか?

shiansuka
質問者

補足

分かる範囲で補足させて頂きます。 >1. 何のデータが格納されていると考えられるのか? 顧客管理システムのデータです。 2. COBOLのプログラムはどんな環境で動かしていたのか? Windows ローカル環境で動作するアプリケーションとしてです。 現在は、XPで動いています。 3. COBOLのプログラムはどんな目的のシステムか? 顧客管理です。 >また、何を持って、バイナリデータ、つまり、テキストデータではないと判断されたのでしょうか? テキストエディタで、閲覧した時の状態です。それぐらいは、一応分かるので。。。 バイナリエディタで内部を閲覧した際にデータの確認も出来ましたので。 >本語だけを見ても様々なエンコード方式が有りますからその全てに当てはまらない事を確認 文字コードは、shift_jisを一応あたっています。 >> バイナリデータ⇒16進数データ(.hex)にまでは変換出来た >ということですが、具体的にどの様な処理を行ったのでしょうか? http://www.vector.co.jp/soft/win95/util/se498419.html 上記のソフトを使用しました。

全文を見る
すると、全ての回答が全文表示されます。
  • saburo0
  • ベストアンサー率35% (76/216)
回答No.2

そのデータを入出力しているプログラムのロジックをみて データ定義に、そのフォーマット形式が記述されていると思います。 COPY句で、別ファイルになってるかもしれません。 もし詳細設計書などにデータ定義書のようなものがなければ、 COBOL自体を解析するしかないでしょう。 COBOLの構文はそんなに難しいものではないですよ。 どうしてもご自身で分からなければ、分かる人間に頼むしかないでしょう。

shiansuka
質問者

補足

COPYディレクトリが確かにあります。 ソースを見てみたのですが、データ構造みたいなのとかが書いてあるのはわかるんですが、 その何処を見れば、 >データ定義に、そのフォーマット形式が記述されていると思います。 これがわかりますか?また、フォーマットが分かった場合それ以降どういった手順を踏めばよいでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • wormhole
  • ベストアンサー率28% (1622/5659)
回答No.1

フォーマットがわからないバイナリデータということでしたら、何とかそのフォーマットを調べる事が先決かと。 それがわからないことには最終手段としているCOBOLのプログラムを組んでデータを抽出するということもできませんよ。

shiansuka
質問者

補足

フォーマットと言うのは、やはりコンパイラによる変換方式の違いみたいなものなのでしょうか? 汎用機は経験がなく、アプリケーションもC#でwindowsアプリケーション組んだぐらいしか経験ないので、いまいちわからないんです(汗)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • またまたバイナリ→テクスト

    VBは5で、Excle2000のVBAでやってます。バイナリデータ→テクストデータに 128バイナリデータを添え字を使って1バイトごとに抽出DATA_PS = DATA_PS & 変換関数 というふたつの部分のリファレンスが正しくかけなくて 困ってます。Getを使って1バイトづつとりだして、Hexを使って変換するというものだそうです。 誰か教えてください。

  • 【COBOL】小さい字を大きい字へ変換するサブルーチン

    とても久しぶりのCOBOLで参考書も無く困っています。 汎用系COBOLです。 マスタファイルのデータで小さい字(ャュョ)を含むデータを抽出して、大きい字(ヤユヨ)に変換するサブルーチンを作成したいのですが、どう作成したら良いのかわかりません。 何かいい書き方をご存知の方、よろしくお願いします。 サンプル的にプログラムを記入していただけるととても嬉しいです。

  • S9タイプからXタイプにデータは移行できるのか。(COBOL)

    こんにちは。 まったくのCOBOLビギナーで困っています。 私がしたいことは、 S9タイプのデータを、Xタイプに移すということです。 元データには'40'(16進数)というデータが入っています。 これは +0 という意味だとおもいます。 これを、Xタイプにムーブして、 '0'と出したいわけです。 '0'を出す為には、'30'(16進数)であればいいことは バイナリで確認しています。 単純にMOVEを書けても、これは、'@'になってしまいます。 S9→X への移行ってできるものなのでしょうか? 知っている方がいらっしゃったらご教授ください。

  • Excel内のデータに直接書き込むってやったことある人いますか?しかもバイナリで!!

    とあるツール(回路シミュレータSPICE)の出力データから1クリックでエクセルファイルに変換するツールを考えています。今のところデータ整理作業としては、 SPICE出力データ(倍精度バイナリデータ)=>Bin to 10進ASCII変換=>必要なデータを抽出=>エクセルファイルにコピペ=>保存(倍精度バイナリデータ) という感じで面倒かつ単調な作業が日々の暮らしになっています。でExcelの中身をバイナリエディタで眺めてみたところデータ管理はどうやらSPICE出力データと同じ倍精度バイナリデータで管理されているようでした。そこで、 SPICE出力データ(倍精度バイナリデータ)=>必要なデータを抽出=>エクセルファイルにコピペ(倍精度バイナリデータ)=>保存 てなことをやれないかと思ったわけです。しかしExcelファイル中身のフォーマットがどうなっているのか(セルの位置とかの管理)よくわからないのですが、何かいい方法とか資料とかはないでしょうか?分かる方いましたらよろしくお願いします。

  • ACCESS VBA でのバイナリデータ操作について

    ACCESS VBA でのバイナリデータ操作について いつも参考にさせていただいております。ありがとうございます。 テキストファイルがあるとし、 日本語(UTF-16 BE)で   あいう というデータとします。 バイナリモードで確認すると、 30 42 30 44 30 46 と表示されます。 この文字コードを使って文字を生成したいのですが、 http://support.microsoft.com/kb/404928/ja 上記を参照し、 ByteData = InputB(6, #1) ChrB(cint("&H" & Hex(ByteData(1)))) & ChrB(cint("&H" & Hex(ByteData(0)))) という方法で「あ」を生成させることはできたのですが、 全角空白があった場合、ただしくコードを取得させることができません。 たとえば、「あ う」(←[あ]と[う]の間が全角空白です)の場合、 バイナリモードで確認すると、 30 42 30 00 30 46 なのですが、「00」を取得することができず、 hex(ByteData(0)) = 30 hex(ByteData(1)) = 42 hex(ByteData(2)) = 30 hex(ByteData(3)) = 30 hex(ByteData(4)) = 46 となってしまいます。 なぜなのでしょうか? また、他によい方法はありますでしょうか? ご指導よろしくお願いいたします。

  • VB2005を使ってバイナリファイルの中身をHEX変換してテキスト表示したい。

    VBは初心者ですが、以下のような事をVB2005を使って実現したいのですが、参考コーディングがありましたら教えて下さい。 ・バイナリファイルファイルの中身を可変の長さ(オープン時に変換の長さは決定している)をHEXに変換してテキスト表示したい。

  • COBOLから呼ばれる時

    COBOLプログラムから呼び出され、ファイルのレコードを一行読んでレコードの内容を返すというcサブルーチンを作っているのですが、COBOL←→c間でのインタフェースの扱いかたがよくわからなくて困っています。(ちなみにこのモジュールはcからも呼ばれる事がある) COBOLはコピー句(test001.cbl, test002.cbl)に値を入れて、cサブルーチンにそれを渡しています。 テストはCOBOL85を使用してるので、cサブルーチンの中のデータを見ることができません。なので、返ってくるコピー句の中身を見るのですが、とにかく値が設定されてかえってこないのです。ただ単にロジックのバグと言う可能性もあるけど(^^; 私はインタフェース環境の事がまだ良く解っていないので、今回こちらに質問した次第です。経験者の方がいましたら、どうかおしえてください。 あ、それからCOBOLから渡される値は、c側では全てchar型で受け取らなければいけないような話しを聞いたのですが、本当でしょうか? もう一つ。 コピー句の中で「F-CODE PIC X(2)」のようにハイフンがあるのですが、cではハイフンが使えないからダメなんでしょうか? たくさん質問してしまいましたが、どうかよろしく。 /COBOL側/ -------------------------------------------------- CALL 'TEST1' USING BY VALUE TEST001 TEST002. -------------------------------------------------- /cサブルーチン側/ -------------------------------------------------- int TEST1(test001, test002) char *test001; char *test002; {     ・     ・     ・ return (0); } --------------------------------------------------

  • 汎用機のCOBOLのソース上でUNICODEのカンマを設定したい

    汎用機のCOBOLを使用しています。今回、ソース上でUNICODEのカンマを設定する必要がでてきたのですが、どのように設定していいかわかりません。。。 処理をしたデータをバイナリで(文字コードを変換しないで)転送する必要があり、かつデータの受け取り側がカンマをUNICODEでと指定してきているため、(COBOL上でカンマを打っても、汎用機の英数字コード(EBCDIK)になってしまいますので)どうしてもCOBOL上でUNICODEのカンマをしなければなりません。 UNICODEでのカンマはコードが「U+002C」ということなのですが、どのように設定すればUNICODEでカンマと認識されるのでしょうか? とりあえず、下記のような項目をつくってデータをつくってみたのですが・・・ 01 X-COMMA PIC X(02) VALUE X'002C' データの受け取り側がこのコードをカンマと判断してくれませんでした・・・ コードはU+002Cとなっているのでそのとおりに設定したかったのですが、「+」が設定できないため、上記のような書き方としました。 何かぜんぜん別の書き方をするのでしょうか? 質問の内容がわかりづらく申し訳ありませんが、どなたか知恵を貸していただければと思います。 よろしくお願いします。

  • COBOLで全角変換を行いたいのですが...

    汎用機(ACOS-4)でCOBOLを使って開発を行っている者です。 INファイルのある項目を全角変換し、 OUTファイルに出力するプログラムを作成しています。 ただ困った事に変換元の項目の内容が 半角のデータ、全角のデータ、半角全角が混在しているデータもあるのです。 現在は項目の中に半角スペースの文字コードが存在すれば全て半角とし、 以外は全て全角と判断しています。 もちろん項目中のデータが全て埋まっている場合や、 半角全角が混在しているデータについては文字化けを起こしています。 どなたかこのような変換について良い方法があればご教授願います。 宜しくお願い致します。

  • COMP-3

    こんにちわ。COBOLプログラマーです。 現在単体試験の入力データ作成で困ってます。 COMP-3形式のデータをPC上で作成するのはどのようにすれば良いのでしょうか? 例えば. NUM_A PIC X(10). NUM_B PIC S9(10) COMP-3. とかだと、テキストでは 1234567890?????? になると思いますが「?」部分の編集方法が分かりません。 ちなみに今までは 1.Excelで作成→CSV形式で保存→ホスト上のプログラムで変換 2.ホスト上のエディタでHEX表示して編集 3.JCLで置換 などの方法でデータを作成してました。 ちょろっと調べてみたんですけどバイナリエディタっての使えばいいんですかね? その場合、2の手順と同じになると思うのですが項目数が数百個あるレコードのため、1の手順のように一括で変換出来るフリーウェアがあればなと思いました。 皆様の知恵をお借りしたいと思います。 宜しくお願いしますm(__)m