Есть ли что-то, препятствующее взаимодействию между современными языками и COBOL? - PullRequest
2 голосов
/ 12 апреля 2020

Я читал о том, как у людей возникают проблемы с поиском людей для работы с COBOL, когда они работают в государственных системах, которые все еще используют его. Я также читал о том, как Fortran, язык, созданный за два года до COBOL, совместим с C, C ++, R и Python с правильными библиотеками .

Это позволяет сценариям Фортрана до некоторой степени работать с современными языками программирования и даже создавать сценарии на современных языках программирования, которые могут работать вместе с кодом на Фортране, что упрощает работу с ним для новичков в Фортране. Существуют ли какие-либо конкретные проблемы, препятствующие тому, чтобы COBOL имел аналогичную совместимость с другими языками программирования, такими как SQL (который используется для баз данных, подобных COBOL), которые облегчили бы современным программистам, которые обычно не изучают COBOL, работать с ним?

Ответы [ 3 ]

7 голосов
/ 13 апреля 2020

Q1: Что-нибудь мешает совместимости между современными языками и языком COBOL?

A1: Короткий ответ, подобный приведенному выше: Нет, на самом деле это часто делается.

Но это может зависеть от того, что «современный язык» определен для читателя. Даже с «настоящим» COBOL (а не с каким-то «блестящим» [может читаться как «смешивание»] «управляемым COBOL») вы в большинстве случаев можете напрямую вызывать любые функции C, чтобы более или менее вызывать что угодно (по крайней мере, с оболочкой C), а также может вызывать двоичные файлы, как вы можете это делать в операционной системе (`CALL 'SYSTEM' USING 'some-executetabe-or-script" param1 "" param2 "' является распространенным расширением).

Для прямого вызова любого "нативного кода" (например, Win32 или POSIX ) вы, очевидно, должны убедиться, что используете правильные определения параметров, но в COBOL 2002+ есть кое-что как USAGE SIGNED-LONG, USAGE POINTER и аналогичные (в этом месте также распространено расширение USAGE COMP-5).

Кроме того, часто существуют прямые способы взаимодействия с серверами сокетов, HTTP (S), XML, JSON, ...; и многие реализации COBOL также позволяют ASSIGN (линейный) последовательный файл в канал, позволяя также взаимодействовать с другими программами таким же образом.


Q2: Существуют ли какие-либо конкретные проблемы, которые запретить совместимость [...] с COBOL с [...] SQL?

A2: Нет, а SQL очень часто используется в COBOL: EXEC SQL

Многие скажут, что SQL не является «языком программирования». Это язык запросов и может использоваться в разных средах, включая COBOL. В зависимости от используемой среды, EXEC SQL может быть непосредственно интегрирован в среду COBOL или с предварительным анализатором, который настраивает код на простой COBOL (обычно CALL с некоторым «собственным» кодом, см. Q1).

Q3: [... материал], который облегчит работу современных программистов, которые обычно не учат работать на COBOL?

... это совершенно другой вопрос, какой бы "современный" «программист».

Для программиста, чтобы узнать язык программирования, все зависит от программиста и ресурсов (таких как время, руководства, учебные пособия, наставники) - и воля программиста. Многие люди на самом деле «не хотят» изучать COBOL (по причинам, которые я слышал, но не понимаю или не соглашаюсь), другие упускают некоторые ресурсы (бесплатный компилятор доступен с GnuCOBOL , почти у всех компиляторов COBOL есть свои руководства, доступные онлайн, и рабочая группа ISO для COBOL опубликовала sh проекты стандартов онлайн , также вы часто можете найти наставников на дискуссионных форумах COBOL или в списках рассылки вместе со многими образцами) .

Одна вещь, которая часто является особенной для COBOL - это не сам язык, а среда, в которой он используется ("мэйнфрейм" с языком управления заданиями "jcl «вместо GUI для щелчка или используемой оболочки) и / или программного обеспечения, которое фактически закодировано в COBOL; у каждого программного обеспечения, которое поддерживается десятилетиями, есть «особые способы» здесь и там, и если вы перейдете к «десятилетнему коду, который фактически не поддерживался годами», вы попадете в еще большее количество неприятностей / забав (это не то, что определяет COBOL c, но с COBOL вы можете чаще сталкиваться с этим программным обеспечением).

4 голосов
/ 15 апреля 2020

Нет, ничто не мешает взаимодействию.

Основная причина (это мнение, не основанное на известных фактах), что у Фортрана, кажется, больше взаимодействия из коробки, была то, что было бесплатное программное обеспечение GNU / Fortran для заинтересованных сторон для работы. COBOL был очень поздно в игре, чтобы получить жизнеспособный компилятор свободного программного обеспечения. Это больше не проблема для GnuCOBOL, и люди наконец начинают писать код, необходимый, чтобы наверстать упущенное.

Добавление к ответу Саймона; доказательство концепции прямого встраивания в ветке для GnuCOBOL; intrinsi c функции, добавленные для поддержки FUNCTION TCL, FUNCTION PYTHON, FUNCTION REXX, FUNCION LUA и FUNCTION JVM. С тестами FUNCTION JVM для Scala, Groovy, Java, Frink, все работало. Это позволяет передавать данные между рабочим хранилищем COBOL и другим языковым движком, используя простой синтаксис COBOL. Включая настройки для обратных вызовов в и из. Эти функции встроены в компилятор и среду выполнения libcob при использовании этой ветви.

Для других испытаний интерфейса, не встроенных в компилятор, но все же допускающих взаимодействие; в FAQ GnuCOBOL есть десятки примеров. Шекспир? Ага. Фалькон? Ага. C, ну, GnuCOBOL испускает промежуточный C, так что это покрыто пиками. Существует также версия компилятора C ++, поэтому C ++ также рассматривается в пиках. Javascript; Jsi sh, Duktape, Spidermonkey, Quick js, чтобы назвать несколько испытаний.

Ada, D, Vala, Gen ie, S-Lang, ROOT / CINT, J, Gambas, Forth, Perl, Postscript, Pure, Icon и Unicon, Nim, BaCon, SWIG (который открывает многократные числа), PARI / GP, Gretl, R, Red, Ruby, Haxe / Neko, Pascal, Erlang , Elixir, SQLite, Rust, Go, more ..., включая достаточное количество esolangs, и GNU Lightning для модулей сборки на лету. Испытания, задокументированные в GnuCOBOL FAQ.

Взаимодействие фреймворка для AWT / Swing, GTK, Agar и таких вещей, как ZeroMQ, CGI и веб-сокеты, также оказалось успешным и эффективно используется. Наряду с не менее чем 7 препроцессорами EXE C SQL, успешно протестированными и используемыми.

Все сводится к тому, что кто-то хочет попробовать и написать какой-нибудь клей или правильно выровнять кадры вызова. Ни одна попытка, которую я пытался предпринять, не дала удовлетворительных результатов, , хотя Perl 5 - это распутывание макрослоев . (Хорошо, я просто соврал, пытаясь встроить jq, который использует C вызов и возврат по функциям структуры, мне пришлось бы оставить чистое кодирование интерфейса на языке COBOL и не беспокоиться о промежуточном программном обеспечении C, которое сделал бы это легко). ;-) Это когда-нибудь произойдет, поскольку jq - довольно мощный маленький обработчик JSON.

Используйте поисковую систему, которой вы меньше всего не доверяете, и ищите "gnu-cobol-builtin-script" и "GnuCOBOL" FAQ ", и посетите хиты на SourceForge.

В моих конкретных исследованиях я обычно сосредотачиваюсь на языках с C двоичным интерфейсом приложения, но другие ABI будут в том же духе. Требуется только сесть и написать некоторое промежуточное программное обеспечение или понять, как правильно синхронизировать кадры вызова.

Являются ли эти текущие выборки идеальными? Не всегда, есть крайние и угловые случаи с некоторыми типами данных и данными ИЗОБРАЖЕНИЯ КОБОЛ, которые потребовали бы больше работы, но это все; немного работы и испытаний, чтобы сгладить неровности. При исследовании я не всегда go так далеко, пока не возникнет реальная потребность. Эти эксперименты по начальной работе просто для того, чтобы получить некоторое доказательство в пудинге, все сделано для простой радости этого.

Один из ведущих разработчиков GnuCOBOL только что добавил однонаправленный и двунаправленный трубопровод, используя простые имена файлов, что обеспечивает доступ ко всему, что предлагает базовая ОС, с помощью операторов basi c COBOL OPEN / READ / WRITE / CLOSE (и других файловых операций ввода-вывода). Код был передан в транк всего за несколько часов до того, как я начал набирать этот ответ.

По сути, ответ на главный вопрос - громкий номер

4 голосов
/ 14 апреля 2020

Сценарий, используемый в правительственных системах, - это, скорее всего, аппаратное обеспечение IBM для мэйнфреймов с разновидностью z / OS , z / VSE или z / VM операционной системы.

Это в некоторой степени зависит от того, что подразумевается под функциональной совместимостью в том смысле, что большинство современных мэйнфреймов поддерживает TCP / IP и что в значительной степени открывает всю экосистему сетевых вычислений для сетевой функциональной совместимости. .

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...