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

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

Спасибо..

5 ответов

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

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

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

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

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

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

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

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

Micro Focus 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

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

Привет

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

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

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

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

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

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

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

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

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

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

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

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

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

Переводы - непростая задача. Помимо Micro Focus и Fujitsu существует также Raincode, который предлагает бесплатную версию Cobol, которая прекрасно интегрируется с Visual Studio.

Другие вопросы по тегам