Перенести код 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 есть ряд статей и тематических исследований.
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.