Создание определений таблиц SQL из макетов записей COBOL не всегда является прямым процессом (хотя пойти другим путем довольно просто).
Проблема в том, что макеты записей COBOL могут быть довольно сложными с различными наложениями (COBOL REDEFINES) и денормализациями (COBOL OCCURS). Они в значительной степени сводят на нет большинство попыток автоматизировать процесс сопоставления сложной записи COBOL с макетом таблицы SQL.
Сопоставление типов данных также может быть проблемой. Файлы Net Express могут быть созданы для среды на основе ASCII или EBCDIC (IBM Mainframe). Если ваши файлы закодированы в EBCDIC, вам, скорее всего, придется написать специальное программное обеспечение для преобразования, потому что ваш файл содержит смешанные символьные/числовые данные (могут быть сторонние продукты, которые могут автоматизировать или частично автоматизировать этот тип преобразования, но я не знаком с ними).
Попробуйте просмотреть один из файлов .DAT
с помощью простого текстового редактора (например, блокнота). Если вы можете прочитать символьные данные, то они основаны на ASCII, и у вас есть шанс загрузить данные без особых дополнительных усилий по преобразованию.
Определения полей COBOL, которые являются PIC X
чем-то, содержат символьные данные и преобразуются непосредственно в CHAR
данные SQL аналогичной длины (т. е. PIC X(4)
становится CHAR(4)
).
Определения полей COBOL, определенные как BINARY
, переводятся в SQL INTEGER
. Является ли целое число длинным или коротким, зависит от количества цифр. Например, PIC S9(8) BINARY
задает двоичное целое число со знаком из 8 цифр, которое займет 4 байта. С другой стороны, PIC S9(4) BINARY
состоит всего из 4 цифр, поэтому занимает 2 байта (короткое целое число).
Другое распространенное определение поля COBOL — PACKED-DECIMAL
или COMP-3
. Эти поля могут преобразовываться в типы данных SQL DECIMAL
.
SimoTime предоставляет очень хороший обзор нескольких определений полей COBOL. Выполнение преобразования в соответствующий тип данных SQL не должно быть трудным.
Примечание 1. Из фрагмента макета записи COBOL, предоставленного в вашем вопросе, я вижу пункт OCCURS
. Из-за этого результирующая таблица даже не будет в первой нормальной форме. Эти таблицы могут быть настоящей проблемой для управления в среде базы данных.
Примечание 2. Данные, которые можно использовать, находятся в .DAT
файлах. Макет записи будет соответствовать определению записи COBOL. Файлы .IDX
содержат данные индексации, используемые MicroFocus при чтении/записи. Вы можете игнорировать их.
person
NealB
schedule
04.08.2011