Что такое COBOL, и почему так много учреждений полагаются на него
Возможно Вы слышали о COBOL — 60-летнем языке программирования. Что именно это? И почему он все еще является стержнем финансового мира, несмотря на то, что мало кто все еще знает, как его использовать?
Происхождение COBOL
Грейс Хоппер была феноменом. Она получила докторскую степень по математике в Йельском университете, была профессором в Вассаре и покинула военно-морской флот США в звании контр-адмирала. Ее вклад в области вычислительной техники можно судить по количеству фондов и программ, которые были созданы. Национальный научно-исследовательский вычислительный центр энергетики назвал ее суперкомпьютер Cray XE6. Военно-морской флот также назвал свой ракетный эсминец, USS Hopper, в ее честь. Девиз корабля «Aude et Effice» («Дерзай и делай») вполне мог быть придуман Хоппер.
Стремясь создать язык программирования, Хоппер разработала первый компилятор. Это открыло двери для первых скомпилированных языков, таких как FLOW-MATIC. Это принесло ей место в Конференции по языкам систем данных (CODASYL) 1959 года.
Она также сыграла важную роль в спецификации и разработке общего бизнес-ориентированного языка (COBOL). Первая встреча состоялась 23 июня 1959 года, а ее доклад и спецификация языка COBOL последовали в апреле 1960 года.
Кобол был радикальным
Кобол содержал некоторые новаторские концепции. Возможно, наиболее значимым из них была способность работать на оборудовании, произведенном различными производителями, что было беспрецедентным в то время.
Язык был сложным и предоставлял почти английский словарь для работы программистов. Он был разработан для обработки огромных объемов данных и был исключительно математически точным.
Его словарь зарезервированных слов (слов, составляющих язык) приближается к 400. Программист связывает эти зарезервированные слова вместе, чтобы они имели синтаксический смысл и создавал программу.
Любой программист, который знаком с другими языками, скажет Вам, что 400 — это невероятное количество зарезервированных слов. Для сравнения, язык C имеет 32, а Python — 33.
Еще одна особенность COBOL — это строгое требование, чтобы определенные строки программы начинались в определенных столбцах. Сегодня у программистов больше свободы при форматировании COBOL, и им больше не нужно вводить все прописными буквами. Это делает работу с ним менее сложной. Вот пример программы:
КОБОЛ — это настоящий хит
Как бы неуклюже ни казалось сегодня, КОБОЛ был революционным. Он нашел пользу в финансовом секторе, федеральном правительстве и крупных корпорациях и организациях. Это было связано с его масштабируемостью, возможностями обработки пакетов и математической точностью. Он был установлен на мэйнфреймах по всему миру, укоренился и процветал.
Зависимость от систем, которые все еще работают на COBOL, удивительна. Reuters предоставила отчет за 2017 год со следующей статистикой:
Кобол это проблема
Программисты, которые знают COBOL, либо уходят на пенсию, думают об уходе на пенсию, либо мертвы. Мы постоянно теряем людей, которые обладают навыками для поддержания этих жизненно важных систем в рабочем состоянии. Новые, более молодые программисты не знают COBOL. Большинство также не хотят работать на системах, для которых Вам нужно поддерживать древний код или писать новый код.
Это такая проблема, что Билл Хиншоу, ветеран COBOL, был вынужден уйти на пенсию, чтобы основать COBOL Cowboys. Эта частная консалтинговая фирма обслуживает отчаявшихся корпоративных клиентов, которые нигде не могут найти подкованных на COBOL кодеров. «Молодым» в COBOL Cowboys уже за 50. Они считают, что 90 процентов бизнес-систем Fortune 500 работают на COBOL.
Конечно, частные предприятия, корпорации и банки — не единственные, кому нужно колоссальное количество финансовых данных. Федеральные, провинциальные и местные органы власти предъявляют одинаковые требования. Как и все остальные, они используют для этого мэйнфреймы и COBOL.
Почему бы не мигрировать и не обновиться
Обновление этих устаревших систем не так просто, как кажется. Системы являются жизненно важными, работающие 24/7, на которых вращаются финансовый, правительственный и деловой мир. Код старый, многослойный и, часто, плохо или полностью недокументированный. Перспектива сравнивалась с тем, чтобы снять пропеллеры с самолета и попытаться оснастить его реактивными двигателями — в воздухе.
Помимо риска, экономический аргумент для перехода на современные системы также является жестким. Деньги, которые были потрачены на поддержание работоспособности этих мэйнфреймов и приложений COBOL, поразительны. Должны ли учреждения выбрасывать все это и начинать заново, пока этот код COBOL все еще работает и функционирует? Миграция с COBOL не будет ни дешевой, ни быстрой.
Все меняется, но перспектива сделать что-то с этим вряд ли привлекательна. Тем не менее, единственный способ улучшить ситуацию — это провести контролируемую, осторожную миграцию на современные программные и аппаратные средства.
Для достижения этого без сбоев, потери данных и простоев потребуются современные знания и деньги, что составляет 50 процентов от этого уравнения. Другая половина — это знания и время COBOL.
Источник
COBOL — язык программирования, на котором работают почти все банкоматы
Практически все банковские автоматы работают на старом языке программирования COBOL (Common Business-Oriented Language), которому почти 60 лет. Он был разработан в 1959 году как стандартный язык для бизнеса и до сих пор используется в банках по всему миру. В 2014 году 92 из 100 ведущих банков и 71% компаний из списка Fortune 500 пользовались языком COBOL на своих центральных компьютерах.
Вот несколько интересных фактов и цифр об этом языке программирования.
COBOL в цифрах
История происхождения
В 1950-е году было очень мало стандартных языков программирования, и большинство компьютеров работали на персональных вариантах. В 1959 году Министерство обороны США собрало 40 экспертов из правительства и компьютерной индустрии для создания Конференции по языкам систем обработки данных (CODASYL). Они вдохновились стандартным языком программирования FORTRAN, который использовался в научном сообществе, а также языками MATH-MATIC и FLOW-MATIC. В 1960 году COBOL был готов к коммерческому запуску, а к 1970 стал самым популярным компьютерным языком мира.
Сейчас COBOL считается устаревшим языком, и его больше не поддерживают новые системы. Тем не менее, он по-прежнему полезен. На COBOL до сих пор работают различные бизнес-системы, например, банковские.
Интересные отсылки
Почему бы не обновиться?
Сейчас с трудом можно найти новых программистов на COBOL, поэтому возникает очевидный вопрос: почему бы не перейти на более современные технологии?
Ответ прост: дорого и рискованно. COBOL работает с банковской индустрией, где любая ошибка может сильно ударить как по прибыли, так и по репутации, о чем недавно узнал на своем опыте британский банк TSB. В его мобильной банковской системе произошел сбой, из-за которого люди, зайдя в свой аккаунт, видели чужие данные.
Исследования показывают, что менее опасно дорабатывать существующие системы. Но все же любое изменение старых систем, в которых заложены десятилетия корпоративных данных, может быть рискованным, потому что сейчас становится все меньше программистов, хорошо разбирающихся в COBOL.
Австралийский опыт
В 2012 году Банк содружества начал заменять систему COBOL на программу, разработанную немецкой компанией SAP. После того, к чему это привело, вряд ли многие банки захотят последовать примеру Австралии.
Другие древние языки
Можно ли считать COBOL «мертвым» языком программирования? Как ответил на Quora один программист, не существует мертвых языков, но зато есть много зомби. Они не добились такого же успеха, как COBOL, но их все равно можно найти в пыльных математических лабораториях различных университетов.
Материалы по теме:
Нашли опечатку? Выделите текст и нажмите Ctrl + Enter
Источник
Современный COBOL: руководство по реализации микросервиса
Предварительные условия
Вы знаете основные принципы, методы и стандарты COBOL. В этом руководстве мы используем GnuCOBOL — бесплатный компилятор COBOL, реализующий значительную часть стандартов COBOL 85, COBOL 2002, COBOL 2014 и X/Open COBOL, а также многие расширения, включённые в другие компиляторы COBOL.
Вы знакомы с протоколом HTTP — форматами запросов и ответов.
У вас есть аккаунт на GitHub для публикации микросервисов.
Полный исходный код этого руководства на GitHub.
Спецификации
Одна из сильных сторон COBOL — это десятичные вычисления. В этом руководстве мы создадим высокоточный микросервис обмена валют, обрабатывающий HTTP API и возвращающий сумму в евро в формате JSON.
Обменные курсы — это курсы евро, опубликованные Европейским центральным банком. Ежедневные обновления курса и поддержка многопоточности выходят за рамки этого руководства.
Структура
Наконец, создадим пустые файлы microservice.cbl и microservice-test.cbl в каталогах src и tests соответственно. Они понадобятся нам позже.
Зависимости
Наш микросервис зависит от:
Этот файл, уже известный как COBOL Copybook, включает в себя все прямые и унаследованные зависимости для микросервиса. Мы используем его внутри нашей программы на следующем этапе.
Программа
По сути наша программа должна:
Программа receive-tcp — это сервер, который принимает входящие соединения, считывает содержимое запроса в буфер и делится буфером с программой обратного вызова. Обратный вызов парсит содержимое и заменяет буфер ответом. Сервер отправляет ответ обратно клиенту. Полный листинг программы на GitHub.
Давайте установим среду выполнения GnuCOBOL Docker:
В этом руководстве мы используем GnuCOBOL 2.2, единственный стабильный GnuCOBOL компилятор, доступный в настоящее время в бинарных дистрибутивах. Вы так же можете найти его и установить в исходном формате на свой компьютер.
Наш микросервис будет следовать практике непрерывной интеграции, когда разработчики интегрируют исходный код в общий репозиторий, где каждая интеграция тестируется автоматически. Для тестирования воспользуемся простой тестовой средой GCBLUnit, уже установленной ранее как зависимость для отладки.
Давайте создадим Dockerfile микросервиса:
Мы открываем 8000 порт и выполняем работу microservice-test при каждой сборке образа. Последний элемент всей картины — это тест-файл microservice-test.cbl :
Для целей тестирования я подготовил минимальное CSV содержимое только с одной валютой — USD. Как видно из определения буфера, тест запрашивает конвертацию 1 USD. Мы ожидаем ненулевые HTTP-заголовки, а также обменную сумму с высокой точностью 0.8750437521876093. Последняя строка включает в себя основную тестируемую программу.
Контейнер
Создадим образ Docker:
Прекрасно! Наш образ Docker успешно прошёл тест, рассчитав 4 выражения, и готов к запуску:
Откроем http://localhost:8000/USD/99.99 и http://localhost:8000/ABC/1 в браузере и посмотрим, что произойдёт. Чтобы остановить и удалить контейнер, запустим:
GitHub
Заключение
Мы реализовали микросервис с помощью библиотеки Git, менеджера пакетов, модульного тестирования и виртуализации в рамках подхода непрерывной интеграции. COBOL, которому уже 60 лет, подходит для современной разработки программного обеспечения!
Источник
КОБОЛ — Краткое руководство
Эволюция Кобола
В 1950-х годах, когда предприятия росли в западной части мира, была необходимость автоматизировать различные процессы для простоты эксплуатации, и это породило язык программирования высокого уровня, предназначенный для обработки бизнес-данных.
В 1959 COBOL был разработан CODASYL (Конференция по языку систем данных).
Следующая версия, COBOL-61, была выпущена в 1961 году с некоторыми изменениями.
В 1968 году COBOL был утвержден ANSI в качестве стандартного языка для коммерческого использования (COBOL-68).
Он был снова пересмотрен в 1974 и 1985 годах для разработки последующих версий, названных COBOL-74 и COBOL-85 соответственно.
В 2002 году был выпущен объектно-ориентированный COBOL, который мог использовать инкапсулированные объекты как обычную часть программирования на COBOL.
В 1959 COBOL был разработан CODASYL (Конференция по языку систем данных).
Следующая версия, COBOL-61, была выпущена в 1961 году с некоторыми изменениями.
В 1968 году COBOL был утвержден ANSI в качестве стандартного языка для коммерческого использования (COBOL-68).
Он был снова пересмотрен в 1974 и 1985 годах для разработки последующих версий, названных COBOL-74 и COBOL-85 соответственно.
В 2002 году был выпущен объектно-ориентированный COBOL, который мог использовать инкапсулированные объекты как обычную часть программирования на COBOL.
Важность кобола
COBOL был первым широко используемым языком программирования высокого уровня. Это английский язык, который удобен для пользователя. Все инструкции могут быть закодированы простыми английскими словами.
Кобол также используется в качестве самодокументируемого языка.
COBOL может обрабатывать огромные данные.
COBOL совместим с его предыдущими версиями.
COBOL имеет эффективные сообщения об ошибках, поэтому устранение ошибок проще.
COBOL был первым широко используемым языком программирования высокого уровня. Это английский язык, который удобен для пользователя. Все инструкции могут быть закодированы простыми английскими словами.
Кобол также используется в качестве самодокументируемого языка.
COBOL может обрабатывать огромные данные.
COBOL совместим с его предыдущими версиями.
COBOL имеет эффективные сообщения об ошибках, поэтому устранение ошибок проще.
Особенности КОБОЛ
Стандартный язык
COBOL — это стандартный язык, который можно скомпилировать и выполнить на таких машинах, как IBM AS / 400, персональные компьютеры и т. Д.
Бизнес ориентированный
COBOL был разработан для бизнес-ориентированных приложений, связанных с финансовой областью, областью защиты и т. Д. Он может обрабатывать огромные объемы данных благодаря своим расширенным возможностям обработки файлов.
Надежный язык
COBOL является надежным языком, поскольку его многочисленные средства отладки и тестирования доступны практически для всех компьютерных платформ.
Структурированный язык
Логические структуры управления доступны в языке COBOL, что облегчает их чтение и изменение. COBOL имеет различные подразделения, поэтому его легко отлаживать.
COBOL — Настройка среды
Установка COBOL в Windows / Linux
Существует много бесплатных эмуляторов мэйнфреймов для Windows, которые можно использовать для написания и изучения простых программ на языке COBOL.
Одним из таких эмуляторов является Hercules, который можно легко установить в Windows, выполнив несколько простых шагов, приведенных ниже —
Загрузите и установите эмулятор Hercules, который доступен на домашнем сайте Hercules: www.hercules-390.eu.
Запустите командную строку (CMD) и перейдите в каталог C: / hercules / mvs / cobol на CMD.
Полное руководство по различным командам для написания и выполнения программ JCL и COBOL можно найти по адресу:
Загрузите и установите эмулятор Hercules, который доступен на домашнем сайте Hercules: www.hercules-390.eu.
Запустите командную строку (CMD) и перейдите в каталог C: / hercules / mvs / cobol на CMD.
Полное руководство по различным командам для написания и выполнения программ JCL и COBOL можно найти по адресу:
Hercules — это программная реализация с открытым исходным кодом для архитектур мэйнфреймов System / 370 и ESA / 390 в дополнение к новейшей 64-битной архитектуре z / Architecture. Hercules работает под Linux, Windows, Solaris, FreeBSD и Mac OS X.
Пользователь может подключиться к серверу мэйнфреймов несколькими способами, такими как тонкий клиент, фиктивный терминал, система виртуального клиента (VCS) или система виртуального рабочего стола (VDS). Каждому действительному пользователю предоставляется логин для входа в интерфейс Z / OS (TSO / E или ISPF).
Компиляция программ COBOL
IGYCRCTL — это утилита компилятора IBM COBOL. Параметры компилятора передаются с использованием параметра PARM. В приведенном выше примере RMODE указывает компилятору использовать в программе режим относительной адресации. Программа COBOL передается с использованием параметра SYSIN. Тетрадь — это библиотека, используемая программой в SYSLIB.
Выполнение программ COBOL
Ниже приведен пример JCL, где программа MYPROG выполняется с использованием входного файла MYDATA.URMI.INPUT и создает два выходных файла, записанных в спул.
Загрузочный модуль MYPROG находится в MYDATA.URMI.LOADLIB. Важно отметить, что вышеуказанный JCL можно использовать только для модуля COBOL, отличного от DB2.
Выполнение программ COBOL-DB2
Для запуска программы на языке COBOL-DB2 в JCL и программе используется специализированная утилита IBM; Регион DB2 и необходимые параметры передаются в качестве входных данных утилите.
Шаги, выполняемые при запуске программы COBOL-DB2, следующие:
Когда программа на языке COBOL-DB2 компилируется, DBRM (модуль запроса базы данных) создается вместе с модулем загрузки. DBRM содержит операторы SQL программ на языке COBOL, синтаксис которых проверен на корректность.
DBRM привязан к региону DB2 (среде), в которой будет работать COBOL. Это можно сделать с помощью утилиты IKJEFT01 в JCL.
После шага связывания программа COBOL-DB2 запускается с использованием IKJEFT01 (снова) с библиотекой загрузки и библиотекой DBRM в качестве входных данных для JCL.
Когда программа на языке COBOL-DB2 компилируется, DBRM (модуль запроса базы данных) создается вместе с модулем загрузки. DBRM содержит операторы SQL программ на языке COBOL, синтаксис которых проверен на корректность.
DBRM привязан к региону DB2 (среде), в которой будет работать COBOL. Это можно сделать с помощью утилиты IKJEFT01 в JCL.
После шага связывания программа COBOL-DB2 запускается с использованием IKJEFT01 (снова) с библиотекой загрузки и библиотекой DBRM в качестве входных данных для JCL.
В приведенном выше примере MYCOBB — это программа COBOL-DB2, запущенная с использованием IKJEFT01. Обратите внимание, что имя программы, идентификатор подсистемы DB2 (SSID) и имя плана DB2 передаются в операторе SYSTSIN DD. Библиотека DBRM указана в STEPLIB.
КОБОЛ — Структура программы
Структура программы COBOL состоит из подразделений, как показано на следующем рисунке —
Краткое введение этих разделов дано ниже —
Разделы являются логическим подразделением логики программы. Раздел представляет собой набор абзацев.
Абзацы являются подразделением раздела или подразделения. Это либо пользовательское, либо предварительно определенное имя, за которым следует точка, и состоит из нуля или более предложений / записей.
Предложения являются комбинацией одного или нескольких утверждений. Предложения появляются только в разделе «Процедура». Предложение должно заканчиваться точкой.
Утверждения являются осмысленными операторами COBOL, которые выполняют некоторую обработку.
Символы являются самыми низкими в иерархии и не могут быть делимыми.
Разделы являются логическим подразделением логики программы. Раздел представляет собой набор абзацев.
Абзацы являются подразделением раздела или подразделения. Это либо пользовательское, либо предварительно определенное имя, за которым следует точка, и состоит из нуля или более предложений / записей.
Предложения являются комбинацией одного или нескольких утверждений. Предложения появляются только в разделе «Процедура». Предложение должно заканчиваться точкой.
Утверждения являются осмысленными операторами COBOL, которые выполняют некоторую обработку.
Символы являются самыми низкими в иерархии и не могут быть делимыми.
Вы можете связать вышеупомянутые термины с программой COBOL в следующем примере —
Разделы
Программа COBOL состоит из четырех отделов.
Отдел идентификации
Это первое и единственное обязательное разделение каждой программы COBOL. Программист и компилятор используют это разделение для идентификации программы. В этом разделе PROGRAM-ID является единственным обязательным пунктом. PROGRAM-ID указывает имя программы, которое может содержать от 1 до 30 символов.
Попробуйте следующий пример, используя опцию Live Demo онлайн.
Ниже приведен JCL для выполнения вышеуказанной программы COBOL.
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
Отдел окружающей среды
Разделение среды используется для указания входных и выходных файлов программы. Он состоит из двух разделов —
Раздел конфигурации предоставляет информацию о системе, в которой написана и выполнена программа. Он состоит из двух параграфов —
Исходный компьютер — система, используемая для компиляции программы.
Объектный компьютер — система, используемая для выполнения программы.
Раздел ввода-вывода предоставляет информацию о файлах, которые будут использоваться в программе. Он состоит из двух параграфов —
Управление файлами — предоставляет информацию о внешних наборах данных, используемых в программе.
IO control — предоставляет информацию о файлах, используемых в программе.
Раздел конфигурации предоставляет информацию о системе, в которой написана и выполнена программа. Он состоит из двух параграфов —
Исходный компьютер — система, используемая для компиляции программы.
Объектный компьютер — система, используемая для выполнения программы.
Раздел ввода-вывода предоставляет информацию о файлах, которые будут использоваться в программе. Он состоит из двух параграфов —
Управление файлами — предоставляет информацию о внешних наборах данных, используемых в программе.
IO control — предоставляет информацию о файлах, используемых в программе.
Отдел данных
Разделение данных используется для определения переменных, используемых в программе. Он состоит из четырех разделов —
Раздел File используется для определения структуры записи файла.
Раздел Working-Storage используется для объявления временных переменных и файловых структур, которые используются в программе.
Раздел Local-Storage аналогичен разделу Working-Storage. Единственное отличие состоит в том, что переменные будут выделяться и инициализироваться каждый раз, когда программа начинает выполнение.
Раздел связывания используется для описания имен данных, полученных из внешней программы.
Раздел File используется для определения структуры записи файла.
Раздел Working-Storage используется для объявления временных переменных и файловых структур, которые используются в программе.
Раздел Local-Storage аналогичен разделу Working-Storage. Единственное отличие состоит в том, что переменные будут выделяться и инициализироваться каждый раз, когда программа начинает выполнение.
Раздел связывания используется для описания имен данных, полученных из внешней программы.
JCL для выполнения вышеуказанной программы COBOL выглядит следующим образом:
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
Процедурный отдел
Процедура деления используется для включения логики программы. Он состоит из исполняемых операторов с использованием переменных, определенных в разделе данных. В этом разделе имена абзацев и разделов определяются пользователем.
В разделении процедуры должен быть хотя бы один оператор. Последним оператором, завершающим выполнение в этом разделе, является либо STOP RUN, который используется в вызывающих программах, либо EXIT PROGRAM, который используется в вызываемых программах.
JCL для выполнения вышеуказанной программы COBOL —
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
КОБОЛ — Базовый Синтаксис
Набор символов
«Персонажи» — самые низкие в иерархии, и их нельзя разделить дальше. Набор символов COBOL включает 78 символов, которые показаны ниже —
Источник