1

次のCOBOLファイルがあります:.DAT、.IDX、およびfd(ファイル定義)ファイル。MicroFocusのCOBOLNetExpressを使用しています。

  1. 最初に、このCOBOLファイル定義からMsSqlテーブルを作成したいと思います。ファイル定義には、次の内部があります。

    FDPREGLAデータレコードはFPG-RECです。
    01FPG-REC。
    02 FPG-STA PIC X(01)。
    02FPG-KEY。
    03 FPG-FRM PIC X(02)。
    03 FPG-ODD PIC X(02)。
    03 FPG-DOK PIC 9(08)バイナリ。
    02 FPG-POZ PIC 9(06)バイナリ。
    02FPG-PRM。
    03 FPG-IND PIC 9(01)は10回発生します。
    .........等々

このファイルをMicrosoftSQLServer 2008にインポートすることはできますか?また、SQLサーバー管理スタジオを使用しています。SQLサーバーのインポートとエクスポートウィザードを試しましたが、この種のファイルのインポートはありません。

私もNETExpressを調べましたが、運がありませんでした。COBOL fdからSQLテーブル定義を取得することも可能ですか?

4

1 に答える 1

2

COBOLレコードレイアウトからSQLテーブル定義を作成することは、必ずしも簡単なプロセスではありません(ただし、逆の方法は非常に簡単です)。

問題は、COBOLレコードのレイアウトが、さまざまなオーバーレイ(COBOL REDEFINES)および非正規化(COBOL OCCURS)で非常に複雑になる可能性があることです。これらは、複雑なCOBOLレコードをSQLテーブルレイアウトにマッピングするプロセスを自動化するほとんどの試みをほぼ打ち負かします。

データ型のマッピングも少し難しい場合があります。Net Expressファイルは、ASCIIまたはEBCDIC(IBMメインフレーム)ベースの環境を対象として作成できます。ファイルがEBCDICでエンコードされている場合、ファイルには文字と数値の混合データが含まれているため、カスタム変換ソフトウェアを作成する必要があります(このタイプの変換を自動化または部分的に自動化できるサードパーティ製品がある可能性がありますが、私は慣れていません彼らと一緒に)。

.DAT簡単なテキストエディタ(メモ帳など)でファイルの1つを見てみてください。文字データを読み取ることができる場合、それはASCIIベースです-そして、多くの追加の変換作業なしでデータをロードするという戦いのチャンスがあります。

何かであるCOBOLフィールド定義には文字データが含まれており、同様の長さのPIC XSQLデータに直接変換されます(つまり、になります)。CHARPIC X(4)CHAR(4)

BINARYSQLに変換するように定義されたCOBOLフィールド定義INTEGER。整数が長いか短いかは、桁数によって異なります。たとえばPIC S9(8) BINARY、4バイトを占める8桁の符号付き2進整数を指定します。一方、 PIC S9(4) BINARYは4桁しかないため、2バイト(短整数)を占有します。

もう1つの一般的なCOBOLフィールド定義はPACKED-DECIMAL、またはCOMP-3です。DECIMALこれらのフィールドは、SQLデータ型に変換される場合があります。

SimoTimeは、いくつかのCOBOLフィールド定義の非常に優れた概要を提供します。適切なSQLデータ型への変換を行うことは難しくありません。

注1:質問で提供されたCOBOLレコードレイアウトフラグメントから、OCCURS句を確認できます。このため、結果のテーブルは第一正規形にさえなりません。これらのテーブルは、データベース環境で管理するのが非常に難しい場合があります。

注2:使用可能なデータは.DATファイルにあります。レコードレイアウトは、COBOLレコード定義に対応します。.IDXファイルには、MicroFocusが読み取り/書き込み時に使用するインデックスデータが含まれています。これらは無視してかまいません。

于 2011-08-04T16:31:27.980 に答える