перенести код COBOL - PullRequest
       6

перенести код COBOL

5 голосов
/ 30 августа 2010

У меня есть задача конвертировать код COBOL в .NET.Есть ли в наличии конвертеры?Я пытаюсь понять код COBOL на высоком уровне.У меня проблемы с пониманием кода COBOL.Есть ли генераторы блок-схем?Я ценю любую помощь.

Спасибо ..

Ответы [ 5 ]

10 голосов
/ 30 августа 2010

Перенос программных систем с одного языка или операционной среды на другой - это всегда сложная задача. Вот несколько вещей для рассмотрения:

  • Устаревший код имеет тенденцию быть плохо структурированным в результате долгая история быстрых исправлений и обходных путей. Это действительно увеличивает отношение сигнал / шум при попытке перевернуть голову вокруг того, что на самом деле происходит.
  • Преобразование кода приводит к дальнейшей «деструктуризации» чтобы компенсировать несоответствия между источником и целевые платформы реализации. Когда вы начинаете с плохо структурированной базы (устаревшая система), конечный результат может быть совершенно непонятным.
  • Документирование устаревшей архитектуры и / или бизнес-процессов, как правило, далеко дата, что это хуже чем бесполезно, это может фактически вводить в заблуждение.
  • Сложность кода COBOL почти всегда занижена.
  • Ряд "функций" будут опубликованы в преобразованной системе, которые были первоначально построенный, чтобы компенсировать вещи, которые "не могли быть сделаны" за один раз (из-за меньших воспоминаний, более медленные компьютеры и т. д.). Многие из них теперь могут быть беспроблемными, и вы действительно не хотите их.
  • Не существует очевидных или простых способов реструктуризации устаревшего процесса системы в эквивалентную объектно-ориентированную систему (по крайней мере, не осмысленно).

Были успешные проекты, которые перенесли COBOL непосредственно в Java. См. Нака . Однако конечный результат - это то, что его мать (или другой программист на COBOL) может любить , см. Это обсуждение

В общем, я бы с подозрением отнесся к любым продуктам или инструментам, претендующим на преобразование вашего наследия COBOL система во что угодно, кроме другой версии COBOL (например, COBOL.net). Для этого вы все еще в конечном итоге с тем, что по сути является системой COBOL. Если этот подход приемлем, то вы Возможно, вы захотите просмотреть эту белую бумагу от Micro Focus.

ИМХО, ваш лучший выбор для замены COBOL - это реорганизация вашей системы. Если вы когда-нибудь найдете серебряная пуля, чтобы попасть туда, где ты хочешь быть - напиши книгу, стань консультант и заработать много миллионов долларов.

Извините, что предоставил такой отрицательный ответ, но если вы работаете с чем-либо но система тривиальная унаследованная, проблема будет решаться совсем не тривиально.

Примечание: Не беспокойтесь о блок-схеме существующей системы. Попытайтесь получить контроль над процессом ввода / вывода и запрограммировать программирование преобразования данных и потока. Здесь необходимо понимать бизнес-функцию, а не конкретную ее реализацию.

7 голосов
/ 30 августа 2010

Micro Focus и Fujitsu имеют продукты COBOL, которые работают с .NET. Micro Focus позволяет загрузить пробную версию продукта, а на сайте Fujitsu NetCOBOL есть ряд статей и тематических исследований.

Микро Фокус http://www.microfocus.com/products/micro-focus-developer/micro-focus-cobol/windows-and-net/micro-focus-visual-cobol.aspx

Fujitsu http://www.netcobol.com/products/Fujitsu-NetCOBOL-for-.NET/overview

3 голосов
/ 06 сентября 2010

[Примечание: я работаю на Micro Focus]

Привет

На самом деле, сделать приложения COBOL доступными в .NET Framework довольно просто (вопреки утверждению, сделанному в одном из предыдущих ответов). Fujitsu и Micro Focus имеют компиляторы COBOL, которые могут создавать код ILASM для исполнения в CLR.

Micro Focus Visual COBOL (http://www.microfocus.com/visualcobol) делает особенно простым развертывание традиционного процедурного COBOL в качестве управляемого кода с полной поддержкой типов данных COBOL, файловых систем и т. Д. Он также включает обновленный синтаксис OO COBOL, который убирает большая детализация и сложность синтаксиса, позволяющая очень легко писать код на языке COBOL на основе примеров C #. Этот уникальный подход также упрощает использование всех инструментов Visual Studio, таких как IntelliSense.

В первоначальном вопросе упоминалось «конвертировать», и я настоятельно рекомендовал бы против любого подхода, который требует, чтобы исходный код был преобразован в какой-либо другой язык перед использованием в среде .NET. Количество усилий и рисков весьма маловероятно, чтобы стоить каких-либо накопленных выгод. Напротив, хранение кода в COBOL поддерживает существующий работающий код и дает возможность для развертывания на других платформах в будущем. Например, как насчет наличия единого набора исходного кода и возможности развертывания в .NET в качестве родного языка и в среде Java без изменения строки исходного кода?

Я рекомендую вам получить пробную копию Visual COBOL по ссылке выше и посмотреть, как вы можете использовать существующий код в .NET без каких-либо изменений.

2 голосов
/ 30 августа 2010

Это не простая задача.У COBOL есть фундаментальные представления о типах данных, которые плохо сопоставляются с объектно-ориентированной средой .NET (например, в COBOL все типы данных представлены в виде буферов фиксированного размера), и, в частности, способы работы групп и массивов не отображаютсяхорошо для классов .NET.

Я полагаю, что есть компиляторы COBOL, которые на самом деле могут компилировать байт-код .NET, но они будут иметь свои собственные библиотеки времени выполнения, чтобы управлять всем этим.Возможно, стоит взглянуть на один из этих компиляторов и просто оставить устаревший код на языке COBOL.

Кроме этого, построчный перевод, вероятно, невозможен.Посмотрите на код более высокого уровня и переводите блоки кода за раз (например, на уровне процедуры или даже выше).

1 голос
/ 21 января 2015

Существует множество механизмов преобразования COBOL в современные масштабируемые среды, такие как .NET или Java.

Первый - это миграция в новую среду с сохранением существующего кода COBOL с некоторыми незначительными изменениями (NET Microfocus COBOL);

Второй - это переход на новую платформу с симуляцией операторов и конструкций COBOL. Когда есть некоторые дополнительные библиотеки NET / Java для имитации определенной логики COBOL: ПРИНЯТЬ идет в NETLibrary.Accept и так далее.

Третий подход является наиболее ценным, когда вы переходите на «чистый» код NET / Java со всеми преимуществами новой среды. Это может быть легко поддержано и развито в будущем.

Однако для этого подхода необходимы уникальные знания и наборы инструментов, и на мировом рынке есть только несколько игроков, которые могут помочь вам в этом случае. Если мы говорим об автоматической миграции, количество игроков значительно уменьшается, и, к сожалению для вас, вы должны платить за определенные технологии и инструменты (такие как наши).

Однако лучше инвестировать свои деньги в будущий рост в современной среде, чем тратить деньги на «симуляцию» старых технологий.

...