COBOLレコードレイアウトからSQLテーブル定義を作成することは、必ずしも簡単なプロセスではありません(ただし、逆の方法は非常に簡単です)。
問題は、COBOLレコードのレイアウトが、さまざまなオーバーレイ(COBOL REDEFINES)および非正規化(COBOL OCCURS)で非常に複雑になる可能性があることです。これらは、複雑なCOBOLレコードをSQLテーブルレイアウトにマッピングするプロセスを自動化するほとんどの試みをほぼ打ち負かします。
データ型のマッピングも少し難しい場合があります。Net Expressファイルは、ASCIIまたはEBCDIC(IBMメインフレーム)ベースの環境を対象として作成できます。ファイルがEBCDICでエンコードされている場合、ファイルには文字と数値の混合データが含まれているため、カスタム変換ソフトウェアを作成する必要があります(このタイプの変換を自動化または部分的に自動化できるサードパーティ製品がある可能性がありますが、私は慣れていません彼らと一緒に)。
.DAT
簡単なテキストエディタ(メモ帳など)でファイルの1つを見てみてください。文字データを読み取ることができる場合、それはASCIIベースです-そして、多くの追加の変換作業なしでデータをロードするという戦いのチャンスがあります。
何かであるCOBOLフィールド定義には文字データが含まれており、同様の長さのPIC X
SQLデータに直接変換されます(つまり、になります)。CHAR
PIC X(4)
CHAR(4)
BINARY
SQLに変換するように定義された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が読み取り/書き込み時に使用するインデックスデータが含まれています。これらは無視してかまいません。