История языка программирования COBOL
06.12.2024
10.02.2025
8 минут
204
0
0
0
0
Вступление
COBOL (common business-oriented language) - это высокоуровневый язык программирования для управления финансовыми операциями(транзакциями) в приложениях по всему миру и на всех платформах.
Бабушкой или матерью данного языка считается Грейс Хоппер, хотя к разработке или дизайну данного языка не имела отношения. Её так называют ибо COBOL был основан на другом языке FLOW-MATIC, созданием которого она и занималась. Данный язык ещё называют B-0 или Business language version 0.

На COBOL, спустя все 65 лет ( по состоянию на 2017 год):
- Обрабатываются 95% всех операций с ATM
- 43% всех банковских систем работает на COBOL
- Совершается 80% всех межкарточных переводов
- Используется 220 миллиардов строк кода
Такой успех, стал возможен благодаря поддержке и инициативе Министерства обороны США, которые считали данный язык удобным и переносимым на разные системы. Нельзя и забывать тот факт, что по факту COBOL, был первым ЯП для работы с финансами, денежными транзакциями и переводами.
Где сейчас его используют:
- Очень многие финансовые и банковские учреждения используют системы и программы написанные на COBOL.
- В государственных органах и учреждениях.
- В ритейле и некоторые логистические компании используют его при инвентаризации и обработки заказов.
- Производит банкоматные операции и межбанковские переводы.
На текущий момент действует стандарт ISO/IEC 1989:2023. С которым можно ознакомиться онлайн.
Причины создания и первая версия COBOL, COBOL-60
Всё началось 28-29 мая 1959 года, когда было проведено совещание в Пентагоне, по созданию общего языка программирования для бизнеса. Тогда, самым популярным языком был FORTRAN, но он не обладал необходимым функционалом, чтобы быть полезным при написании бизнес или финансовых приложений.
На данной встречи участвовало 41 человек и они заключили, что данный язык должен был быть прост для изучения и быть применим в различных сферах деятельности. Начиная от финансового сектора и заканчивая управлением инвентаризации на складах.
Позже комитет собрался ещё раз 4 июня 1959 и учредил Комитет по языкам систем данных (CODASYL). Дальше комитет определили все достоинства и недостатки языков FLOW-MATIC и COMTRAN и позже разработал на их основе COBOL. Сама Грейс Хоппер говорила:
Так же был шанс того, что данный язык умрёт так и не родившись. Дело в том, что вскоре комитет получил копию другого языка FACT, который был создан Роем Натом. По началу, он всех очень удивил (в хорошем смысле), но тот факт, что данный язык создавался без оглядки на портативность или отсутствие вообще какого-бы то ни было примера по использованию в реальном мире, от него отказались. Так появился COBOL-60.
От COBOL-61 до COBOL-65
COBOL-61 не имел полной обратной совместимости с 60-ой. CODASYL не внесла много нового функционала в эту версию, ибо хотела изменения структурные. Если 60 это был концепт, который должен был показать, нужен данный язык или нет, оказалось ещё как нужен, то 61 это был крепкий фундамент, основа, для всех последующих версий.
После 61 версии появилась расширенная версия. Она опять в некотором роде меняла внутреннюю структуру языка. По этому COBOL-61 и COBOL-61 Extended, совместимы, но не совсем). Вот основные изменения которые были внесены в COBOL-61 Extended
- Добавление сортировки
- Возможности написания отчётов
- Улучшение арифметики, с включением множественных полей ввода и добавление CORRESPONDING варианта для ADD и SUBTRACT инструкций.
В 65 версии были внесены следующие изменения:
- Включение ряда опций, обеспечивающих чтение, запись и обработку файлов массового хранения.
- Добавление функции обработки таблиц, которая включает параметры индексации и поиска.
- Изменение спецификаций для удаления требования для конкретных сообщений об ошибках диагностики.
- Удаление терминов «обязательный» и «выборочный».
От COBOL-68 до COBOL-84
COBOL-68
Другие версии до 68 не имели какого-то ни было общего стандарта. И главной целью при разработке версии COBOL-68 было создать стандарт языка, что ANSI и сделала, создала USA Standard COBOL X3.23. И вот другие изменения, которые были внесены в COBOL-68:
- Включение межпрограммной коммуникации и концепции единицы выполнения.
- Устранение избыточных предложений редактирования и определенных предложений данных, более кратко выраженных предложением PICTURE.
- Улучшенная спецификация COPY для всех разделов, кроме Identification Division, и устранение оператора INCLUDE.
- Включение аппаратно-независимых средств указания и тестирования условий переполнения страницы.
- Устранение сокращений типа 4.
- Устранение оператора DEFINE.
- Включение фразы REMAINDER в оператор DIVIDE.
- Удаление NOTE и REMARKS в пользу общей возможности комментариев для всех разделов.
- Включение оператора SUSPEND в качестве дополнительного средства управления графическими устройствами отображения.
- Включение дополнительных сокращений.
COBOL-69
К этому моменту этот язык стал самым распространённым в мире и работы по его улучшению проводились каждый год. Главные изменения, которые были внесены в COBOL-69:
- Удаление оператора EXAMINE и включение более мощного оператора INSPECT вместо него.
- Включение средства связи для разрешения ввода и вывода с помощью устройств связи.
- Включение операторов STRING и UNSTRING для упрощения манипуляций со строками символов.
- Удаление CONSTANT SECTION из Data Division.
- Включение средства извлечения страницы во время компиляции.
- Включение средства для доступа к дате и времени системы.
- Включение предложения SIGN.
COBOL-70
Главные изменения, которые были внесены в COBOL-70:
- Удаление предложения RANGE.
- Включение оператора INITIALIZE.
- Включение средства отладки.
- Включение средства слияния.
- Полная переработка функции автора отчетов
COBOL-73
Главные изменения, которые были внесены в COBOL-73:
- Пересмотр и расширение хранилища данных.
- Уточнение и расширение библиотеки COBOL.
- Улучшение оператора INSPECT.
- Пересмотр записи управления файлами для сортировки или слияния файлов, включающее удаление формата 3.
- Пересмотр функции RERUN.
- Снятие ограничения на 77 номеров уровня, что они должны предшествовать номерам уровня 01.
- Включение функции продвижения страницы как части оператора WRITE.
- Улучшение предложения LINAGE для разрешения указания полей.
COBOL-76
Главные изменения, которые были внесены в COBOL-76:
- Включение возможности базы данных, которая взаимодействует с CODASYL Data Description Language Journal of Development.
- Включение последовательности сортировки и объявлений набора символов.
- Включение возможности манипуляции булевыми (битовыми) значениями.
- Включение возможности отмены редактирования.
- Включение возможности модификации ссылок.
- Включение расширений возможностей обработки файлов в Environment и Data Divisions.
- Включение оператора DELETE FILE.
- Включение оператора PURGE.
- Включение возможности записи переменной длины.
- Удаление спецификаций случайной обработки.
- Удаление оператора ALTER.
- Удаление всех числовых имен абзацев и имен разделов.
- Улучшение возможности обработки таблиц, позволяющее указывать таблицы, имеющие более трех измерений.
- Расширение операторов SORT и MERGE на относительные и индексированные файлы.
- Расширение использования OPTIONAL на все организации файлов.
COBOL-78
Главные изменения, которые были внесены в COBOL-78:
- Включение возможности указывать символьные символы и позиционно связывать их с собственным набором символов или определяемым пользователем алфавитом.
- Включение возможности межпрограммной коммуникации для обеспечения коммуникации между составляющими программами в единице выполнения.
- Включение глобальной и внешней спецификации для элементов данных.
- Включение дополнительных возможностей для поддержки структурного программирования, включая неявные и явные терминаторы для ограничения области действия операторов и оператора CONTINUE.
- Включение многоветвевой, многообъединяющей структуры, оператора EVALUATE, для обеспечения оценки нескольких условий.
- Включение возможности встроенного оператора PERFORM.
- Включение возможности блокировки базы данных для поддержания целостности базы данных.
- Включение возможности указывать надпечатку и замену символов на принимающем устройстве связи или устройстве вывода.
- Включение указателя текущего тома для упрощения точной спецификации текущего физического тома последовательного файла.
- Включение возможности выбора записи по определенным ключам записи.
- Включение оператора ROLLBACK.
- Включение оператора REPLACE.
- Включение возможности в оператор SET для назначения значения имени-условия.
- Включение числовых имен параграфов и имен разделов.
- Включение возможности для ориентированной на транзакции коммуникации.
- Включение возможности для управления вводом-выводом в отдельно скомпилированных программах.
- Изменение спецификаций для ключей базы данных, ключей записей и областей.
- Изменение индикаторов валют для использования при поддержании позиции во время обновления базы данных.
- Изменения для облегчения совместимости между возможностями подсхемы COBOL и языком описания данных CODASYL.
- Расширение и уточнение индикаторов состояния базы данных.
- Удаление записей комментариев.
COBOL-85
В 1980 году была предложена новая версия со своими улучшениями и новшествами. Но прикол был в том, что данная версия почти не имела обратной совместимости. Это вызвало шквал негодования и резких высказываний. Кто-то, даже хотел засудить комитет из-за отсутствия обратной совместимости. И вот в такой обстановке началась работа по улучшению стандарта. Был проведён публичный обзор, из 2200 ответов, 1700 были негативными <(_ _)>
Главные изменения, которые были внесены в COBOL-80:
- Включение представления данных с плавающей точкой, включая литералы и редактирование изображений.
- Включение двух новых использований, называемых BINARY и PACKED-DECIMAL.
- Изменение фразы ADVANCING оператора WRITE для возможности позиционирования в любом месте на логической странице.
- Изменение предложения REDEFINES для возможности переопределяемого элемента быть больше или меньше элемента, который он переопределяет.
- Изменение в индексировании для возможности использования арифметических выражений в качестве индексов и использования имен индексов вместе с арифметическими выражениями.
- Удаление предложения DATA RECORDS.
- Включение оператора RECONNECT для изменения членства в наборе.
- Удаление оператора ENTER и изменение оператора CALL для возможности вызова языков, отличных от COBOL.
- Изменение в использовании запятой и точки с запятой для возможности их использования в любом месте, где может появиться пробел.
- Изменение в формате ссылки для возможности представления в свободном формате.
- Включение внутренних функций, таких как синус и косинус.
- Изменение операторов SORT и MERGE, которое сняло все ограничения на передачу управления в процедуры ввода или вывода и из них.
- Включение блокировки сегмента области для улучшения параллелизма базы данных.
- Удаление механизма контроля доступа из базы данных.
- Устранение требования имени абзаца после имени раздела или в начале программы.
- Удаление имен ключей из базы данных.
Перед выходом последнего стандарта, был проведён ещё опрос, и результат был таков, что только 25 рецензентов ответили негативно, из 2200. Вот главные изменения, которые были внесены в COBOL-85:
- Включение фразы FALSE в оператор SET.
- Удаление буквальной фразы из оператора STOP.
- Удаление предложения SYNCHRONIZED.
- Включение функции WHEN-COMPILED для возврата времени и даты компиляции; запись DATE-COMPILED была удалена.
- Включение средства VALIDATE.
- Включение предложения ARITHMETIC в параграф OBJECT-COMPUTER для возможности выбора стандартной или собственной арифметики.
- Удаление ограничений на использование явных разделителей области действия и фраз NOT условных операторов.
- Включение оператора LESS THAN в оператор START.
- Восстановление фразы integer-l TO integer-2 в операторе RECORD CONTAINS; также включение явных правил для аспектов этого пункта, определенных разработчиком, и отсутствие предложения RECORD.
- Пересмотр правил вычисления остатка в операторе DIVIDE.
- Удаление предложения RERUN.
- Удаление и пересмотр нескольких значений статуса ввода-вывода.
Объектно-ориентированный COBOL
В начале 1990-х годов началась работа по добавлению объектно-ориентированного программирования в следующую версию COBOL. Объектно-ориентированные возможности были взяты из C++ и Smalltalk. Окончательный утвержденный стандарт ISO был утвержден и опубликован в конце 2002 года.
Хотя COBOL теперь и поддерживает классы и объекты, изначально он был процедурным. И даже сейчас, многие программы на этом языке не используют ООП фичи такие, как:
- Возможность определять классы, включающие определения объектов классов и определения объектов.
- Возможность определять данные, инкапсулированные внутри объектов классов и объектов.
- Возможность определять методы для объектов классов и объектов.
- Возможность использовать наследование и определять подклассы.
- Возможность использовать полиморфизм и интерфейсы для максимальной гибкости.
- Возможность определять элементы данных, способные хранить ссылки на объекты.
- Возможность вызывать методы для объектов.
- Возможность создавать и управлять объектами по мере необходимости.
- Возможность использовать объекты как обычную часть программирования на COBOL при разработке новых программ и поддержке существующих программ.
COBOL 2014
В период с 2003 по 2009 год было подготовлено три технических отчета, описывающих финализацию объектов, обработку XML и классы коллекций для COBOL
Цель финализации объектов — освободить ресурсы, которые в противном случае не будут освобождены обычным процессом сборки мусора. Примерами служат открытые файлы, временные рабочие файлы, соединения с базами данных, интерфейсы сокетов TCP/IP и сетевые соединения. В 2003 году была добавлена финализация объектов, по факту сборщик мусора.
В 2007 году была добавленна возможность работать и обрабатывать XML-документы, также как и обычные файлы. Новый синтаксис для обработки XML-документов:
- Основан на знакомом подходе, используемом с поддержкой ввода-вывода COBOL
- Предоставляет синтаксический анализ в стиле Document Object Model (DOM)
- Обрабатывает несколько источников входных данных для чрезвычайно гибкой обработки XML
- Чтение, обновление и запись XML-документов
- Проверка правильности формата XML-документов
- Предоставляет дополнительную проверку действительности XML-документа по схеме или определению типа документа (DTD)
В 2009 были добавлены дополнительные интерфейсы для работы с коллекциями объектов.
Изменения COBOL в 2023 и о самом языке на текущий момент
В 2023 году в язык были внесены следующие изменения:
- Синтаксис асинхронных сообщений с использованием операторов SEND и RECEIVE
- Средство обработки транзакций с COMMIT и ROLLBACK
- Логический оператор XOR
- Оператор CONTINUE может быть расширен, чтобы приостановить программу на указанное время
- Оператор DELETE FILE
- Организация файла LINE SEQUENTIAL
- Определенный бесконечный цикл с PERFORM UNTIL EXIT
- Встроенная функция SUBSTITUTE, позволяющая выполнять замену подстрок разной длины
- Функция CONVERT для преобразования базы
- Операторы логического сдвига
Так же значительным событием можно считать появление инструмента автоматизации. 22 августа 2023 года корпорация IBM анонсировала инструмент Watsonx Code Assistant for Z на основе искусственного интеллекта для автоматизированного перевода кода с древнего языка программирования COBOL на Java.
Последняя выпущенная версия от IBM - COBOL 7.4. Всю документацию о языке можно скачать или прочитать онлайн на https://www.ibm.com/docs/ru/i/7.4?topic=languages-cobol. Или можно скачать этот документ.
Комментарии
(0)
Отправить
Сейчас тут пусто. Буть первым (o゚v゚)ノ