Как были названы языки программирования cobol

Не путайте с Коболом, вымышленной планетой в Battlestar Galactica.
КОБОЛ
Отчет COBOL Apr60.djvu
Парадигма Процедурный, императивный, объектно-ориентированный
Разработанный компанией Говард Бромберг, Норман Дисконт, Вернон Ривз, Джин Э. Сэммет, Уильям Селден, Гертруда Тирни, с косвенным влиянием Грейс Хоппер[1]
Разработчики CODASYL, ANSI, ISO
Впервые появился 1959; 62 года назад
Стабильное высвобождение

ISO/IEC 1989:2014 / 2014

Дисциплина машинописи Слабый, статичный
Расширения файлов .cbl, .cob, .cpy
GnuCOBOL, IBM COBOL, Micro Focus Visual COBOL
COBOL/2, DEC COBOL-10, DEC VAX COBOL, DOSVS COBOL, Envyr ICOBOL, Fujitsu COBOL, Hitachi COBOL2002, HP3000 COBOL/II, IBM COBOL SAA, IBM COBOL/400, IBM COBOL/II, IBM Enterprise COBOL, IBM ILE COBOL, IBM OS/VS COBOL, ICL COBOL (VME), Micro Focus ACUCOBOL-GT, Micro Focus COBOL-IT, Micro Focus RM/COBOL, Micro Focus Visual COBOL, Microsoft COBOL, Raincode COBOL, Realia COBOL, Ryan McFarland RM/COBOL, Ryan McFarland RM/COBOL-85, Tandem (NonStop) COBOL85, Tandem (NonStop) SCOBOL, UNIVAC COBOL, Unisys MCP COBOL74, Unisys MCP COBOL85, Unix COBOL X/Open, Veryant isCOBOL, Wang VS COBOL

AIMACO, C++,[a]COMTRAN, Eiffel,[a]FACT, FLOW-MATIC, Smalltalk[a]
CobolScript,[5]EGL,[6]PL/I,[7]PL/B]

COBOL (; аббревиатура от скомпилированный англоязычный язык программирования, предназначенный для использования в бизнесе. Это

императивный, процедурный и, начиная с 2002 года, объектно-ориентированный язык. COBOL в основном используется в бизнесе. Финансах и административных системах для компаний и правительств. COBOL по-прежнему широко используется в приложениях . Развернутых на мэйнфреймах, таких как крупномасштабная пакетная обработка и обработка транзакций Вакансии. Однако в связи с падением популярности и уходом на пенсию опытных программистов COBOL программы переносятся на новые платформы. Переписываются на современные языки или заменяются программными пакетами.

[8] Большинство программ в COBOL в настоящее время исключительно для поддержания существующих приложений; однако многие крупные финансовые учреждения все еще разрабатывали новые системы в COBOL еще в 2006 году из-за скорости обработки мэйнфреймов.[9]

COBOL был разработан в 1959 году компанией CODASYL и частично основан на языке программирования FLOW-MATIC, разработанном Грейс Хоппер. Он был создан в рамках усилий Министерства обороны США по созданию портативного языка программирования для обработки данных.

Первоначально он рассматривался как временная мера. Но Министерство обороны быстро вынудило производителей компьютеров предоставить его. В результате чего он получил широкое распространение.Он был стандартизирован в 1968 году и с тех пор пересматривался четыре раза. Расширения включают поддержку структурированного и объектно-ориентированного программирования. Текущий стандарт-ISO/IEC 1989:2014.[11]

Операторы COBOL имеют англоязычный синтаксис. Который был разработан. Чтобы быть самодокументируемым и легко читаемым. Однако он многословен и использует более 300

зарезервированных слов. В отличие от современного. Лаконичного синтаксиса . Такого как y = x;COBOL, он имеет более англоязычный синтаксис (в данном случае MOVE x TO y). Код COBOL разделен на четыре подразделения (идентификация, среда. Данные и процедура). Содержащие жесткую иерархию разделов. Абзацев и предложений. Не имея большой стандартной библиотеки, стандарт определяет 43 оператора, 87 функций и только один класс.

Академические компьютерщики. Как правило. Не интересовались бизнес-приложениями. Когда COBOL был создан. И не участвовали в его разработке; он был (фактически) разработан с нуля как компьютерный язык для бизнеса. С акцентом на входы и выходы. Единственными типами данных которого были числа и строки текста.

Эти недостатки приводят к монолитным и. Хотя и предназначенным быть похожими на английский язык. Не легко понятным и многословным программам.

История и спецификация

Предыстория

В конце 1950-х годов пользователи компьютеров и производители стали беспокоиться о росте стоимости программирования. Исследование 1959 года показало. Что в любой установке обработки данных программирование обходится в среднем в 800 000 долларов. А перевод программ для работы на новом оборудовании обойдется в 600 000 долларов.

В то время, когда новые языки программирования распространялись все более быстрыми темпами. Тот же опрос показал. Что если бы использовался общий бизнес-ориентированный язык. Конверсия была бы намного дешевле и быстрее.

8 апреля 1959 года Мэри К. Хейз, специалист по компьютерам из корпорации Берроуза, созвал встречу представителей академических кругов. Пользователей компьютеров и производителей в Пенсильванском университете, чтобы организовать официальную встречу по общим деловым языкам.[14] Среди представителей были Грейс Хоппер (изобретатель англоязычного языка обработки данных

FLOW-MATIC), Жан Саммет и Сол Горн.

На апрельской встрече группа обратилась к Министерству обороны (МО) с просьбой спонсировать усилия по созданию общего делового языка. Эта делегация произвела впечатление на Чарльза А. Филлипса. Директора отдела исследований информационных систем Министерства обороны[17], который считал. Что они Министерство обороны эксплуатировало 225 компьютеров. Заказало еще 175 и потратило более 200 миллионов долларов на реализацию программ для их запуска. Портативные программы сэкономят время. Снизят затраты и облегчат модернизацию.

Чарльз Филлипс согласился выступить спонсором совещания и поручил делегации подготовить повестку

COBOL 60

28 и 29 мая 1959 года (ровно через год после встречи в Цюрихе ALGOL 58) в Пентагоне состоялась встреча. На которой обсуждалось создание общего языка программирования для бизнеса. На нем присутствовал 41 человек. А председательствовал Филлипс.[20] Министерство обороны было обеспокоено тем. Может ли оно запускать одни и те же программы обработки данных на разных компьютерах. FORTRAN, единственный основной язык в то время. Не имел функций. Необходимых для написания таких программ.

Представители с энтузиазмом описывали язык. Который мог бы работать в самых разных средах. От банковского дела и страхования до коммунальных услуг и управления запасами. Они единодушно согласились. Что больше людей должны уметь программировать и что новый язык не должен быть ограничен ограничениями современной технологии. Большинство согласилось с тем. Что язык должен максимально использовать английский. Быть способным к изменениям. Быть независимым от машины и простым в использовании. Даже за счет мощности.

По итогам совещания был создан руководящий комитет и комитеты по ближнему. Среднему и дальнему расстоянию. Комитету по ближнему востоку было дано время до сентября (три месяца). Чтобы подготовить спецификации для промежуточной формулировки. Которая затем будет усовершенствована другими комитетами. их официальная миссия состояла в том. Чтобы выявить сильные и слабые стороны существующих языков программирования и явно не направлять их на создание нового языка. Крайний срок был встречен недоверием комитета по ближнему востоку. Один член, Бетти Холбертон, описал трехмесячный крайний срок как

Руководящий комитет собрался 4 июня и принял решение назвать всю эту деятельность Комитетом по языкам информационных систем, или КОДАСИЛ, и сформировать исполнительный комитет.

В состав комитета ближнего действия входили представители шести производителей компьютеров и трех правительственных учреждений. Шесть производителей компьютеров были Burroughs Corporation, IBM, Minneapolis-Honeywell (Honeywell Labs), RCA, Sperry Randи Sylvania Electric Products. Тремя правительственными учреждениями были ВВС США, Модельный бассейн Дэвида Тейлора Военно-морского флотаи Национальное бюро стандартов (ныне Национальный институт стандартов и технологий). Председателем комитета был Джозеф Вегштейн Национального бюро стандартов США. Работа началась с изучения описания данных. Утверждений. Существующих приложений и пользовательского опыта.

Комитет в основном рассматривал языки программирования FLOW-MATIC, AIMACO и COMTRAN. Язык FLOW-MATIC был особенно влиятельным. Потому что он был реализован и потому что AIMACO был производным от него с незначительными изменениями.Изобретатель FLOW-MATIC. Грейс Хоппер. Также служила техническим советником комитета.Основным вкладом FLOW-MATIC в COBOL были длинные имена переменных. Английские слова для команд и разделение описаний данных и инструкций. Хоппер иногда называют [34].]хотяЖан Саммет, ведущий дизайнер COBOL, заявил. Что Хоппер [37][1]

Компании IBM COMTRAN язык. Придуманный Боб Бемер, рассматривается в качестве конкурента поток-Матик по малой дальности комитета. Состоящего из коллег Грейс Хоппер. некоторые его особенности не были учтены Коболев так что не будет выглядеть. Как IBM доминировала в процесс проектирования. И Жан Заммет сказал в 1981 году это была В одном случае. После того как Рой Голдфингер. Автор руководства КОМТРАНА и член комитета среднего радиуса действия. Присутствовал на заседании подкомитета. Чтобы поддержать его язык и поощрять использование алгебраических выражений. Грейс Хоппер отправила записку комитету малого радиуса действия. В которой повторила усилия Сперри Рэнд по созданию языка. Основанного на английском. В 1980 году Грейс Хоппер прокомментировала, что Кроме того, она сказала. Что будет утверждать. Что работа была под влиянием как FLOW-MATIC, так и COMTRAN только для того. Чтобы [43] Функции COMTRAN. Включенные в COBOL. Включали формулы, PICTUREпредложение, улучшенный IFоператор. Который избавил от необходимости GO TOs, и более надежную систему управления файлами.

Полезность работы комитета является предметом широких дискуссий. В то время как некоторые члены считали . Что язык имеет слишком много компромиссов и является результатом разработки комитетом, другие считали. Что он лучше. Чем три рассмотренных языка. Некоторые считали этот язык слишком сложным. Другие-слишком простым. Спорные функции включали в себя те. Которые некоторые считали бесполезными или слишком продвинутыми для пользователей. Обрабатывающих данные. К таким функциям относятся логические выражения, формулы и индексы таблиц. Еще один спорный момент заключался в том. Следует ли делать ключевые слова контекстно-зависимыми и как это повлияет на читаемость. хотя контекстные ключевые слова были отклонены. Подход был позднее использован в ПЛ/я и частично в COBOL с 2002 года. мало внимания было уделено интерактивности, взаимодействия с операционными системами (несколько существовавших на тот момент) и функции (считается как чисто математические. Так и не использовать в области обработки данных).

Спецификации были представлены Исполнительному комитету 4 сентября. Они не оправдали ожиданий: Джозеф Вегштейн отметил. Что Подкомитету было дано время до декабря. Чтобы улучшить его

На заседании в середине сентября комитет обсудил название нового языка. Предложения включали Неясно. Кто придумал название хотя Боб Бемер позже утверждал. Что это было его предложение.[55][56][57]

В октябре комитет среднего радиуса действия получил копии спецификации языка FACT. Созданной Роем Наттом. Его особенности произвели на комитет такое сильное впечатление. Что они приняли резолюцию основать на нем COBOL. Это был удар по комитету ближнего действия. Который добился значительного прогресса в разработке спецификации. Несмотря на свое техническое превосходство. FACT не был создан с учетом переносимости или на основе консенсуса производителя и пользователя. Ему также не хватало доказуемой реализации позволяя сторонникам основанного на ПОТОКЕ COBOL отменить это решение. Представитель RCA Говард Бромберг также заблокировал FACT. Чтобы работа RCA над реализацией COBOL не пропала даром.

-А какое имя вы хотите написать? —
спросил я. — Я напишу его для вас. — Я записал имя: КОБОЛЬ.
— Что это за имя?
Мы сократили его и избавились от множества ненужных обозначений.

Говард Бромберг о том. Как он купил надгробие КОБОЛА[60]

Вскоре стало очевидно. Что комитет слишком велик. Чтобы можно было быстро добиться какого-либо дальнейшего прогресса. Расстроенный Говард Бромберг купил надгробную плиту за 15 долларов с выгравированным на ней [b][60] Был сформирован подкомитет для анализа существующих языков и состоял из шести человек:

  • Уильям Селден и Гертруда Тирни из IBM,
  • Говард Бромберг и Говард Дисконт из RCA,
  • Вернон Ривз и Джин Э. Саммет из Sylvania Electric Products.

Подкомитет проделал большую часть работы по созданию спецификации. Предоставив комитету по ближнему кругу рассмотреть и изменить свою работу до подготовки готовой спецификации.

Спецификации были утверждены Исполнительным комитетом 8 января 1960 года и отправлены в правительственную типографию. Которая напечатала их как COBOL 60. Заявленные цели языка заключались в том. Чтобы позволить легко писать эффективные. Переносимые программы. Позволить пользователям переходить на новые системы с минимальными усилиями и затратами и быть подходящими для неопытных программистов. Исполнительный комитет CODASYL позже создал Комитет по техническому обслуживанию COBOL для ответа на вопросы пользователей и поставщиков. А также для улучшения и расширения спецификаций.

В течение 1960 года список производителей. Планирующих построить компиляторы COBOL, рос. К сентябрю еще пять производителей присоединились к CODASYL (Bendix, Control Data Corporation, General Electric (GE), National Cash Register и Philco), и все представленные производители объявили о компиляторах COBOL. GE и IBM планировали интегрировать COBOL на свои собственные языки. GECOM и COMTRAN соответственно. В отличие от этого, международные компьютеры и табуляторы планировали заменить свой язык. CODEL, на COBOL.

Тем временем RCA и Sperry Rand работали над созданием компиляторов COBOL. Первая программа COBOL была запущена 17 августа на RCA 501. 6 и 7 декабря та же программа COBOL (хотя и с незначительными изменениями) работала на компьютере RCA и компьютере Remington-Rand Univac. Демонстрируя. Что совместимость может быть достигнута.[68]

Относительное влияние того. Какие языки использовались. Продолжается и по сей день в рекомендательных рекомендациях. Напечатанных во всех справочниках COBOL:

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

Ни один участник или Комитет CODASYL COBOL не дает никаких гарантий. Явных или подразумеваемых. В отношении точности и функционирования системы программирования и языка. Кроме того, ни один вкладчик. Ни комитет не несут никакой ответственности в связи с этим. Авторами и правообладателями материалов. Защищенных авторским правом. Используемых в настоящем документе. Являются следующие лица:

FLOW-MATIC (торговая марка Unisys Corporation), Программирование для UNIVAC (R) I и II, Системы автоматизации данных, авторское право 1958, 1959, Unisys Corporation; IBM Commercial Translator Form No. F28-8013, авторское право 1959 IBM; FACT, DSI 27A5260-2760, авторское право 1960 Minneapolis-Honeywell.

Они специально разрешили использование этого материала. Полностью или частично. В спецификациях COBOL. Такое разрешение распространяется на воспроизведение и использование спецификаций COBOL в руководствах по программированию или аналогичных публикациях.[69]

От COBOL-61 до COBOL-65

Весьма маловероятно. Что Кобол появится к концу десятилетия.

Аноним, июнь 1960года [70]

В COBOL 60 было обнаружено много логических недостатков , что привело к тому. Что Чарльз Кац из GE предупредил. Что его нельзя интерпретировать однозначно. Неохотный краткосрочный комитет провел полную очистку. И к марту 1963 года было сообщено. Что синтаксис КОБОЛА был так же определим. Как и АЛГОЛЬ, хотя семантические неясности остались.

Ранние компиляторы COBOL были примитивными и медленными. Оценка ВМС США в 1962 году показала. Что скорость компиляции составляет 3-11 заявлений в минуту. К середине 1964 года они выросли до 11-1000 заявлений в минуту. Было замечено. Что увеличение памяти резко увеличит скорость и что затраты на компиляцию сильно варьируются: затраты на один оператор составляют от 0,23 до 18,91 доллара

В конце 1962 года IBM объявила. Что COBOL станет их основным языком разработки и что разработка COMTRAN прекратится.

Спецификация COBOL пересматривалась трижды в течение пяти лет после ее публикации. COBOL-60 был заменен в 1961 году COBOL-61. Затем он был заменен расширенными спецификациями COBOL-61 в 1963 году. Которые ввели средства сортировки и записи отчетов. Добавленные средства исправили недостатки. Выявленные Honeywell в конце 1959 года в письме комитету по ближнему радиусу действия. Издание COBOL 1965 года внесло дополнительные уточнения в спецификации и ввело средства для обработки файлов и таблиц массового хранения.

COBOL-68

Начались усилия по стандартизации COBOL для преодоления несовместимости между версиями. В конце 1962 года ИСО и Институт стандартов Соединенных Штатов Америки (ныне АНСИ) сформировали группы по разработке стандартов. ANSI выпустила американский стандарт COBOL X3.23 в августе 1968 года. Который стал краеугольным камнем для более поздних версий.Эта версия была известна как Американский национальный стандарт (ANS) COBOL и была принята ISO в 1972 году.]

COBOL-74

К 1970 году COBOL стал самым широко используемым языком программирования в мире.

Независимо от комитета ANSI. Комитет по языку программирования CODASYL работал над улучшением языка. Они описали новые версии в 1968, 1969, 1970 и 1973 годах. Включая такие изменения. Как новые средства межпрограммной связи. Отладки и слияния файлов. А также улучшенные функции обработки строк и включения библиотек. Хотя CODASYL был независим от комитета ANSI. Журнал CODASYL Journal of Development использовался ANSI для выявления функций. Которые были достаточно популярны. Чтобы оправдать их внедрение. Комитет по языку программирования также поддерживал связь с ECMA и японский комитет по стандартам COBOL.

Однако Комитет по языку программирования не был широко известен. Вице-президент Уильям Райнхулс жаловался. Что две трети сообщества КОБОЛОВ не знают о существовании комитета. Он также был беден. Не имея средств для того. Чтобы сделать общедоступными такие документы. Как протоколы заседаний и предложения об изменениях. Свободно доступными.[79]

В 1974 году ANSI опубликовала пересмотренную версию (ANS) COBOL. Содержащую новые функции. Такие как организация файлов, DELETEоператор[80] и модуль сегментации. Удаленные функции включали NOTEоператор, EXAMINEоператор (который был заменен INSPECT) и модуль произвольного доступа. Определенный исполнителем (который был заменен новыми последовательными и относительными модулями ввода-вывода). Они составили 44 изменения. Которые сделали существующие утверждения несовместимыми с новым стандартом. Планировалось. Что автор отчета будет удален из COBOL. Но был восстановлен до того. Как стандарт был опубликован.[83][84] Позже ИСО приняла обновленный стандарт в 1978 году[75]

COBOL-85

В июне 1978 года начались работы по доработке КОБОЛА-74. Предлагаемый стандарт (обычно называемый COBOL-80) значительно отличался от предыдущего. Вызывая опасения по поводу несовместимости и затрат на конверсию. В январе 1981 года Джозеф Т. Брофи. Старший вице-президент компании Travelers Insurance. Пригрозил подать в суд на комитет по стандартизации за то. Что он не был полностью совместим с COBOL-74. [85] Позже в том же году Ассоциация управления обработкой данных (DPMA) сказал. Что он был ]

В течение первого периода общественного обзора комитет получил 2200 ответов. Из которых 1700 были письмами отрицательной формы.[88] Другие ответы были подробными анализами воздействия COBOL-80 на их системы; затраты на конвертацию. По прогнозам. Составят не менее 50 центов за строку кода. Меньше десятка ответов были в пользу предлагаемого стандартного.[89]

ISO TC97-SC5 был установлен в 1979 году международной группой экспертов COBOL Experts Group по инициативе Вима Эббинкхейсена. Группа состояла из экспертов COBOL из многих стран. Включая Соединенные Штаты. Его целью было достижение взаимопонимания и уважения между ANSI и остальным миром в отношении необходимости новых функций COBOL. Через три года ИСО изменила статус группы на официальную рабочую группу: WG 4 COBOL. Группа взяла на себя основную ответственность и разработку стандарта COBOL. Где ANSI сделала большую часть предложений.

В 1983 году ДПМА отозвала свое возражение против стандарта. Сославшись на отзывчивость комитета к общественным проблемам. В том же году исследование Национального бюро стандартов пришло к выводу. Что предлагаемый стандарт будет представлять мало проблем.[87][90] Год спустя компилятор COBOL-80 был выпущен для пользователей DEC VAX. Которые отметили. Что преобразование программ COBOL-74 представляет мало проблем. Новый EVALUATEоператор и inline PERFORMбыли особенно хорошо приняты и повысили производительность благодаря упрощенному потоку управления и отладке.]

Второй публичный обзор вызвал еще 1000 (в основном отрицательных) откликов, в то время как последний-всего 25, и к этому времени многие проблемы были решены.[87]

В 1985 году Рабочая группа ИСО 4 приняла тогдашнюю версию предлагаемого стандарта ANSI. Внесла несколько изменений и установила его в качестве нового стандарта ИСО COBOL 85. Она была опубликована в конце 1985 года.

Шестьдесят функций были изменены или устарели. И многие[количественно] были добавлены. Такие как:[93]

  • Терминаторы области (END-IF, END-PERFORM, END-READ, и т.д.)
  • Вложенные подпрограммы
  • CONTINUE, заявление об отсутствии операции
  • EVALUATE, оператор switch
  • INITIALIZE, оператор. Который может установить группам данных значения по умолчанию
  • Встроенные PERFORMтела циклов – ранее тела циклов должны были быть указаны в отдельной процедуре
  • Модификация ссылки. Которая позволяет получить доступ к подстрокам
  • Коды состояния ввода-вывода.

Новый стандарт был принят всеми органами национального стандарта. В том числе ANSI.[75]

В 1989 и 1993 годах последовали две поправки. Первая из которых вводила внутренние функции. А вторая вносила исправления.[75]

КОБОЛ 2002 года и объектно-ориентированного КОБОЛ

В 1997 году Gartner Group подсчитала. Что существует в общей сложности 200 миллиардов линий COBOL. На которые приходится 80% всех бизнес-программ.[94][требуется лучший источник]

В начале 1990-х годов началась работа по добавлению объектной ориентации в следующую полную редакцию COBOL. Объектно-ориентированные функции были взяты из C++ и Smalltalk. Первоначальная смета предусматривала завершение этого пересмотра к 1997 году. И к 1997 году был подготовлен проект Комитета ИСО (КД). Некоторые поставщики (включая Micro Focus, Fujitsuи IBM) ввели объектно-ориентированный синтаксис . Основанный на черновиках полной редакции. Окончательный утвержденный стандарт ИСО был утвержден и опубликован в конце 2002 года[95].]

Fujitsu/GTSoftware,[96] Micro Focus и RainCode представили объектно-ориентированные компиляторы COBOL. Ориентированные на .NET Framework.

Было много других новых функций. Многие из которых были опубликованы в журнале CODASYL COBOL Journal of Development с 1978 года и упустили возможность быть включенными в COBOL-85.

Для стандарта было опубликовано три исправления: два в 2006 году и одно в 2009 году[100].]

COBOL 2014

В период с 2003 по 2009 год было подготовлено три технических отчета. Описывающих доработку объектов, обработку XML и классы сбора данных для COBOL.]

COBOL 2002 страдал от плохой поддержки: ни один компилятор полностью не поддерживал стандарт. Micro Focus обнаружил. Что это произошло из-за отсутствия спроса пользователей на новые функции и из-за отмены набора тестов NIST. Который использовался для проверки соответствия компилятора. Было также установлено. Что процесс стандартизации протекает медленно и не обеспечен достаточными ресурсами.[101]

COBOL 2014 включает в себя следующие изменения:

  • Переносимые арифметические результаты были заменены типами данных IEEE 754
  • Основные функции были сделаны необязательными. Такие как VALIDATEсредство. Средство записи отчетов и средство обработки экрана
  • Способ перегрузки
  • Динамические таблицы емкости (функция. Исключенная из проекта COBOL 2002)[103]

Наследие

Программы COBOL используются во всем мире в правительствах и компаниях и работают на различных операционных системах . Таких как z/OS, z/VSE, VME, Unix, OpenVMS и Windows. В 1997 году Группа Gartner сообщила. Что 80% мирового бизнеса работает на COBOL с более чем 200 миллиардами строк кода и еще 5 миллиардов строк пишется ежегодно.[104]

Ближе к концу 20-го века проблема 2000 года (Y2K) была в центре значительных усилий по программированию COBOL. Иногда теми же программистами. Которые разрабатывали системы десятилетиями ранее. Особый уровень усилий. Необходимых для исправления кода COBOL. Был приписан[кем?] к большому количеству бизнес-ориентированных COBOL. Поскольку бизнес-приложения сильно используют даты. А также к полям данных фиксированной длины. После усилий по очистке этих программ для Y2K опрос 2003 года показал. Что многие из них остались в использовании. Авторы заявили. Что данные опроса свидетельствуют о интеграция с другими языками и технологиями может быть принята

В 2006 и 2012 годах опросы Computerworld показали. Что более 60% организаций использовали COBOL (больше. Чем C++ и Visual Basic .NET) и что для половины из них COBOL использовался для большинства их внутреннего программного обеспечения.36% менеджеров заявили. Что планируют мигрировать с COBOL. А 25% сказали. Что хотели бы это сделать. Если бы это было дешевле. Вместо этого некоторые компании перенесли свои системы с дорогих мэйнфреймов на более дешевые. Более современные системы. Сохранив при этом свои программы COBOL.[9]

Показания перед Палатой представителей в 2016 году показали. Что COBOL все еще используется многими федеральными агентствами.[108]Reuters сообщило в 2017 году. Что 43% банковских систем по-прежнему используют COBOL с более чем 220 миллиардами строк кода COBOL.[109]

К 2019 году число программистов COBOL быстро сокращалось из-за выхода на пенсию. Что привело к надвигающемуся разрыву навыков в деловых и правительственных организациях. Которые все еще используют мэйнфреймы для обработки больших объемов транзакций. Усилия по переписыванию систем на более новых языках оказались дорогостоящими и проблематичными. Как и аутсорсинг обслуживания кода. Поэтому выдвигаются предложения по обучению большего числа людей в COBOL.[110]

Во время пандемии COVID-19 и последовавшего за ней всплеска безработицы несколько штатов США сообщили о нехватке квалифицированных программистов COBOL для поддержки устаревших систем. Используемых для управления пособиями по безработице. Многие из этих систем до пандемии находились в процессе перехода на более современные языки программирования. Но этот процесс пришлось приостановить.Точно так же Служба внутренних доходов США поспешила залатать свой Индивидуальный мастер-файл на основе COBOL. Чтобы выплатить десятки миллионов платежей. Предусмотренных Законом о помощи коронавирусу. Помощи и экономической безопасности.]

Синтаксис

COBOL имеет похожий на английский синтаксис. Который используется для описания почти всего в программе. Например, условие может быть выражено как x IS GREATER THAN yили, более кратко. Как x GREATER yили x > y. Более сложные условия могут быть Например, a > b AND a > c OR a = dможет быть сокращено до a > b AND c OR = d. Для поддержки этой английского языка-синтаксис. КОБОЛ более 300 ключевые слова.[С] некоторые слова являются простой альтернативой или множественных вариантов написания одного и того же слова. Которое предусматривает более английский заявления и предложения; например, IN и OF ключевые слова могут быть взаимозаменяемы. Как можете IS и ARE, И VALUE , и VALUES.

Каждая программа COBOL состоит из четырех основных лексических элементов: слов, литералов. Графических символьных строк (см. § PICTURE clause) и разделителей. Слова включают зарезервированные слова и определяемые пользователем идентификаторы. Они имеют длину до 31 символа и могут включать буквы, цифры. Дефисы и подчеркивания. Литералы включают цифры (например 12) и строки (например 'Hello!'). Разделители включают пробел. Запятые и точки с запятой. За которыми следует пробел.

Программа COBOL делится на четыре отдела: отдел идентификации. Отдел окружающей среды. Отдел данных и отдел процедур. Подразделение идентификации определяет имя и тип исходного элемента. А также определяет классы и интерфейсы. Подразделение окружения определяет любые функции программы. Зависящие от системы. В которой она запущена. Такие как файлы и наборы символов. Данные используются для объявления переменных и параметров. Процедурный отдел содержит инструкции программы Каждый раздел подразделяется на разделы. Которые состоят из параграфов.

Метаязык

Синтаксис COBOL обычно описывается уникальным метаязыком с использованием скобок, скобок. Полос и подчеркивания. Метаязык был разработан для оригинальных спецификаций COBOL. Хотя форма Бэкуса–Наура действительно существовала в то время. Комитет о ней не слышал

Элементы метаязыка КОБОЛЯ
Элемент Внешность Функция
Все столицы ПРИМЕР Зарезервированное слово
Подчеркивание ПРИМЕР Зарезервированное слово является обязательным
Фигурные скобки { } Можно выбрать только один вариант
Скобки [] Можно выбрать ноль или один вариант
Эллипс Предыдущий элемент может быть повторен
Брусья {| |} Можно выбрать один или несколько вариантов. Любая опция может быть выбрана только один раз.
[| |] Можно выбрать ноль или более опций. Любая опция может быть выбрана только один раз.

В качестве примера рассмотрим следующее описание ADDоператора:

ADD_{identifier-1literal-1}TO_{identifier-2[ROUNDED_]}[|ONSIZE_ERROR_imperative-statement-1NOT_ONSIZE_ERROR_imperative-statement-2|][END-ADD_]{\displaystyle {\begin{array}{l}{\underline {\text{ADD}}}\,{\begin{Bmatrix}{\text{identifier-1}}\\{\text{literal-1}}\end{Bmatrix}}\dots \;{\underline {\text{TO}}}\,\left\{{\text{identifier-2}}\,\left[\,{\underline {\text{ROUNDED}}}\,\right]\right\}\dots \\\quad \left[\left|{\begin{array}{l}{\text{ON}}\,{\underline {\text{SIZE}}}\,{\underline {\text{ERROR}}}\,{\text{imperative-statement-1}}\\{\underline {\text{NOT}}}\,{\text{ON}}\,{\underline {\text{SIZE}}}\,{\underline {\text{ERROR}}}\,{\text{imperative-statement-2}}\\\end{array}}\right|\right]\\\quad \left[\,{\underline {\text{END-ADD}}}\,\right]\end{array}}}

Это описание допускает следующие варианты:

ADD 1 TO x ADD 1, a, b TO x ROUNDED, y, z ROUNDED ADD a, b TO c ON SIZE ERROR   DISPLAY  END-ADD ADD a TO b NOT SIZE ERROR   DISPLAY  ON SIZE ERROR   DISPLAY  

Формат кода

COBOL может быть написан в двух форматах: фиксированном (по умолчанию) или свободном. В фиксированном формате код должен быть выровнен. Чтобы соответствовать определенным областям (удержание от использования перфокарт). До COBOL 2002 года это были:

Имя Колонка(ы) Использование
Область порядкового номера 1–6 Первоначально используемая для номеров карт/строк (облегчающая механическую сортировку перфокарт для обеспечения заданной последовательности программного кода после ручного редактирования/обработки), эта область игнорируется компилятором
Область индикатора 7 Здесь разрешены следующие символы:

  • * – Строка комментария
  • / – Строка комментария, которая будет напечатана на новой странице исходного списка
  • - – Строка продолжения, где слова или литералы из предыдущей строки продолжаются
  • D – Строка включена в режиме отладки, который в противном случае игнорируется
Зона А 8–11 Он содержит: DIVISION, SECTIONи заголовки процедур; номера уровней 01 и 77 и дескрипторы файлов/отчетов
Зона В 12–72 Любой другой код не разрешен в зоне А
Область имени программы 73– Исторически до столбца 80 для перфокарт он используется для идентификации программы или последовательности, к которой принадлежит карта

В COBOL 2002 области A и B были объединены. Чтобы сформировать область текста программы. Которая теперь заканчивается столбцом. Определенным разработчиком.

COBOL 2002 также ввел код свободного формата. Код свободного формата может быть помещен в любой столбец файла. Как и в более новых языках программирования. Комментарии задаются с помощью *>, которые могут быть размещены в любом месте. А также могут быть использованы в исходном коде фиксированного формата. Линии продолжения отсутствуют, и >>PAGEдиректива заменяет /индикатор.

Идентификационный отдел

Подразделение идентификации идентифицирует следующую сущность кода и содержит определение класса или интерфейса.

Объектно-ориентированное программирование

Классы и интерфейсы существуют в COBOL с 2002 года. Классы имеют объекты фабрики. Содержащие методы и переменные класса. И объекты экземпляра. Содержащие методы и переменные экземпляра. Наследование и интерфейсы обеспечивают полиморфизм. Поддержка универсального программирования обеспечивается с помощью параметризованных классов. Которые могут быть созданы для использования любого класса или интерфейса. Объекты хранятся в виде ссылок. Которые могут быть ограничены определенным типом. Существует два способа вызова метода: INVOKEоператор. Который действует аналогично CALL, или через вызов встроенного метода. Который аналогичен использованию функций.

*> Они эквивалентны.> INVOKE my-class "foo" RETURNING var MOVE my-class::"foo" TO var *> Inline method invocation 

COBOL не предоставляет способа скрыть методы. Однако данные класса могут быть скрыты. Объявив их без PROPERTYпредложения. Что не оставляет пользователю возможности получить к ним доступ.Перегрузка метода была добавлена в COBOL 2014.

Отдел окружающей среды

Раздел среды содержит раздел конфигурации и раздел ввода-вывода. Раздел конфигурации используется для указания переменных функций. Таких как знаки валют. Локали и наборы символов. Раздел ввода-вывода содержит информацию. Связанную с файлами.

Файлы

COBOL поддерживает три формата файлов. Или организации: последовательный. Индексированный и относительный. В последовательных файлах записи являются непрерывными и должны проходить последовательно, подобно связанному списку. Индексированные файлы имеют один или несколько индексов. Которые позволяют осуществлять случайный доступ к записям и которые могут быть отсортированы по ним. Каждая запись должна иметь уникальный ключ, но другие, альтернативныеключи записи не обязательно должны быть уникальными. Реализации индексированных файлов различаются между поставщиками. Хотя общие реализации. Такие как C‑ISAM и VSAM, основаны на ISAM IBM Относительные файлы. Как и индексированные файлы. Имеют уникальный ключ записи. Но у них нет альтернативных ключей. Ключ относительной записи-это ее порядковое положение; например, 10-я запись имеет ключ 10. Это означает. Что создание записи с ключом 5 может потребовать создания (пустых) предыдущих записей. Относительные файлы также допускают как последовательный. Так и произвольный доступ.

Распространенным нестандартным расширением является линейная последовательная организация. Используемая для обработки текстовых файлов. Записи в файле заканчиваются новой строкой и могут иметь различную длину.[124]

Отдел данных

Раздел данных разделен на шесть разделов. В которых объявляются различные элементы: раздел файла для записей файлов; раздел рабочего хранилища для статических переменных; раздел локального хранилища для автоматических переменных; раздел связи для параметров и возвращаемого значения; раздел отчета и раздел экрана для текстовых пользовательских интерфейсов.

Агрегированные данные

Элементы данных в COBOL объявляются иерархически с помощью номеров уровней. Которые указывают. Является ли элемент данных частью другого. Элемент с более высоким номером уровня подчинен элементу с более низким. Элементы данных верхнего уровня с номером уровня 1 называются записями. Элементы, которые имеют подчиненные агрегированные данные. Называются элементами группы; те. Которые не имеют. Называются элементарными элементами. Номера уровней. Используемые для описания стандартных элементов данных. Находятся в диапазоне от 1 до 49.

  01 some-record.    05 num PIC 9(10).    05 the-date.    10 the-year PIC 9(4).    10 the-month PIC 99.    10 the-day PIC 99.  

В приведенном выше примере элементарный элемент numи групповой элемент the-dateподчинены записиsome-record, в то время как элементарные элементыthe-year,the-month, и the-dayявляются частью группового элемента the-date.

Подчиненные элементы могут быть разгаданы с INпомощью ключевого слова (or OF). Например, рассмотрим приведенный выше пример кода вместе со следующим примером:

  01 дата продажи.   05 год РИС. 9(4).   05 месяц РИС. 99.   05 день РИС. 99. 

Имена the-year, the-month, и the-dayсами по себе неоднозначны. Поскольку с этими именами определяется более одного элемента данных. Чтобы указать конкретный элемент данных. Например один из элементов. Содержащихся в sale-dateгруппе. Программист будет использовать the-year IN sale-date(или эквивалент the-year OF sale-date). (Этот синтаксис похож на

Другие уровни данных

Номер уровня 66 используется для объявления перегруппировки ранее определенных элементов. Независимо от того. Как эти элементы структурированы. Этот уровень данных. Также упоминаемый в соответствующем RENAMESпредложении, редко используется[127] и, примерно в 1988 году. Обычно встречается в старых программах. Его способность игнорировать данные иерархической и логической структуры означала. Что его использование не рекомендовалось. И многие установки запрещали его использование.

  01 клиентов-запись.   05 каст-ключевой ПОС х(10).   05 каст-имя.   10 чер-во-первых-название ПОС х(30).   10 чер-фамилия ПОС х(30).   05 каст-доб рис. 9(8).   05 каст-баланс ПОС, 9(7)В99.     66 потребитель-персонал-детали переименовывает каст имя- через каст-доб.   66 каст-все подробности переименовывает каст имя- через каст-баланс. 

Номер уровня 77 указывает на то. Что предмет является автономным. И в таких ситуациях эквивалентен номеру уровня 01. Например, следующий код объявляет два элемента данных 77-го уровня property-nameиsales-region, которые являются негрупповыми элементами данных . Независимыми (не подчиненными) от каких-либо других элементов данных:

  77 property-name PIC X(80).   77 sales-region PIC 9(5). 

88-уровневый номер объявляет имя условия (так называемый 88-уровневый). Которое является истинным. Когда его родительский элемент данных содержит одно из значений. Указанных в его VALUEпредложении. Например, следующий код определяет два 88-уровневых элемента имени условия. Которые являются истинными или ложными в зависимости от текущего значения символьных wage-typeданных элемента данных. Если элемент данных содержит значение 'H', то имя условия wage-is-hourlyистинно. Тогда как если он содержит значение 'S'или 'Y', то имя условия wage-is-yearlyистинно. Если элемент данных содержит какое-либо другое значение. Оба имени условия являются ложными.

  01  РИС.   88 заработная плата-часовое ЗНАЧЕНИЕ "H".   88 заработная плата-годовое ЗНАЧЕНИЕ "S", "Y". 

Типы данных

Стандартный COBOL предоставляет следующие типы данных:

Тип данных Пример декларации Примечания
Алфавитный PIC A(30) Может содержать только буквы или пробелы
Буквенно-цифровой PIC X(30) Может содержать любые символы
Логический PIC 1 USAGE BIT Данные хранятся в виде 0s и 1s, как двоичное число
Указатель USAGE INDEX Используется для ссылки на элементы таблицы
Национальный PIC N(30) Аналогично буквенно-цифровому, но с использованием расширенного набора символов, например UTF-8
Числовой PIC 9(5)V9(5) Может содержать только цифры
Объект USAGE OBJECT REFERENCE Может ссылаться либо на объект, либо на NULL
Указатель USAGE POINTER

Тип безопасности является переменным в COBOL. Числовые данные преобразуются между различными представлениями и размерами молча. А буквенно-цифровые данные могут быть помещены в любой элемент данных. Который может быть сохранен в виде строки. Включая числовые и групповые данные.

PICTURE clause

Предложение PICTURE(илиPIC) — это строка символов. Каждый из которых представляет часть элемента данных и то. Что он может содержать. Некоторые символы изображения указывают тип элемента и количество символов или цифр. Которые он занимает в памяти. Например, a 9указывает на десятичную цифру. А an Sуказывает. Что элемент подписан. Другие символы изображения (называемые символами вставки и редактирования) указывают. Как должен быть отформатирован элемент. Например, ряд + символы определяют позиции символов, а также то. Как символ ведущего знака должен быть расположен в конечных символьных данных; самый правый нечисловой символ будет содержать знак элемента. В то время как другие позиции символов. Соответствующие a +слева от этой позиции. Будут содержать пробел. Повторяющиеся символы можно указать более кратко, указав число в скобках после символа изображения; например, 9(7)эквивалентно 9999999. Спецификации изображений. Содержащие только символы цифр (9) и знаков (S), определяют чисто числовые значения элементы данных. В то время как спецификации изображений. Содержащие буквенные (A) или буквенно-цифровые (X) символы. Определяют буквенно-цифровые элементы данных. Наличие других символов форматирования определяет редактируемые числовые или редактируемые буквенно-цифровые элементы данных.

Примеры
PICTURE пункт Значение в Значение вне
PIC 9(5) 100 00100
"Hello" "Hello" (это законно, но приводит к неопределенному поведению)
PIC +++++ -10 "  -10" (обратите внимание на ведущие пробелы)
PIC 99/99/9(4) 31042003 "31/04/2003"
PIC *(4)9.99 100.50 "**100.50"
0 "****0.00"
PIC X(3)BX(3)BX(3) "ABCDEFGHI" "ABC DEF GHI"
Предложение ОБ ИСПОЛЬЗОВАНИИ
Wiki letter w.svg
В этом разделе отсутствует информация о ВЫЧИСЛИТЕЛЬНОМ-5. Пожалуйста, расширьте раздел, чтобы включить эту информацию. Более подробная информация может быть представлена на странице обсуждения (апрель 2021 года)

USAGEПредложение объявляет формат. В котором хранятся данные. В зависимости от типа данных он может либо дополнять PICTUREпредложение. Либо использоваться вместо него. Хотя его можно использовать для объявления указателей и ссылок на объекты. Он в основном ориентирован на указание числовых типов. Эти числовые форматы:

  • Двоичный, где минимальный размер задается либо PICTUREпредложением. Либо USAGEпредложением типа BINARY-LONG.
  • USAGE COMPUTATIONAL, где данные могут храниться в любом формате. Который предоставляет реализация; часто эквивалентно USAGE BINARY
  • USAGE DISPLAY, формат по умолчанию. Где данные хранятся в виде строки
  • С плавающей запятой. Либо в формате. Зависящем от реализации. Либо в соответствии с IEEE 754.
  • USAGE NATIONAL, где данные хранятся в виде строки с использованием расширенного набора символов
  • USAGE PACKED-DECIMAL, где данные хранятся в минимально возможном десятичном формате (обычно упакованном двоично-десятичном)

Автор отчетов

Автор отчетов-это декларативное средство для создания отчетов. Программисту достаточно лишь указать макет отчета и данные. Необходимые для его создания. Что освобождает его от необходимости писать код для обработки таких вещей. Как разрывы страниц. Форматирование данных. Заголовки и нижние колонтитулы.

Отчеты связаны с файлами отчетов. Которые могут быть записаны только с помощью операторов записи отчетов.

  FD  report-out REPORT sales-отчет. 

Каждый отчет определяется в разделе отчета отдела данных. Отчет разбивается на группы отчетов. Которые определяют заголовки. Подложки и детали отчета. Отчеты работают в обход иерархических разрывов управления. Контрольные разрывы возникают. Когда ключевая переменная изменяет свое значение; например. При создании отчета с подробным описанием заказов клиентов контрольный разрыв может произойти. Когда программа достигает заказов другого клиента. Вот пример описания отчета для отчета. Который дает продажи продавца и который предупреждает о любых недопустимых записях:

  РД  продаж-доклад   странице пределах 60 линий   сначала деталь 3  регулирование продавец-имя.   01 ТИП СТРАНИЦУ РУБРИКИ.   03 коль 1 значение .   03 коль 74 значение .   03 коль 79 рис Z9 источник страницы-счетчик.   01 продаж-на-День тип деталь, строки + 1.   03 столбец 3 Значение .   03 коль 12 рис 99/99/9999 источник продаж-дата.   03 коль 21 значение .   03 коль 26 ПОС $$$$9.99 источник продаж-сумма.   01 инвалид-продаж типа деталь, строки + 1.   03 СТОЛБЕЦ 3 ЗНАЧЕНИЕ .   03 КОЛЬ 19 ПОС Х(34) ИСХОДНЫЙ sales-record.   01 TYPE CONTROL HEADING seller-name, LINE + 2.   03 COL 1 VALUE .   03 COL 9 PIC X(30) SOURCE seller-name. 

Приведенное выше описание отчета описывает следующий макет:

Отчет о продажах Страница 1 Продавец: Говард Бромберг Продажи 10/12/2008 года составили $1000.00 Продажи 12/12/2008 года составили $0,00 Продажи 13/12/2008 года составили $31,47 НЕДЕЙСТВИТЕЛЬНАЯ ЗАПИСЬ: Говард Бромберг XXXXYY Продавец: Говард Дисконт ... Отчет о продажах Страница 12 Продажи на 08/05/2014 составили $543,98 НЕДЕЙСТВИТЕЛЬНАЯ ЗАПИСЬ: Уильям Селден 12O52014FOOFOO Продажи на 30/05/2014 составили $0.00 

Четыре оператора управляют модулем записи отчетов: INITIATE, который подготавливает модуль записи отчетов к печати; GENERATE, который печатает группу отчетов; SUPPRESS, который подавляет печать группы отчетов; и TERMINATE, который завершает обработку отчета. В приведенном выше примере отчета о продажах подразделение процедур может выглядеть следующим образом:

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

Использование средства записи отчетов. Как правило. Значительно варьировалось; некоторые организации использовали его широко. А некоторые вообще не использовали. Кроме того, реализации средства записи отчетов варьировались по качеству, причем те. Что находились на нижнем конце. Иногда использовали чрезмерный объем памяти во время выполнения.

Процедурный отдел

Процедуры

Разделы и параграфы в разделе процедур (совместно называемые процедурами) могут использоваться как метки и как простые подпрограммы. В отличие от других разделов. Параграфы не обязательно должны быть разделены на разделы. Выполнение проходит через процедуры программы до тех пор. Пока она не будет завершена. Для использования процедур в качестве подпрограмм PERFORMиспользуется глагол.

PERFORMОператор несколько напоминает вызов процедуры на современном языке в том смысле. Что выполнение возвращается в код после PERFORMоператора в конце вызываемого кода; однако он не предоставляет никакого механизма для передачи параметров или для возврата результирующего значения. Если подпрограмма вызывается с помощью простого оператора like PERFORM subroutine, то управление возвращается в конце вызываемой процедуры. Однако PERFORMнеобычно. Что он может быть использован для вызова диапазона. Охватывающего последовательность нескольких смежных процедур. Это делается с PERFORM sub-1 THRU sub-nпомощью конструкции:

ПРОЦЕДУРА so-and-so. PERFORM ALPHA PERFORM ALPHA THRU GAMMA STOP RUN. ALPHA. DISPLAY 'A'. BETA. DISPLAY 'B'. GAMMA. DISPLAY 'C'. 

Результатом этой программы будет:

PERFORM также отличается от обычных вызовов процедур тем. Что нет. По крайней мере традиционно. Понятия стека вызовов. Как следствие. Вложенные вызовы возможны (последовательность редактируемого кода PERFORMможет выполнять PERFORMсам оператор). Но требуют дополнительной осторожности. Если части одного и того же кода выполняются обоими вызовами. Проблема возникает. Когда код внутреннего вызова достигает точки выхода внешнего вызова. Более формально. Если контроль проходит через точку выхода PERFORM вызов. Который был вызван ранее. Но еще не завершен. Стандарт COBOL 2002 официально оговаривает. Что это поведение не определено.

Причина в том, что COBOL. А не Когда поток управления достигает конца любой процедуры. Адрес продолжения ищется и управление передается на этот адрес. Перед запуском программы адрес продолжения для каждой процедуры инициализируется начальным адресом процедуры. Следующей в тексте программы, так что. Если никаких PERFORMинструкций не происходит. Управление потоками сверху вниз через программу. Но когда PERFORM оператор выполняется. Он изменяет адрес продолжения вызываемой процедуры (или последнюю процедуру вызываемого диапазона. Если PERFORM THRUона была использована). Так что управление вернется на сайт вызова в конце. Исходное значение сохраняется и восстанавливается впоследствии. Но существует только одна позиция хранения. Если два вложенных вызова работают с перекрывающимся кодом. Они могут вмешиваться в управление адресом продолжения друг друга несколькими способами.[139][140]

Следующий пример (взятый из Veerman & Verhoeven 2006) иллюстрирует эту проблему:

LABEL1. DISPLAY '1' PERFORM LABEL2 THRU LABEL3 STOP RUN. LABEL2. DISPLAY '2' PERFORM LABEL3 THRU LABEL4. LABEL3. DISPLAY '3'. LABEL4. DISPLAY '4'. 

Можно было бы ожидать. Что выход этой программы будет PERFORMвызов вызывает отображение В традиционных реализациях COBOL это не так. Скорее, первый PERFORMоператор устанавливает адрес продолжения в конце LABEL3так, чтобы он перескочил обратно на сайт вызова внутри LABEL1. Второй PERFORMоператор устанавливает возврат в конце LABEL4, но не изменяет адрес продолженияLABEL3, ожидая. Что это будет продолжение по умолчанию. Таким образом, когда внутренний призыв приходит в конце LABEL3, он возвращается к внешнему PERFORMоператору. И программа перестает печатать только С другой стороны. В некоторых реализациях COBOL. Таких как компилятор TinyCOBOL с открытым исходным кодом. Эти два PERFORMоператора не мешают друг другу. И выход действительно Поэтому поведение в таких случаях не только (возможно) удивительно. Но и непереносимо.[140]

Особым следствием этого ограничения является то. Что PERFORMего нельзя использовать для написания рекурсивного кода. Еще один простой пример. Иллюстрирующий это (немного упрощенный из Veerman & Verhoeven 2006):

 MOVE 1 TO A PERFORM LABEL   STOP RUN. LABEL. DISPLAY A IF A  3  ADD 1 TO A PERFORM LABEL   END-IF   DISPLAY 'END'. 

Можно было бы ожидать. Что выход будет Но некоторые компиляторы. Такие как IBM COBOL. Будут производить код. Который печатает Поскольку существует ограниченное пространство для хранения адресов продолжения резервного копирования. Резервные копии перезаписываются в ходе рекурсивных вызовов, и все. Что может быть восстановлено. — это прыжок назадDISPLAY 'END'.]

Заявления

COBOL 2014 содержит 47 операторов (также называемых глаголами), которые можно сгруппировать в следующие широкие категории: поток управления, ввод-вывод. Манипулирование данными и автор отчетов. Инструкции составителя отчетов рассматриваются в разделе составитель отчетов.

Поток управления

Условные операторы КОБОЛА-это IFи EVALUATE. EVALUATE это оператор типа switch с дополнительной возможностью вычисления нескольких значений и условий. Это может быть использовано для реализации таблиц решений. Например, для управления токарным станком с ЧПУ может использоваться следующее:

Оценить истинную также желаемой скорости и текущей скорости , когда крышка закрыта и мин-скорость через максимум-скорость еще меньше , чем желаемая скорость выполнения ускорения машины , когда крышка закрыта и мин-скорость через максимум скорости также больше , чем желаемой скорости , выполнять торможение-машину для крышки открыты также любые тоже не ноль   проанализировать аварийной остановки , когда другие   продолжают конце-оценивать 

PERFORMОператор используется для определения циклов. Которые выполняются до тех пор. Пока условие не станет истинным (а не while true. Что более распространено в других языках). Он также используется для вызова процедур или диапазонов процедур (более подробную информацию см. в разделе процедуры). CALL и INVOKEвызывать подпрограммы и методы соответственно. Имя подпрограммы/метода содержится в строке . Которая может быть литералом или элементом данных. Параметры могут передаваться по ссылке, по содержимому (где копия передается по ссылке) или по значению (но только при наличии прототипа).CANCEL выгружает подпрограммы из памяти. GO TO вызывает переход программы к указанной процедуре.

GOBACKОператор является оператором возвратаSTOP, и оператор останавливает программу. EXITОператор имеет шесть различных форматов: он может использоваться как оператор return. Оператор break, оператор continue, маркер end или для выхода из процедуры.

Исключения вызываются RAISEоператором и перехватываются обработчиком. Или декларативным, определенным в DECLARATIVESчасти разделения процедур. Декларативы-это разделы. Начинающиеся с USEоператора. Который определяет ошибки для обработки. Исключениями могут быть имена или объекты. RESUME используется в декларативе для перехода к оператору после того. Который вызвал исключение. Или к процедуре вне DECLARATIVESего . В отличие от других языков. Неперехваченные исключения не могут завершить программу. И программа может продолжать работу без изменений.

Ввод-вывод

Файловый ввод-вывод обрабатывается операторами самоописания OPEN, CLOSE, READ, и WRITEвместе с еще тремя: REWRITE, который обновляет запись; START, который выбирает последующие записи для доступа . Находя запись с определенным ключом; иUNLOCK, который освобождает блокировку на последней записи. К которой обращались.

Взаимодействие с пользователем осуществляется ACCEPTс помощью DISPLAYи.

Манипулирование данными

Следующие команды управляют данными:

  • INITIALIZE, который устанавливает элементы данных в их значения по умолчанию.
  • MOVE, который присваивает значения элементам данных ; MOVE CORRESPONDING присваивает соответствующие одноименные поля.
  • SET, который имеет 15 форматов: он может изменять индексы. Назначать ссылки на объекты и изменять емкость таблиц. А также другие функции.
  • ADD, SUBTRACT, MULTIPLY,DIVIDE, и COMPUTE, которые обрабатывают арифметику (с COMPUTEприсвоением результата формулы переменной).
  • ALLOCATE и FREE, которые обрабатывают динамическую память.
  • VALIDATE, который проверяет и распределяет данные в соответствии с описанием элемента в разделе данных.
  • STRING и UNSTRING, которые объединяют и разделяют строкисоответственно.
  • INSPECT, который подсчитывает или заменяет экземпляры указанных подстрок внутри строки.
  • SEARCH, который ищет в таблице первую запись. Удовлетворяющую условию.

Файлы и таблицы сортируются с помощью SORTMERGEглагола слияния и сортировки файлов. RELEASEГлагол предоставляет записи для сортировки и RETURNизвлекает отсортированные записи по порядку.

Прекращение сферы

Некоторые утверждения. Такие как IFи READ, могут сами содержать утверждения. Такие операторы могут быть завершены двумя способами: точкой ( неявным завершением), которая завершает все содержащиеся в них unterminated операторы. Или терминатором области действия. Который завершает ближайший соответствующий открытый оператор.

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

Вложенные операторы. Заканчивающиеся точкой. Являются распространенным источником ошибок. Например, рассмотрим следующий код:

ЕСЛИ x ОТОБРАЖАЕТ y. ОТОБРАЖЕНИЕ z. 

Здесь намерение состоит в том. Чтобы отобразить yи zесли условие xистинно. Однако zбудет отображаться независимо от значенияx, потому IFчто оператор завершается ошибочным периодом после DISPLAY y.

Другая ошибка является результатом проблемы висячего else, когда два IFоператора могут ассоциироваться с an ELSE.

IF x IF y DISPLAY a ELSE   DISPLAY b. 

В приведенном выше фрагменте ELSEассоциируется с IF yоператором вместо IF xоператора. Вызывая ошибку. До введения явных терминаторов области действия. Предотвращающих его. Требовалось ELSE NEXT SENTENCEбы помещать после внутреннего IF

Самоизменяющийся код

Оригинальная спецификация COBOL (1959) поддерживала печально ALTER X TO PROCEED TO Yизвестное утверждение. Для которого многие компиляторы создавали самоизменяющийся код. X и Yявляются метками процедур. А единственный GO TOоператор в процедуреX, выполняемый после такого ALTERоператора. Означает GO TO Yвместо этого. Многие компиляторы все еще поддерживают его, но он был признан устаревшим в стандарте COBOL 1985 года и удален в 2002 году.

Это ALTERутверждение было плохо воспринято. Потому что оно подрывало Как автор учебника Дэниел Д. Маккракен писал в 1976 году. Когда вид оператора GO TO в абзаце сам по себе. Сигнализируя о существовании неизвестного числа операторов ALTER в неизвестных местах по всей программе. Вселяет страх в сердце самого храброго программиста

Привет, мир

Программа Привет, мир

  ИДЕНТИФИКАЦИОННЫЙ ОТДЕЛ.   ПРОГРАММА-ИДЕНТИФИКАТОР. привет-мир.   ПРОЦЕДУРНЫЙ ОТДЕЛ.   ДИСПЛЕЙ    . 

Когда – ныне знаменитый – пример программы на языке программирования C был впервые опубликован в 1978 году . Аналогичный образец программы mainframe COBOL был бы представлен через JCL, очень вероятно. С использованием считывателя перфокарт и 80 колонок перфокарт. Приведенный ниже список с пустым РАЗДЕЛЕНИЕМДАННЫХ был протестирован с использованием Linux и эмулятора System/370 Hercules под управлением MVS 3.8 J. JCL. Написанный в июле 2015 года. Является производным от учебников и образцов Hercules. Размещенных Джеем Мозли.[151] В соответствии с программированием COBOL той эпохи, HELLO. WORLD отображается всеми заглавными буквами.

//COBUCLG РАБОТУ (001),'КОБОЛЕВ БАЗА ТЕСТОВ', 00010000 // КЛАСС=А,MSGCLASS=В,НЕКОТОРЫХ СЛУЧАЯХ=(1,1) 00020000 //BASETEST СТАРПОМА COBUCLG 00030000 //УДАРА.НИИ ДД * 00040000  00000* ПРОВЕРКИ ИЗ БАЗЫ КОБОЛЕВ УСТАНОВИТЬ 00050000  01000 ИДЕНТИФИКАЦИЯ ПОДРАЗДЕЛЕНИЯ. 00060000  01100 ПРОГРАММЫ-ИДЕНТИФИКАТОРА. 'Здравствуйте'. 00070000  02000 СРЕДЫ ОТДЕЛ. 00080000  02100 КОНФИГУРАЦИИ РАЗДЕЛЕ. 00090000  02110 ИСТОЧНИК-КОМПЬЮТЕР. GNULINUX. 00100000  02120 ОБЪЕКТ-КОМПЬЮТЕР. Геркулес. 00110000  02200 СПЕЦИАЛЬНОГО НАЗВАНИЯ. 00120000  02210 КОНСОЛИ ЯВЛЯЕТСЯ CONSL. 00130000  03000 ДАННЫХ ОТДЕЛА. 00140000  04000 ПРОЦЕДУРЫ ДЕЛЕНИЯ. 00150000  04100 00-Главное. 00160000  04110 ДИСПЛЕЙ 'ПРИВЕТ. МИР' ПО CONSL. 00170000  04900 STOP RUN. 00180000 //LKED.SYSLIB DD DSNAME=SYS1.COBLIB,DISP=SHR 00190000 // DD DSNAME=SYS1.LINKLIB,DISP=SHR 00200000 //GO.SYSPRINT DD SYSOUT=A 00210000 // 00220000 

После отправки JCL на экране отобразилась консоль MVS:

 19.52.48 ЗАДАНИЕ 3 $HASP100 COBUCLG НА READER1 COBOL BASE TEST 19.52.48 ЗАДАНИЕ 3 IEF677I ВЫДАНО ПРЕДУПРЕЖДАЮЩЕЕ СООБЩЕНИЕ(Ы) ДЛЯ ЗАДАНИЯ COBUCLG 19.52.48 ЗАДАНИЕ 3 $HASP373 COBUCLG STARTED - INIT 1 - CLASS A - SYS BSP1 19.52.48 ЗАДАНИЕ 3 IEC130I SYSPUNCH DD ЗАЯВЛЕНИЕ ОТСУТСТВУЕТ 19.52.48 ЗАДАНИЕ 3 IEC130I SYSLIB DD ОПЕРАТОР ОТСУТСТВУЕТ 19.52.48 ЗАДАНИЕ 3 IEC130I SYSPUNCH DD ЗАЯВЛЕНИЕ ОТСУТСТВУЕТ 19.52.48 ЗАДАНИЕ 3 IEFACTRT - Stepname Procstep Program Retcode 19.52.48 ЗАДАНИЕ 3 COBUCLG BASETEST COB IKFCBL00 RC= 0000 19.52.48 ЗАДАНИЕ 3 COBUCLG BASETEST LKED IEWL RC= 0000  19.52.48 РАБОТА 3 +ПРИВЕТ. МИР  19.52.48 ЗАДАНИЕ 3 COBUCLG BASETEST GO PGM=*.DD RC= 0000 19.52.48 РАБОТА 3 $HASP395 COBUCLG ЗАКОНЧИЛАСЬ 

Строка 10 приведенного выше списка консолей выделена для эффекта. Подсветка не является частью фактического вывода консоли.

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

Критика и защита

Отсутствие структуры

В 1970-е годы все большее распространение получила парадигма структурированного программирования. Эдсгер Дейкстра, выдающийся компьютерный ученый. Написал письмо редактору Communications of the ACM, опубликованное в 1975 году под названием , что COBOL. Как правило, [153]

Одной из причин появления спагетти — кода было GO TOутверждение. Попытки удалить GO TOs из кода COBOL, однако. Привели к запутанным программам и снижению качества кода.GO TOs были в значительной степени заменены PERFORMутверждением и процедурами. Которые способствовали модульному программированию и давали легкий доступ к мощным средствам циклирования. Однако PERFORMон мог использоваться только с процедурами. Поэтому тела циклов не располагались там. Где они использовались. Что затрудняло понимание программ.

Программы COBOL были печально известны своей монолитностью и отсутствием модульности.Код COBOL мог быть модулирован только с помощью процедур. Которые были признаны неадекватными для больших систем. Было невозможно ограничить доступ к данным. То есть процедура могла получить доступ и изменить любой элемент данных. Кроме того, не было никакой возможности передать параметры процедуры. Что Жан Саммет считал самой большой ошибкой комитета. Еще одно осложнение связано со способностью PERFORM THRU определенная последовательность процедур. Это означало. Что управление может переходить к любой процедуре и возвращаться из нее. Создавая запутанный поток управления и позволяя программисту нарушать правило одного входа и одного выхода.

Эта ситуация улучшилась. Поскольку COBOL принял больше функций. COBOL-74 добавила подпрограммы. Давая программистам возможность контролировать данные. К которым каждая часть программы могла получить доступ. Затем COBOL-85 добавил вложенные подпрограммы. Позволив программистам скрывать подпрограммы.Дальнейший контроль над данными и кодом появился в 2002 году. Когда были включены объектно-ориентированное программирование. Пользовательские функции и пользовательские типы данных.

Тем не менее. Многие важные устаревшие программы COBOL используют неструктурированный код. Который стал недоступным. Изменение даже простого раздела кода может быть слишком рискованным и дорогостоящим. Поскольку он может быть использован из неизвестных мест неизвестными способами.[160]

Проблемы совместимости

COBOL был задуман как очень портативный. Однако к 2001 году было создано около 300 диалектов.Одним из источников диалектов был сам стандарт: стандарт 1974 года состоял из одного обязательного ядра и одиннадцати функциональных модулей. Каждый из которых содержал два или три уровня поддержки. Это позволило получить 104 976 официальных вариантов.[162]

COBOL-85 не был полностью совместим с более ранними версиями. И его разработка была спорной. Джозеф Т. Брофи, CIO компании Travelers Insurance, возглавил усилия по информированию пользователей COBOL о больших затратах на перепрограммирование. Связанных с внедрением нового стандарта. В результате Комитет ANSI COBOL получил более 2200 писем от общественности. В основном негативных. С требованием внести изменения. С другой стороны, считалось. Что переход на COBOL-85 повысит производительность в последующие годы. Тем самым оправдав затраты на конвертацию.

Подробный синтаксис

COBOL: /koh ‘ bol/, n.

Слабый, многословный и дряблый язык. Используемый точильщиками кода для выполнения скучных бессмысленных вещей на мэйнфреймах динозавров. […] Само его название редко произносится без ритуальных выражений отвращения или ужаса.

Файл жаргона 4.4.8.[165]

Синтаксис COBOL часто подвергался критике за его многословие. Сторонники говорят . Что это было сделано для того. Чтобы сделать код самодокументирующимся, облегчая обслуживание программы. COBOL также предназначался для того. Чтобы программистам было легко учиться и использовать его. При этом оставаясь читаемым для нетехнического персонала. Такого как менеджеры. Стремление к удобочитаемости привело к использованию англоязычного синтаксиса и структурных элементов. Таких как существительные, глаголы. Предложения. Разделы и деления. Тем не менее. К 1984 году сопровождающие программы COBOL изо всех сил пытались справиться с и основные изменения в COBOL-85 были сделаны для облегчения технического обслуживания.[88]

Жан Саммет, член комитета ближнего действия. Отметила, что

[edit]

Сообщество COBOL всегда было изолировано от сообщества компьютерных наук. Ни один ученый-компьютерщик не участвовал в разработке COBOL: все члены комитета были из коммерции или правительства. Ученые-компьютерщики в то время больше интересовались такими областями. Как численный анализ. Физика и системное программирование. Чем коммерческими проблемами обработки файлов. Которыми занималась разработка COBOL Жан Саммет объяснял непопулярность COBOL первоначальной Спецификация COBOL использовала уникальную метаязык, для определения своего синтаксиса. А не новую форму Backus–Naur, о которой комитет не знал. Это привело к

Позже, КОБОЛ страдал от нехватки материала. Покрывающего его; лишь в 1963 году для вводных книг. Которые были написаны (с Ричард Д. Ирвин издание учебника колледж на COBOL в 1966).[177] К 1985 году было вдвое больше книг на языке Фортран и в четыре раза больше на основных. А на Коболе в Библиотеке Конгресса. университетские профессора учат более современное. Государство-оф-искусство языков и методики. А не Коболев который. Как говорили. Дональд Нельсон. Председатель комитета CODASYL COBOL. Сказал в 1984 году. Что hate COBOLОпрос 2013 года. Проведенный компанией Micro Focus, показал. Что 20% университетских ученых считают COBOL устаревшим или мертвым. А 55% считают. Что их студенты считают COBOL устаревшим или мертвым. Тот же опрос также показал. Что только 25% ученых включили программирование на COBOL в свою учебную программу. Хотя 60% считали. Что они должны преподавать его[180]. Напротив, в 2003 году COBOL фигурировал в 80% информационных систем учебные программы в Соединенных Штатах в той же пропорции, что и C++ и Java.

Было также значительное снисхождение к COBOL в бизнес-сообществе со стороны пользователей других языков. Например FORTRAN или assembler, подразумевающее. Что COBOL может использоваться только для не сложных задач.]

Проблемы, связанные с процессом проектирования

Были высказаны сомнения в компетентности комитета по стандартам. Член краткосрочного комитета Говард Бромберг заявил. Что существует жан Заммет и Джером Гарфункель также отметили. Что изменения. Внесенные в одну редакцию стандарта. Будут отменены в следующей. Что связано как с изменениями в том. Кто был в комитете по стандарту. Так и с объективными доказательствами.[182]

Стандарты COBOL неоднократно страдали от задержек: COBOL-85 прибыл на пять лет позже. Чем ожидалось, COBOL 2002 опоздал на пять лет. COBOL 2014 опоздал на шесть лет.[95][184] Для борьбы с задержками комитет по стандартам разрешил создавать факультативные добавления. Которые добавляли бы функции быстрее. Чем ожидание следующего пересмотра стандарта. Однако некоторые члены комитета выразили озабоченность по поводу несовместимости между реализациями и частыми модификациями стандарта[185].]

Влияние на другие языки

Структуры данных COBOL оказали влияние на последующие языки программирования. Его запись и файловая структура повлияли на PL/I и Pascal, и это REDEFINESпредложение было предшественником вариантных записей Pascal. Явные определения файловой структуры предшествовали разработке систем управления базами данных. И агрегированные данные были значительным шагом вперед по сравнению с массивами Fortran.PICTURE декларации данных были включены в PL/I с незначительными изменениями.

COPYОбъект COBOL. Хотя и считался повлиял на разработку директив include

Акцент на переносимость и стандартизацию означал. Что программы. Написанные на COBOL. Могли быть переносимыми и облегчали распространение языка на широкий спектр аппаратных платформ и операционных систем.Кроме того, четко определенная структура подразделения ограничивает определение внешних ссылок на подразделение среды, что. В частности. Упрощает изменения платформы.]

См. также

  1. ^ Jump up to: a b c
  2. ^ Памятник в настоящее время находится в Музее компьютерной истории.[61]
  3. ^ Расширения. Зависящие от поставщика. Приводят к тому. Что многие реализации имеют гораздо больше: одна реализация распознает более 1100 ключевых слов.[114]

Цитаты

  1. ^ b Sammet, Jean E. (март 2000). Программное обеспечение IEEE. 17 (2): 30–32. doi:10.1109/52.841602. ISSN 1937-4194. Комитет по ближнему радиусу действия усердно работал с июня 1959 года. Но были большие трудности в том. Чтобы довольно большой комитет попытался создать язык программирования. В ноябре председатель Комитета по ближнему востоку назначил шесть человек для разработки спецификаций для рассмотрения: Уильям Селден и Гертруда Тирни (IBM). Говард Бромберг и Норман Дисконт (RCA). А также Вернон Ривз и Джин Э. Саммет (Sylvania Electric Products). Мы работали в течение двух полных недель (включая несколько круглосуточных сессий) в ноябре 1959 года и послали предложенные спецификации в Комитет по ближнему радиусу действия. Который принял их почти все. После некоторого редактирования (теми же шестью людьми) мы представили спецификации в качестве окончательного отчета в декабре Исполнительному комитету. Который принял их в январе 1960 года. После некоторого дальнейшего редактирования Правительственная типография выпустила Cobol 60. […] [Грейс Хоппер] не участвовала в его работе. Кроме как через общее руководство. Которое она давала своим сотрудникам. Которые были непосредственными членами комитета. Таким образом. Хотя ее косвенное влияние было очень важным. К сожалению. Часто повторяемые утверждения о том, что
  2. ^ b c Saade, Henry; Wallace, Ann (октябрь 1995). . Дневник доктора Добба. Архивирован с оригинала 22 апреля 2014года . Извлечено 21 апреля 2014года .
  3. ^ b Arranga, Edmund C.; Coyle, Frank P. (февраль 1998). Объектно-ориентированный КОБОЛ. Cambridge University Press. p. 15. ISBN 978-0132611404. Объектно-ориентированный стиль COBOL отражает влияние Smalltalk и C++.
  4. ^ Arranga, Edmund C.; Coyle, Frank P. (март 1997). Компьютер. 30 (3): 127. doi:10.1109/2.573683. ISSN 0018-9162.
  5. ^ Imajo, Tetsuji; et al. (Сентябрь 2000 года). COBOL Script: бизнес-ориентированный язык сценариев. Конференция по вычислениям Распределенных объектов предприятия. Макухари, Япония: IEEE. doi:10.1109/EDOC.2000.882363. ISBN 0769508650.
  6. ^ Хо, Вин Хонг (7 мая 2007 года). (PDF). IBM Software Group.
  7. ^ Радин, Джордж (1978). Вексельблат. Ричард Л. (ред.). Ранняя история и характеристика PL/I. История языков программирования. Academic Press (опубликовано в 1981 г.). p. 572. doi:10.1145/800025.1198410. ISBN 0127450408.
  8. ^ Митчелл. Роберт Л. (14 марта 2012 г.). . Компьютерныймир . Проверено 9 февраля 2015года .
  9. ^ b c Митчелл. Роберт Л. (4 октября 2006 г.). . Компьютерныймир . Извлечено 27 апреля 2014года .
  10. ^ Ensmenger. Nathan L. (2009). За Дело Берутся Компьютерщики: Компьютеры, Программисты иПолиттехнологи . MIT Press. p. 100. ISBN 978-0262050937. LCCN 2009052638.
  11. ^ . ISO. 26 мая 2014. Извлечено 7 июня 2014года .
  12. ^ Фергюсон, Эндрю. . cs.brown.edu.
  13. ^ Gürer, Denise (1 June 2002). СИГКСЕ Бык. 34 (2): 175–180. doi:10.1145/543812.543853. ISSN 0097-8418. S2CID 2577644.
  14. ^ Flahive, Paul (24 мая 2019). . Техасское общественное радио. Архивирован с оригинала 24 мая 2019года . Извлечено 19 июля 2019года . (Грейс Хоппер) Прозванный бабушкой Кобол. Код был основан на некоторых ее ранних работах. Она сказала — после того. Как до нее дошли слухи. — что один из ее сотрудников вышел и купил гранитную надгробную плиту. — У него было вырезано слово Затем он отправил его экспресс-почтой мистеру Филлипсу в Пентагон.Шутка над Чарльзом Филлипсом. Руководителем проекта в министерстве обороны. Привлекла внимание сильных мира сего и стала поворотным моментом. Сказала она. COBOL станет самым широко используемым и продолжительным компьютерным языком в истории.
  15. ^ IEEE Annals of the History of Computing. 7 (4): 316-325. 1985. doi:10.1109/MAHC.1985.10047. S2CID 35625728.
  16. ^ Sammet, Jean (1978). ACM SIGPLAN Замечает. 13 (8): 121–161. doi:10.1145/960118.808378. S2CID 10743643.
  17. ^ Адамс, Вики Портер (5 октября 1981). . InfoWorld. Vol. 3 no. 20. p. 33. ISSN 0199-6649.
  18. ^ Беттс, Митч (6 января 1992). . Компьютерныймир . 26 (1): 14.
  19. ^ Lohr, Steve (2008). История Математических специальностей. Игроков в Бридж, Инженеров. Шахматных Магов. Ученых—Индивидуалистов и Иконоборцев-Программистов. Создавших Программную революцию. Основные книги. с. 52. ISBN 978-0786730766.
  20. ^ .
  21. ^ (PDF). Музей компьютерной истории. Декабрь 1980 г. стр. 37. Архивировано из оригинала (PDF) 25 декабря 2017г. Извлечено 28 июня 2014года .
  22. ^ Салливан, Патриция (25 июня 2004). . The Washington Post. p. B06. Извлечено 28 июня 2014года .
  23. ^ . Архивирован с оригинала 2 апреля 2018 года.
  24. ^ . Архивировано с оригинала 23 декабря 2003 года.
  25. ^ b (PDF). Отчет Компьютерного музея. 13: 8–9. Лето 1985 г. Архивировано (PDF) с оригинала 3 апреля 2014г. Извлечено 29 июня 2014года .
  26. ^ . Музей компьютерной истории. Извлечено 29 июня 2014года .
  27. ^ Уильямс, Кэтлин Брум (10 ноября 2012 года). Грейс Хоппер: адмирал Кибер-моря. Пресса Военно-морского института США. ISBN 978-1612512655. OCLC 818867202.
  28. ^ Sager компьютерной корпорации Compaq. В Коболев справочник, номер заказа: АА–Q2G0F–ТК октября 2000 года, стр. XVIII в.; корпорации Fujitsu: чистая Коболев Справочник по языку, версия 15, январь 2009; корпорации IBM: предприятие КОБОЛ для z/OS и Справочник по языку, версия 4, Выпуск 1, SC23-8528-00, декабрь 2007
  29. ^ Гарфункель. Джером (11 ноября 1984). . Компьютерныймир . 18 (24): ID/19.
  30. ^ b c d Follet, Robert H.; Sammet, Jean E. (2003). . В Ralston, Anthony; Reilly, Edwin D.; Hemmendinger. David (ред.). Энциклопедия компьютерных наук (4-е изд.). Wiley. p. 1467. ISBN 978-0470864128.
  31. ^ Тейлор, Алан (2 августа 1972). . Компьютерныймир . 6 (31): 11.
  32. ^ Triance, J. M. (1974). Программирование на языке КОБОЛА: Курс из двенадцати телевизионных лекций. Manchester University Press. p. 87. ISBN 978-0719005923.
  33. ^ Baird, George N.; Oliver, Paul (May 1977). Стандарты Языка Программирования—Кому Они Нужны? (PDF) (Отчет). Отдел военно-морского флота. С. 19-21. Архив (PDF) с оригинала от 7 января 2014года . Извлечено 7 января 2014года .
  34. ^ Каллтон, Джон Р.-младший (23 июля 1975). Пятнистая КомпьютерныйМир . 9 (30): 17.
  35. ^ Simmons, Williams B. (18 июня 1975). -Неужели Автор Репортажа Кобола Действительно Промахнулся?. Компьютерныймир . 9 (25): 20.
  36. ^ Шур, Рита (26 января 1981). . Компьютерныймир . 15 (4): 1, 8.
  37. ^ Шур, Рита (26 октября 1981). . Компьютерныймир . 15 (43): 1–2.
  38. ^ b c Галлант. Джон (16 сентября 1985). . Компьютерныймир . 19 (37): 1, 8.
  39. ^ b . Компьютерныймир . 19 (37): 41, 48. 16 Сентябрь 1985 года.
  40. ^ Пол, Лоис (15 марта 1982). . Компьютерныймир . 16 (11): 1, 5.
  41. ^ Пол, Лоис (25 апреля 1983). . Компьютерныймир . 17 (17): 1, 6.
  42. ^ Гиллин, Пол (19 ноября 1984). . Компьютерныймир . 18 (47): 1, 6.
  43. ^ Рой, М. К.; Дастидар, Д. Призрак (1 июня 1989). Программирование COBOL: проблемы и решения (2-е изд.). McGraw-Hill Education. pp. 438-451. ISBN 978-0074603185.
  44. ^ Робинсон, Брайан (9 июля 2009 года). . FCW. Медиагруппа государственного сектора. Получено 26 апреля 2014года .
  45. ^ b . Микро-Фокус. Архивирован с оригинала 31 марта 2004года . Извлечено 2 сентября 2014года .
  46. ^ . netcobol.com… GTSoftware. 2013. Архивирован с оригинала 8 июля 2014года . Извлечено 29 января 2014года .
  47. ^ . Компьютерныймир . 18 (37): ID/28. 10 сентября 1984года . Проверено 8 июня 2014года .
  48. ^ b . ISO. 30 июня 2010 года. Архивирован с оригинала 14 февраля 2014года . Извлечено 27 апреля 2014года .
  49. ^ Billman, John; Klink, Huib (27 февраля 2008). (PDF). Архивирован из оригинала (PDF) 11 июля 2009года . Извлечено 14 августа 2014года .
  50. ^ Шрикер, Дон (2 декабря 1998 года). . Микро-Фокус. Архивирован с оригинала 24 февраля 1999года . Проверено 12 июля 2014года .
  51. ^ Кизиор, Рональд Дж.; Карр, Дональд; Халперн, Пол. (PDF). Материалы конференции по образованию в области информационных систем 2000года . 17 (126). Архивировано из оригинала (PDF) 17 августа 2016года . Извлечено 30 сентября 2012года .
  52. ^ . Компьютерныймир . 14 марта 2012года . Извлечено 27 апреля 2014года .
  53. ^ Паунер, Дэвид А. (25 мая 2016 года). (PDF). p. 18. Архивировано из оригинала (PDF) 15 июня 2016года . Извлечено 19 июля 2019года . Несколько агентств. Таких как Министерство сельского хозяйства (USDA), DHS. HHS, Justice. Treasury и VA. Сообщили об использовании Common Business Oriented Language (COBOL)—языка программирования. Разработанного в конце 1950—х и начале 1960-х годов-для программирования своих унаследованных систем. Широко известно. Что агентства должны переходить на более современные. Поддерживаемые языки. Когда это уместно и возможно.
  54. ^ . Агентство Рейтер. Получено 8 апреля 2020года .
  55. ^ Теплицкий. Фил (25 октября 2019). . IBM Systems Magazine. IBM Z. Извлечено 11 июня 2020года .
  56. ^ Ли, Алисия (8 апреля 2020). . Си-Эн-ЭН. Получено 8 апреля 2020года .
  57. ^ Лонг, Хизер; Стейн, Джефф; Рейн, Лиза; Ромм, Тони (17 апреля 2020 года). . Извлечено 19 апреля 2020года .
  58. ^ . Micro Focus Visual COBOL 2.2 Справочник по языку COBOL. Микро-Фокус. Извлечено 3 марта 2014года .
  59. ^ . Обработка файлов. Микрофокус, 1998 . Извлечено 27 июня 2014года .
  60. ^ Хаббелл, Тэйн (1999). Сэмс Научи Себя КОБОЛУ за 24 часа. SAMS Publishing. p. 40. ISBN 978-0672314537. LCCN 98087215.
  61. ^ Филд, Джон; Рамалингам, Г. Определение процедурной структуры в программах Cobol (PDF). ПАСТА ’99. doi:10.1145/381788.316163. ISBN 1581131372.
  62. ^ b c Veerman, Niels; Verhoeven, Ernst-Jan (ноябрь 2006). (PDF). Программное обеспечение—Практика и опыт. 36 (14). doi:10.1002/spe.v36:14. Архивирован из оригинала (PDF) 6 марта 2007 года.
  63. ^ Примеры поддержки компилятора ALTERможно увидеть в следующем:

    • Тиффин, Брайан (18 сентября 2013 года). . GNU Cobol. Архивирован с оригинала 5 мая 2014года . Проверено 5 января 2014года .
    • . Micro Focus Visual COBOL 2.2 для Visual Studio 2013 COBOL Language Reference. Микрофокусировка. Проверено 5 января 2014года .
    • (PDF). Справочное руководствоCOBOL85 . Fujitsu. Ноябрь 1996. с. 555. Архивирован из оригинала (PDF) 6 января 2014года . Проверено 5 января 2014года .
    • . Enterprise COBOL for z/OS Language Reference. Июнь 2013года . Проверено 5 января 2014года .

  64. ^ Мозли, Джей (17 января 2015 года). . Извлечено 19 июля 2015года .
  65. ^ Dijkstra, Edsger W. (18 июня 1975). — Как мы можем говорить правду. Которая может причинитьболь? Техасский университет в Остине. EWD498. Архивирован с оригинала 2 мая 2017года . Проверено 29 августа 2007года .
  66. ^ Томпкинс, Его Превосходительство (1983). ACM SIGPLAN Замечает. 18 (4): 86–94. doi:10.1145/948176.948186. S2CID 33803213.
  67. ^ Кофлан, Майкл (16 марта 2014 года). Начинающий COBOL для программистов. Апрель, стр. 4. ISBN 978-1430262534. Извлечено 13 августа 2014года .
  68. ^ . 19 июля 2016года . Проверено 23 июля 2016года .
  69. ^ Lämmel, Ralf; Verhoef, Chris (ноябрь–декабрь 2001). (PDF). Программное обеспечение IEEE. 18 (6): 79. doi:10.1109/52.965809. лпвп:1871/9853. Архивирован из оригинала (PDF) 19 августа 2014 года.
  70. ^ Howkins, T. J.; Harandi, M. T. (апрель 1979). . Компьютерный журнал. 22 (4): 290. doi:10.1093/comjnl/22.4.290.
  71. ^ Raymond, Eric S. (1 октября 2004). . Файл жаргона. Версия 4.4.8. Архивирован с оригинала 30 августа 2014года . Получено 13 декабря 2014года .
  72. ^ . Архивировано с оригинала 5 марта 2016года . Извлечено 25 февраля 2016г.CS1 maint: архивная копия в качестве заголовка (ссылка)
  73. ^ . Компьютерныймир . 18 (37): ID/29–ID/32. 10 сентября 1984года . Извлечено 8 июня 2014года .
  74. ^ (пресс-релиз). Микро-Фокус. 7 марта 2013года . Извлечено 4 августа 2014года .
  75. ^ Sammet, Jean; Garfunkel, Jerome (октябрь 1985). Анналы истории вычислительнойтехники . 7 (4): 342. doi:10.1109/MAHC.1985.10033. S2CID 17940092.
  76. ^ Кук, Маргарет М. (июнь 1978). Ghosh, Sakti P.; Liu, Leonard Y. (eds.). Data Base Facility for COBOL 80 (PDF). 1978 National Computer Conference. Anaheim, California: AFIPS Press. pp. 1107-1112. doi:10.1109/AFIPS.1978.63. LCCN 55-44701. Извлечено 2 сентября 2014года . Самая ранняя дата. Когда новый стандарт COBOL может быть разработан и утвержден. — это 1980 год […].
  77. ^ . 11 июля 2003 г. стр. 1. Архивировано с оригинала (doc) 8 марта 2016г. Извлечено 29 июня 2014года . пересмотр стандарта COBOL в июне 2008 года
  78. ^ Бэбкок, Чарльз (14 июля 1986). . Компьютерныймир . 20 (28): 1, 12.
  79. ^ Это можно увидеть в:
  80. ^ Coughlan, Michael (2002). . Извлечено 3 февраля 2014года .

Источники

Внешние ссылки