Конвертировать копию Cobol в XSD

Кто-нибудь знает инструмент для преобразования из Cobol Copybook в XSD? Или XML.

5 ответов

Построение полноразмерного парсера для копировальных книг COBOL имеет несколько проблем:

Учебники включены в программы COBOL на этапе обработки текста компиляции. Источник копировальной книги сам по себе может быть неполным. Единственный способ получить полный источник для синтаксического анализа - это предварительная обработка его, как если бы он был внесен в программу COBOL souce. Обычно тетради приводятся в программу COBOL через директиву COPY. Это может показаться немного бессмысленным, но учтите следующее:

1) Директива COPY поставляется с опцией ЗАМЕНА. На первый взгляд это может показаться достаточно простым, но когда вы входите в детали, это становится очень "интересным". См.: ДИРЕКТИВ КОПИРОВАНИЯ

2) Директива REPLACE. Эта директива также может манипулировать исходным текстом после того, как директива COPY сделала свой бит. См.: ЗАМЕНИТЬ ДИРЕКТИВУ

3) Вложенные тетради. Это может быть не так неприятно, как предыдущие два, но держать в виду тоже.

4) Синтаксис строк изображения COBOL также смеется. Посмотрите на: Символы строки рисунка

5) Вашему парсеру также необходимо будет иметь дело с правилами продолжения COBOL. Смотрите: Линии продолжения и продолжение PSEUDO TEXT в частности.

Я не хочу отговаривать вас, но синтаксический анализ COBOL - это не тривиальная задача.

С яркой стороны, если ваши тетради имеют для них сложную структуру, как это делают многие, возможно, это можно будет сделать, используя каскад регулярных выражений. Этот подход довольно распространен среди тех, кто нуждается в анализе программ COBOL (и тетрадей) по проектам обновления программного обеспечения. Возможно, посмотрите: RegReg

Приветствие...


Давным-давно я создал некоторый код для разбора учебника COBOL и для генерации файлов XSD.

Поскольку структура языка COBOL довольно регулярна, я создал регулярное выражение для получения имен переменных и определения длин полей. С помощью этой анализируемой структуры я мог бы также создать тестовые XML-данные, код DOM MSXML, чтобы манипулировать этой структурой и форматами HTML для проверки этих транзакций IMS.

Нижняя строка: регулярные выражения могут быть действительно полезны для этого.


Вы можете попробовать мой проект Koopa Cobol parser. Несмотря на то, что он не выполняет предварительную обработку, я обнаружил, что для большинства учебников это не обязательно. Он должен охватывать большую часть того, что вы ожидаете от стандартной тетради, а если нет, вы всегда можете расширить парсер. Он может экспортировать дерево разбора в XML, который затем можно обрабатывать любым способом.


Тогда существует предложение REDEFINES, которое используется для переопределения заданного набора смежных байтов по-разному. Затем предложение OCCURS, которое представляет собой реализацию фиксированной длины массивов и предложение OCCURS DEPENDING ON для массивов переменной длины.

Итак, NealB прав; это не тривиальная задача.


Rational Developer для Z, XML Thunder, Syncsort ETL... есть много продуктов, которые сделают это.

Действительно, если вы изучите правила типов данных схемы, вы можете сделать это очень легко вручную. В основном, вы будете иметь дело с xsd: string, xsd: decimal, xsd: integer и некоторыми атрибутами xsd: date для соответствия вашей копии Cobol.

licensed under cc by-sa 3.0 with attribution.