2009-04-21 4 views
4

При выборе языка для переноса программ COBOL с какого языка вы бы выбрали и почему? Я не ищу ответа «потому что я знаком с языком X».На каком языке вы бы заказывали программы COBOL и почему?

Я ищу функции на языке, который хорошо подходит для дизайна COBOL.

Update: программы будет запускать gammit на коммунальные услуги, обработка данных, экраны и т.д.

+0

Это действительно зависит от того, где вы портируете TO и почему.Если вы идете с мэйнфрейма IBM на DEC/Compaq/HP Alpha, вы, вероятно, захотите придерживаться COBOL :) – David

ответ

6

Я бы перенес их в ... um ... COBOL. Да это оно. COBOL.

Извините, не смог удержаться.

Серьезно, есть компиляторы COBOL для существующих платформ там и, если мы не знаем немного больше о том, почему код имеет портированный, мы, возможно, не сможем помочь.

Является ли платформа, на которой она работает, устарела? Является ли руководство просто стремлением к более «современному» решению? Вам нужно двигаться жестко от System z до Windows (ugh!)?

COBOL (в чистом виде, не то, что OOCOBOL мусор) в основном простой процедурный язык (ReportWriter несмотря на это), так будет переводить на любой из других процедурных languges довольно хорошо:

  • C.
  • C++ без классов
  • Java, хотя вы не можете избежать классов, если у вас нет одного синглтона honkin.
  • Паскаль (замена одного «мертвого» языка для другого).
  • Даже Python, Perl и другие могут быть созданы для работы.
+0

экраны кричат ​​нкерсы мне, но это может быть только потому, что я не знаком с другими языками ... – ojblass

+0

Я вижу, используя c/java/pascal .... но Python, perl и др. Не имеют никакой поддержки для фиксированных точка десятичная. Без поддержки десятичной запятой с фиксированной точкой вы просто не можете делать большие финансовые данные с точностью. –

3

Ну, вы должны рассмотреть, какие входы программы COBOL обычно.

COBOL был разработан для обработки большого количества форматированного текста с фиксированной шириной в качестве входного сигнала для вывода таким же образом. Это больше похоже на процесс ETL для меня, чем на все остальное.

Так что я бы не переносил программы COBOL на другой язык; Я бы поместил его в подходящие технологии ETL, такие как службы интеграции SQL Server (SSIS) или, по крайней мере, свои службы преобразования данных DTS-SQL Preeccesor. SSIS подразумевает использование VB.NET (по крайней мере, в SQL Server 2005), но это не должно быть проблемой.

+0

Забавно, что это было приостановлено. Я только отвечал на это в контексте своего собственного опыта, используя COBOL в большом банке. –

1

Я лично выполнил это решение на основе предполагаемого проекта программы, а не его текущей реализации. Если вам нужен прямой линейный порт, я бы, вероятно, сказал c/C++.

+0

Есть много программ, много экранов. – ojblass

1

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

Существует несколько компиляторов Cobol для .NET, таких как NetCOBOL от Fujitsu.

1

Я когда-то занимался переносом некоторого материала COBOL на C (1989 или около того). COBOL в вопросе был кодом для мониторинга охранных сигналов, пожарной сигнализации и т. Д. Это была программа, временной вид окружающей среды.Опросите эти gazillion устройства для полевых пользователей так много раз в минуту и ​​т. Д. Взгляд «на функции на языке, который хорошо соответствует дизайну COBOL», игнорирует тот факт, что там есть много программ COBOL, которые игнорируют дизайн COBOL.

2

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

  1. Встроенная поддержка десятичной арифметики - это исключает любой современный язык без перегрузки оператора.

  2. Лучшая поддержка структурированных записей - можно использовать комбинацию struct/union, как в C, но я думаю, что иногда это делало идентификаторы очень долго (по крайней мере, для программ, которые я видел).

  3. Перейти к заявлениям - без него нужно было бы полностью проанализировать логику программы при ее переписывании.

Возможны другие функции, которые нелегко сопоставить.

1

Я бы сохранил сердечник COBOL, но расширялся по краям.

Microfocus предлагает инструмент под названием Enterprise Server, который позволяет COBOL взаимодействовать с веб-службами.

Если у вас есть программа COBOL A и другая программа COBOL B и A вызывает B через секцию интерфейса, инструмент позволяет вам открыть раздел интерфейса B в качестве веб-службы.

Для программы A вы затем создаете прокси-сервер клиента, и A теперь может вызывать B через веб-службу.

Конечно, поскольку у B теперь есть веб-служба, любой другой тип программы (командная строка, приложение Windows, Java, ASP и т. Д.) Теперь может также назвать это.

Кроме того, у них есть продукт под названием COBOL.NET, который запускается внутри Visual Studio и переводит COBOL на MSIL. Это означает, что вы можете подключиться к любым компонентам .NET.

Так что подход сохранить ядро ​​COBOL, но интерфейс с помощью веб-сервисов и делать новые разработки в любом совместимом языке CLR (C#, VB и т.д.)

+0

Является ли это полной версией COBOL, а не некоторой версией в виде барстарда, которая выглядит как стандарт, но не является точной, а значит, и стандартизирована. –

+0

Yup - полная поддержка стандартов. – nzpcmad

0
  • Я должен сказать, что вы не должны порт COBOL ,
    • Если вы имеете в виду rewrite, тогда да, выберите язык. Я бы предложил веб-интерфейс, java или .Net, чтобы переписать.
    • Если код должен быть запущен точно, как сейчас, любое преобразование «портирования» наносит только вред.
  • Если вы по какой-то причине должны менять платформы, вы можете использовать COBOL на другой платформе.
  • В моем опыте лучше всего попробовать отделить компоненты или сервисы друг от друга и либо преобразовать небольшие фрагменты отдельно, либо просто написать новый код на предпочтительном языке, сохраняя COBOL в фоновом режиме.