stringtranslate.com

КОБОЛ

COBOL ( / ˈ k b ɒ l , - b ɔː l / ; аббревиатура от «общий бизнес-ориентированный язык») — это компилируемый английский язык программирования , предназначенный для использования в бизнесе. Это императивный , процедурный и, с 2002 года, объектно-ориентированный язык. COBOL в основном используется в бизнесе, финансах и административных системах компаний и правительств. COBOL по-прежнему широко используется в приложениях, развернутых на мейнфреймах , таких как крупномасштабные задания пакетной обработки и обработки транзакций . Многие крупные финансовые учреждения разрабатывали новые системы на этом языке еще в 2006 году [9] , но сегодня большая часть программирования на COBOL предназначена исключительно для поддержки существующих приложений. Программы переносятся на новые платформы, переписываются на современные языки или заменяются другим программным обеспечением. [10]

COBOL был разработан в 1959 году компанией CODASYL и частично основывался на языке программирования FLOW-MATIC, разработанном Грейс Хоппер . Он был создан в рамках усилий Министерства обороны США по созданию портативного языка программирования для обработки данных. Первоначально это рассматривалось как временное решение, но Министерство обороны сразу же заставило производителей компьютеров предоставить его, что привело к его широкому распространению. [11] Он был стандартизирован в 1968 году и пересматривался пять раз. Расширения включают поддержку структурированного и объектно-ориентированного программирования . Действующим стандартом является ISO / IEC  1989:2023. [12]

Операторы COBOL имеют прозаический синтаксис, такой как , который был разработан как самодокументируемый и легко читаемый. Однако он многословен и использует более 300 зарезервированных слов . Это контрастирует с кратким и математически вдохновленным синтаксисом других языков (в данном случае ).MOVE x TO yy = x;

Код COBOL разделен на четыре части (идентификация, среда, данные и процедуры), содержащие жесткую иерархию разделов, абзацев и предложений. Из-за отсутствия большой стандартной библиотеки стандарт определяет 43 оператора, 87 функций и только один класс.

Академические ученые-компьютерщики, как правило, не интересовались бизнес-приложениями, когда был создан COBOL, и не участвовали в его разработке; он был (фактически) разработан с нуля как компьютерный язык для бизнеса с упором на ввод и вывод, единственными типами данных которого были числа и текстовые строки. [13]

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

В течение многих лет COBOL считался языком программирования для бизнес-операций на мэйнфреймах [14] , хотя в последние годы многие операции COBOL были перенесены в облачные вычисления . [15]

История и характеристики

Фон

В конце 1950-х годов пользователи компьютеров и производители стали обеспокоены ростом стоимости программирования. Исследование 1959 года показало, что программирование любой установки по обработке данных обходится в среднем в 800 000 долларов США, а перевод программ для работы на новом оборудовании обойдется в 600 000 долларов США. В то время, когда распространялись новые языки программирования , то же исследование показало, что если бы использовался общий бизнес-ориентированный язык, преобразование было бы намного дешевле и быстрее. [16]

8 апреля 1959 года Мэри К. Хоуз , ученый-компьютерщик из корпорации Burroughs , созвала встречу представителей научных кругов, пользователей компьютеров и производителей в Пенсильванском университете , чтобы организовать официальную встречу по общим деловым языкам. [17] Среди представителей были Грейс Хоппер (изобретатель английского языка обработки данных FLOW-MATIC ), Джин Саммет и Сол Горн . [18] [19]

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

Чарльз Филлипс согласился спонсировать встречу и поручил делегации подготовить повестку дня. [22]

КОБОЛ 60

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

Представители с энтузиазмом описали язык, который может работать в самых разных средах: от банковского дела и страхования до коммунальных услуг и управления запасами. Они единогласно согласились, что больше людей должны уметь программировать и что новый язык не должен ограничиваться ограничениями современных технологий. Большинство согласилось, что язык должен максимально использовать английский, быть способным к изменению, быть машинонезависимым и простым в использовании, даже за счет энергопотребления. [25]

Результатом встречи стало создание руководящего комитета , а также комитетов краткосрочного, промежуточного и долгосрочного характера. Комитету по краткосрочным действиям было отведено сентябрь (три месяца) для разработки спецификаций временной формулировки, которая затем была улучшена другими комитетами. [26] [27] Однако их официальная миссия заключалась в выявлении сильных и слабых сторон существующих языков программирования, а не в явном указании на создание нового языка. [24]

Крайний срок был встречен комитетом ближнего действия с недоверием. [28] Одна из участниц, Бетти Холбертон , назвала трехмесячный срок «чрезвычайным оптимизмом» и выразила сомнение в том, что эта формулировка действительно станет временным решением. [29]

Руководящий комитет собрался 4 июня и согласился назвать всю деятельность Комитетом по языкам систем данных ( CODASYL ) и сформировать исполнительный комитет. [30]

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

Комитет в основном рассматривал языки программирования FLOW-MATIC , AIMACO и COMTRAN . [24] [33] Язык FLOW-MATIC оказал особое влияние, потому что он был реализован и потому что AIMACO был его производным с незначительными изменениями. [34] [35] Изобретатель FLOW-MATIC Грейс Хоппер также была техническим консультантом комитета. [28] Основным вкладом FLOW-MATIC в COBOL стали длинные имена переменных, английские слова для команд и разделение описаний данных и инструкций. [36]

Хоппер иногда называют «матерью COBOL» или «бабушкой COBOL», [37] [38] [39] , хотя Джин Саммет , ведущий дизайнер COBOL, сказала, что Хоппер «не был матерью, создателем или разработчиком Cobol». ". [40] [1]

Язык COMTRAN компании IBM, изобретенный Бобом Бемером , рассматривался комитетом ближнего радиуса действия, состоящим из коллег Грейс Хоппер, как конкурент FLOW-MATIC [41] [42] . [43] Некоторые из его функций не были включены в COBOL, чтобы не выглядело так, будто IBM доминировала в процессе проектирования, [26] а Жан Саммет сказал в 1981 году, что в каком-то комитете существовала «сильная предвзятость против IBM». участники (включая ее самого). [44] В одном случае, после того как Рой Голдфингер, автор руководства COMTRAN и член комитета среднего уровня, присутствовал на заседании подкомитета, чтобы поддержать его язык и поощрять использование алгебраических выражений, Грейс Хоппер отправила записку в комитет ближнего действия. повторяя усилия Сперри Рэнда по созданию языка на основе английского. [45]

В 1980 году Грейс Хоппер отметила, что «COBOL 60 на 95% состоит из FLOW-MATIC» и что COMTRAN оказал «крайне небольшое» влияние. Более того, она сказала, что будет утверждать, что на работу повлияли как FLOW-MATIC, так и COMTRAN только для того, чтобы «сделать других людей счастливыми, [чтобы они] не пытались нас выбить». [46]

Функции COMTRAN, включенные в COBOL, включали формулы, [47] предложение PICTURE, [48] улучшенный IFоператор, который устранил необходимость в GO TO , и более надежную систему управления файлами. [41]

Полезность работы комитета стала предметом больших дискуссий. Хотя некоторые члены считали, что в этом языке слишком много компромиссов и что он является результатом разработки комитета , другие считали, что он лучше, чем три рассмотренных языка. Некоторые считали, что язык слишком сложен; другие слишком простые. [49]

К спорным функциям относились те, которые некоторые считали бесполезными или слишком продвинутыми для пользователей, занимающихся обработкой данных. К таким функциям относятся логические выражения , формулы и индексы таблиц . [50] [51] Еще один спорный вопрос заключался в том, следует ли делать ключевые слова контекстно-зависимыми и как это повлияет на читабельность. [50] Хотя контекстно-зависимые ключевые слова были отвергнуты, этот подход позже использовался в PL/I и частично в COBOL с 2002 года. [52] Мало внимания уделялось интерактивности , взаимодействию с операционными системами (в то время существовало мало) и функциям. (считается чисто математическим и бесполезным при обработке данных). [53] [54]

Спецификации были представлены исполкому 4 сентября. Они не оправдали ожиданий: Джозеф Вегштейн отметил, что «он содержит неровности и требует некоторых дополнений», а Боб Бемер позже охарактеризовал их как «сборную мешанину». Подкомиссии дали время до декабря на ее доработку. [28]

На заседании в середине сентября комитет обсудил название нового языка. Предложения включали «BUSY» (бизнес-система), «INFOSYL» (язык информационных систем) и «COCOSYL» (общий язык компьютерных систем). [55] Неясно, кто придумал название «КОБОЛ», [56] [57] , хотя Боб Бемер позже утверждал, что это было его предложение. [58] [59] [60]

В октябре комитет промежуточного уровня получил копии спецификации языка FACT , созданной Роем Наттом . Его особенности настолько впечатлили комитет, что они приняли решение основать на нем COBOL. [61]

Это стало ударом по комитету по ближнему радиусу действия, который добился хорошего прогресса в разработке спецификации. Несмотря на свое техническое превосходство, FACT не создавался с учетом портативности или консенсуса производителей и пользователей. У него также не было наглядной реализации, [28] что позволяло сторонникам COBOL на основе FLOW-MATIC отменить резолюцию. Представитель RCA Говард Бромберг также заблокировал FACT, чтобы работа RCA над внедрением COBOL не пропала даром. [62]

Вскоре стало очевидно, что комитет слишком велик, чтобы можно было быстро добиться дальнейшего прогресса. Разочарованный Говард Бромберг купил надгробие за 15 долларов с выгравированной на нем надписью «COBOL» и отправил его Чарльзу Филлипсу, чтобы продемонстрировать свое недовольство. [б] [64] [65]

Для анализа существующих языков был сформирован подкомитет, в состав которого вошли шесть человек: [24] [66]

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

Спецификации были одобрены исполнительным комитетом 8 января 1960 года и отправлены в государственную типографию, которая напечатала их как COBOL 60 . Заявленные цели языка заключались в том, чтобы позволить легко писать эффективные переносимые программы, позволить пользователям переходить на новые системы с минимальными усилиями и затратами, а также сделать его подходящим для неопытных программистов. [67]

Позже исполнительный комитет CODASYL создал комитет по обслуживанию COBOL, чтобы отвечать на вопросы пользователей и поставщиков, а также улучшать и расширять спецификации. [68]

В 1960 году список производителей, планировавших создавать компиляторы COBOL, расширился. К сентябрю к CODASYL присоединились еще пять производителей ( Bendix , Control Data Corporation , General Electric (GE), National Cash Register и Philco ), и все представленные производители анонсировали компиляторы COBOL. GE и IBM планировали интегрировать COBOL в свои языки GECOM и COMTRAN соответственно. Компания International Computers and Tabulators , напротив, планировала заменить свой язык CODEL на COBOL. [69]

Тем временем RCA и Сперри Рэнд работали над созданием компиляторов COBOL. Первая программа COBOL была запущена 17 августа на RCA 501. [70] 6 и 7 декабря одна и та же программа COBOL (хотя и с небольшими изменениями) была запущена на компьютере RCA и компьютере Remington-Rand Univac , продемонстрировав, что совместимость может быть обеспечена. достигнуто. [71]

Относительное влияние используемых языков сохраняется и по сей день в рекомендуемых рекомендациях, напечатанных во всех справочных руководствах COBOL:

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

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

FLOW-MATIC (торговая марка Unisys Corporation ), Программирование для UNIVAC (R) I и II, Системы автоматизации данных, авторские права принадлежат Unisys Corporation в 1958, 1959 годах; Форма коммерческого переводчика IBM № F28-8013, авторские права принадлежат IBM в 1959 году; ФАКТ: DSI 27A5260-2760, авторские права принадлежат Minneapolis-Honeywell в 1960 году.

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

от КОБОЛ-61 до КОБОЛ-65

Маловероятно, что Cobol появится к концу десятилетия.

Аноним, июнь 1960 г. [73]

В COBOL 60 было обнаружено множество логических ошибок , из-за чего Чарльз Кац из General Electric предупредил, что его нельзя интерпретировать однозначно. Неохотно краткосрочный комитет провел полную очистку, и к марту 1963 года было сообщено, что синтаксис COBOL так же поддается определению, как и синтаксис ALGOL , хотя семантическая неопределенность осталась. [69]

COBOL — сложный язык для написания компилятора из-за большого синтаксиса и множества дополнительных элементов в синтаксических конструкциях, а также из-за необходимости генерировать эффективный код для языка со многими возможными представлениями данных, неявными преобразованиями типов и необходимыми наборами значений. ИБП для операций ввода-вывода. [74] Ранние компиляторы COBOL были примитивными и медленными. Оценка ВМС США в 1962 году показала скорость компиляции 3–11 операторов в минуту. К середине 1964 года они увеличились до 11–1000 заявлений в минуту. Было замечено, что увеличение памяти резко увеличивает скорость, а затраты на компиляцию сильно различаются: затраты на оператор составляют от 0,23 до 18,91 доллара. [75]

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

Спецификация COBOL пересматривалась трижды за пять лет после ее публикации. COBOL-60 был заменен в 1961 году на COBOL-61. Затем в 1963 году на смену им пришли расширенные спецификации COBOL-61, в которых были представлены возможности сортировки и создания отчетов. [76] Добавленные средства исправили недостатки, выявленные Honeywell в конце 1959 года в письме комитету по ближнему диапазону. [70] В COBOL Edition 1965 года были внесены дополнительные разъяснения в спецификации и введены средства для работы с файлами и таблицами запоминающих устройств . [77]

КОБОЛ-68

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

КОБОЛ-74

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

Независимо от комитета ANSI, комитет по языкам программирования CODASYL работал над улучшением языка. Они описали новые версии 1968, 1969, 1970 и 1973 годов, включая такие изменения, как новые возможности межпрограммного взаимодействия, отладки и объединения файлов, а также улучшенные функции обработки строк и включения библиотек . [81]

Хотя CODASYL был независим от комитета ANSI, журнал развития CODASYL использовался ANSI для определения функций, которые были достаточно популярны, чтобы гарантировать внедрение. [82] Комитет по языкам программирования также поддерживал связь с ECMA и японским комитетом по стандарту COBOL. [81]

Однако Комитет по языкам программирования не был широко известен. Вице-президент Уильям Ринехулс пожаловался, что две трети сообщества COBOL не знают о существовании комитета. У него также не было средств для бесплатного доступа к публичным документам, таким как протоколы заседаний и предложения по изменениям. [83]

В 1974 году ANSI опубликовал пересмотренную версию (ANS) COBOL, содержащую новые функции, такие как организация файлов, оператор DELETE[ 84] и модуль сегментации . [85] Удаленные функции включали NOTEоператор, EXAMINEоператор (который был заменен на INSPECT) и определяемый разработчиком модуль произвольного доступа (который был заменен новыми модулями последовательного и относительного ввода-вывода). Это составило 44 изменения, которые сделали существующие положения несовместимыми с новым стандартом. [86] Автора отчета планировалось исключить из COBOL, но он был восстановлен в должности до публикации стандарта. [87] [88] Позже, в 1978 году, ISO приняла обновленный стандарт. [79]

КОБОЛ-85

В июне 1978 года начались работы по пересмотру COBOL-74. Предлагаемый стандарт (обычно называемый COBOL-80) существенно отличался от предыдущего, вызывая опасения по поводу несовместимости и затрат на преобразование. В январе 1981 года Джозеф Т. Брофи, старший вице-президент Travelers Insurance, пригрозил подать в суд на комитет по стандартизации, поскольку он не был совместим с COBOL-74. Г-н Брофи назвал предыдущие преобразования их 40-миллионной кодовой базы «непродуктивными» и «полной тратой наших программных ресурсов». [89] Позже в том же году Ассоциация управления обработкой данных (DPMA) заявила, что она «категорически против» нового стандарта, сославшись на «непомерно высокие» затраты на преобразование и улучшения, которые «навязывались пользователю». [90] [91]

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

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

В 1983 году DPMA отозвало свое несогласие со стандартом, сославшись на реакцию комитета на обеспокоенность общественности. В том же году исследование Национального бюро стандартов пришло к выводу, что предлагаемый стандарт не создаст особых проблем. [91] [94] Год спустя DEC выпустила VAX/VMS COBOL-80 и отметила, что преобразование программ COBOL-74 создает мало проблем. Новый EVALUATEоператор и встроенный код PERFORMбыли особенно хорошо приняты и повысили производительность благодаря упрощенному потоку управления и отладке . [95]

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

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

Шестьдесят функций были изменены или устарели и добавлены 115 [96] , например: [97] [98]

Новый стандарт был принят всеми национальными органами стандартизации, включая ANSI. [79]

В 1989 и 1993 годах последовали две поправки: первая вводила внутренние функции, а вторая вносила исправления. [79]

COBOL 2002 и объектно-ориентированный COBOL

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

В начале 1990-х годов началась работа по добавлению объектно-ориентированного подхода в следующую полную версию COBOL. Объектно-ориентированные возможности были взяты из C++ и Smalltalk . [2] [3]

По первоначальной оценке, эта редакция должна была быть завершена к 1997 году, а проект комитета ISO (CD) был доступен к 1997 году. Некоторые поставщики (включая Micro Focus , Fujitsu и IBM ) представили объектно-ориентированный синтаксис на основе черновиков полной версии. Окончательно утвержденный стандарт ISO был одобрен и опубликован в конце 2002 года. [100]

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

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

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

КОБОЛ 2014

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

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

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

КОБОЛ 2023

В стандарт COBOL 2023 добавлено несколько новых функций:

Полная реализация этого стандарта пока неизвестна. [ нужна цитата ]

Наследие

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

Ближе к концу 20-го века проблема 2000 года (Y2K) была в центре внимания значительных усилий по программированию на COBOL, иногда со стороны тех же программистов, которые проектировали системы десятилетия назад. Особый уровень усилий, необходимых для исправления кода COBOL, объясняется большим количеством бизнес-ориентированного COBOL, поскольку бизнес-приложения активно используют даты, а также поля данных фиксированной длины. [114] Некоторые исследования приписывают Cobol «24% затрат на ремонт программного обеспечения 2000 года». [115] После очистки этих программ от Y2K исследование 2003 года показало, что многие из них остались в использовании. [116] Авторы заявили, что данные опроса предполагают «постепенное снижение важности COBOL в разработке приложений в течение [последующих] 10 лет, если... не будет реализована интеграция с другими языками и технологиями». [117]

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

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

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

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

Функции

Синтаксис

COBOL имеет синтаксис, похожий на английский, который используется для описания практически всего в программе. Например, условие может быть выражено как   или более кратко как     или   . Более сложные условия можно «сократить», удалив повторяющиеся условия и переменные. Например,     можно сократить до . Для поддержки этого синтаксиса в COBOL имеется более 300 ключевых слов . [124] [d] Некоторые ключевые слова представляют собой простые альтернативные или множественные варианты написания одного и того же слова, что обеспечивает более грамматически подходящие утверждения и предложения; например, ключевые слова и могут использоваться взаимозаменяемо, как и и , и и .x IS GREATER THAN yx GREATER yx > ya > b AND a > c OR a = da > b AND c OR = dINOFTIMETIMESVALUEVALUES

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

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

Метаязык

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

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

 

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

ДОБАВИТЬ 1 К x ДОБАВИТЬ 1 , a , b К x ОКРУГЛЕННО , y , z ОКРУГЛЕННО           ДОБАВИТЬ a , b В c НА ОТОБРАЖЕНИИ ОШИБКИ РАЗМЕРА « Ошибка» КОНЕЦ-ДОБАВИТЬ         ДОБАВИТЬ a К b ОТОБРАЖЕНИЕ ОШИБКИ НЕ РАЗМЕРА «Нет ошибок» НА ОТОБРАЖЕНИИ ОШИБКИ РАЗМЕРА «Ошибка»             

Формат кода

Колода перфокарт в программе COBOL, 1970-е годы.

Пик популярности COBOL совпал с эпохой перфомашин и перфокарт . Сама программа записывалась на перфокарты, затем считывалась и компилировалась, а данные, вводимые в программу, иногда также находились на картах. [129]

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

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

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

Отдел идентификации

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

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

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

*> Они эквивалентны. ВЫЗОВ my-class "foo" ВОЗВРАЩЕНИЕ var MOVE my-class :: "foo" TO var *> Вызов встроенного метода        

COBOL не предоставляет возможности скрыть методы. Однако данные класса можно скрыть, объявив их без PROPERTYпредложения, в результате чего внешний код не сможет получить к ним доступ. [133] Перегрузка методов была добавлена ​​в COBOL 2014. [134]

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

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

Файлы

COBOL поддерживает три формата файлов или организации : последовательный, индексированный и относительный. В последовательных файлах записи являются смежными и должны проходить последовательно , аналогично связанному списку . Индексированные файлы имеют один или несколько индексов, которые позволяют осуществлять произвольный доступ к записям и сортировать их. Каждая запись должна иметь уникальный ключ , но другие, альтернативные ключи записей не обязательно должны быть уникальными. Реализации индексированных файлов различаются у разных поставщиков, хотя общие реализации, такие как C-ISAM и VSAM , основаны на IBM ISAM . другими реализациями являются службы управления записями на OpenVMS и Enscribe на HPE NonStop (Tandem). Относительные файлы, как и индексированные файлы, имеют уникальный ключ записи, но не имеют альтернативных ключей. Ключом относительной записи является ее порядковый номер; например, 10-я запись имеет ключ 10. Это означает, что создание записи с ключом 5 может потребовать создания (пустых) предшествующих записей. Относительные файлы также допускают как последовательный, так и произвольный доступ. [135]

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

Отдел данных

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

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

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

  01 какая-то запись . *> Элемент групповой записи 05 номер PIC 9(10) . *> Элементарный пункт 05 -дата . *> Совокупная (под)групповая запись 10 -го года PIC 9(4) . *> Элементарный пункт 10 -месячный ПОС 99 . *> Элементарный пункт 10 -дневного ПОС 99 . *> Элементарный элемент                    

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

Подчиненные элементы можно устранить с помощью ключевого слова IN(или 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пункте , используется редко [139] и примерно с 1988 года обычно встречался в старых программах. Его способность игнорировать данные иерархической и логической структуры означала, что его использование не рекомендовалось, и многие установки запрещали его использование. [140]

  01 запись клиента . 05 индивидуальный ключ PIC X(10) . 05 индивидуальное имя . 10 заказное имя PIC X(30) . 10 кастомная фамилия PIC X(30) . 05 заказ PIC 9(8) . 05 балансовый PIC 9(7)V99 . 66 cust-personal-details ПЕРЕИМЕНОВАЕТ cust-name ЧЕРЕЗ cust-dob . 66 cust-all-details ПЕРЕИМЕНОВАЕТ cust-name ЧЕРЕЗ cust-balance .                               

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

  77 имя-свойства PIC X(80) . 77 регион продаж PIC 9(5) .    

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

  01 вид оплаты PIC X . 88 заработная плата - почасовая ЗНАЧЕНИЕ "H" . 88 заработная плата равна годовой ЗНАЧЕНИЕ "S" , "Y" .        

Типы данных

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

Типовая безопасность в COBOL является переменной. Числовые данные преобразуются между различными представлениями и размерами автоматически, а буквенно-цифровые данные могут быть помещены в любой элемент данных, который может храниться в виде строки, включая числовые и групповые данные. [143] Напротив, ссылки на объекты и указатели могут быть назначены только из элементов одного и того же типа, а их значения могут быть ограничены определенным типом. [144]

пункт ИЗОБРАЖЕНИЕ

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

пункт ИСПОЛЬЗОВАНИЕ

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

Автор отчета

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

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

  Отчет по ФД ОТЧЕТ по продажам .   

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

  Отчет о продажах RD ОГРАНИЧЕНИЕ СТРАНИЦЫ 60 СТРОК ПЕРВАЯ ДЕТАЛИ 3 УПРАВЛЕНИЯ имя продавца .             01 ТИП ЗАГОЛОВОК СТРАНИЦЫ . 03 ЗНАЧЕНИЕ COL 1 «Отчет о продажах» . 03 COL 74 ЗНАЧЕНИЕ «Страница» . 03 COL 79 PIC Z9 ИСТОЧНИК СЧЕТЧИКА СТРАНИЦ .               01 продажа на день ТИП ДЕТАЛЬ , СТРОКА + 1 . 03 COL 3 ЗНАЧЕНИЕ «Продажи продолжаются» . 03 COL 12 PIC 99/99/9999 ИСТОЧНИК -дата продажи . 03 COL 21 ЗНАЧЕНИЕ «были» . 03 COL 26 PIC $$$$9,99 ИСТОЧНИК объем продаж .                      01 недействительные продажи ТИП ДЕТАЛИ , СТРОКА + 1 . 03 ЗНАЧЕНИЕ COL 3 «НЕДЕЙСТВИТЕЛЬНАЯ ЗАПИСЬ:» . 03 COL 19 PIC X(34) ИСТОЧНИК записи продаж .              01 ТИП УПРАВЛЯЮЩЕГО ЗАГОЛОВКА имя продавца , LINE + 2 . 03 ЗНАЧЕНИЕ КОЛОДЦА 1 «Продавец:» . 03 COL 9 PIC X(30) ИСТОЧНИК имя продавца .             

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

Отчет о продажах, стр. 1Продавец: Говард Бромберг Продажи на 12.10.2008 составили 1000,00 долларов США. Продажи на 12.12.2008 составили 0,00 доллара США. Продажи 12.13.2008 г. составили 31,47 доллара США. НЕДЕЙСТВИТЕЛЬНАЯ ЗАПИСЬ: Говард Бромберг XXXXYYПродавец: Howard Discount...Отчет о продажах, стр. 12 Продажи на 05.08.2014 составили $543,98. НЕДЕЙСТВИТЕЛЬНАЯ ЗАПИСЬ: Уильям Селден 12O52014FOFOO Продажи на 30.05.2014 составили 0,00$.

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

  ОТКРЫТЬ ВВОД продаж , ВЫВОД отчета ИНИЦИИРОВАТЬ отчет о продажах ВЫПОЛНИТЬ ДО 1 <> 1 ПРОЧИТАТЬ продажи В КОНЦЕ ВЫХОД ВЫПОЛНИТЬ КОНЕЦ - ЧИТАТЬ ПРОВЕРИТЬ запись о продажах ЕСЛИ действительная запись СОЗДАТЬ продажи за день ELSE Сгенерировать недействительные продажи END-IF END - ВЫПОЛНИТЬ ПРЕКРАТИТЬ продажи-отчет ЗАКРЫТЬ продажи , отчет .                                                    

Использование средства Report Writer может значительно различаться; некоторые организации используют его широко, а некоторые не используют вообще. [148] Кроме того, реализации Report Writer различались по качеству: те, что находились на нижнем уровне, иногда использовали чрезмерные объемы памяти во время выполнения. [148]

Процедурное подразделение

Процедуры

Разделы и параграфы в разделе процедур (совместно называемые процедурами) могут использоваться как метки и как простые подпрограммы . В отличие от других разделов, абзацы не обязательно должны находиться в разделах. [149]

Выполнение выполняется через процедуры программы до тех пор, пока оно не будет прекращено. [150] Для использования процедур в качестве подпрограмм PERFORMиспользуется глагол.

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

ПРОЦЕДУРА такая-то . ВЫПОЛНИТЬ АЛЬФА ВЫПОЛНИТЬ АЛЬФА ЧЕРЕЗ ГАММУ СТОП БЕГ . АЛЬФА . ДИСПЛЕЙ «А» . БЕТА . ДИСПЛЕЙ «В» . ГАММА . ДИСПЛЕЙ «C» .            

Результатом этой программы будет: «AAB C».

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

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

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

ЭТИКЕТКА1 . ОТОБРАЖАЙТЕ '1' ВЫПОЛНИТЬ ОТ МЕТКИ 2 ДО МЕТКИ 3 СТОП ПУСК . ЭТИКЕТКА2 . ОТОБРАЖЕНИЕ '2' ВЫПОЛНИТЬ ОТ ОТ ОТ МЕТКИ 3 ПО ОТ МЕТКИ 4 . ЭТИКЕТКА3 . ДИСПЛЕЙ «3» . ЭТИКЕТКА4 . ДИСПЛЕЙ «4» .              

Можно было бы ожидать, что вывод этой программы будет «1 2 3 4 3»: после отображения «2» вторая PERFORMвызывает отображение «3» и «4», а затем первый вызов продолжается с «3». . В традиционных реализациях COBOL это не так. Скорее, первый PERFORMоператор устанавливает адрес продолжения в конце LABEL3, чтобы он вернулся к месту вызова внутри LABEL1. Второй PERFORMоператор устанавливает возврат в конце, LABEL4но не изменяет адрес продолжения LABEL3, ожидая, что это будет продолжение по умолчанию. Таким образом, когда внутренний вызов достигает конца LABEL3, он возвращается к внешнему PERFORMоператору, и программа прекращает печатать только «1 2 3». С другой стороны, в некоторых реализациях COBOL, таких как компилятор TinyCOBOL с открытым исходным кодом, эти два PERFORMоператора не мешают друг другу, и на выходе действительно получается «1 2 3 4 3». Поэтому поведение в таких случаях не только (возможно) удивительно, но и непереносимо. [152]

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

 ПЕРЕХОД 1 К ВЫПОЛНЕНИЮ ЭТИКЕТКА СТОП БЕГ . _ ЭТИКЕТКА . ПОКАЗАТЬ A , ЕСЛИ A < 3 , ДОБАВИТЬ 1 К ЭТИКЕТКЕ ВЫПОЛНЕНИЯ END-IF DISPLAY 'END' .                      

Можно было бы ожидать, что на выходе будет «1 2 3 END END END», и на самом деле именно это выдают некоторые компиляторы COBOL. Но другие компиляторы, такие как IBM COBOL, будут создавать код, который печатает «1 2 3 END END END END ...» и так далее, печатая «END» снова и снова в бесконечном цикле. Поскольку пространство для хранения адресов продолжения резервного копирования ограничено, резервные копии перезаписываются в ходе рекурсивных вызовов, и все, что можно восстановить, — это вернуться к DISPLAY 'END'. [152]

Заявления

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

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

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

ОЦЕНИТЬ ВЕРНО ТАКЖЕ желаемая скорость ТАКЖЕ текущая скорость ПРИ закрытой крышке ТАКЖЕ мин. скорость ЧЕРЕЗ максимальную скорость ТАКЖЕ МЕНЬШЕ , ЧЕМ желаемая скорость ВЫПОЛНИТЬ ускорение машины ПРИ закрытой крышке ТАКЖЕ мин. скорость ЧЕРЕЗ макс. скорость ТАКЖЕ БОЛЬШЕ , ЧЕМ желаемая -скорость ВЫПОЛНИТЬ замедление машины КОГДА крышка открыта ТАКЖЕ ЛЮБОЙ ТАКЖЕ НЕ НУЛЬ ВЫПОЛНИТЬ аварийную остановку КОГДА ДРУГИЕ ПРОДОЛЖИТЬ КОНЕЦ -ОЦЕНИТЬ                                           

Этот PERFORMоператор используется для определения циклов, которые выполняются до тех пор, пока условие не станет истинным (а не пока истинно, что более распространено в других языках). Он также используется для вызова процедур или диапазонов процедур (более подробную информацию см. в разделе «Процедуры»). CALLи INVOKEвызывать подпрограммы и методы соответственно. Имя подпрограммы/метода содержится в строке, которая может быть литералом или элементом данных. [154] Параметры можно передавать по ссылке , по содержимому (когда копия передается по ссылке) или по значению (но только при наличии прототипа ). [155]CANCEL выгружает подпрограммы из памяти. GO TOзаставляет программу перейти к указанной процедуре.

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

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

ввод/вывод

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

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

Манипуляция данными

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

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

Прекращение действия

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

*> Период терминатора («неявное завершение») IF недействительная запись IF no-more-records СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ ELSE ПРОЧИТАТЬ файл- записи AT END SET no-more-records TO TRUE .                *> Ограничители области («явное завершение») IF недопустимая запись IF no-more-records CONTINUE ELSE READ Record-file AT END SET no-more-records TO TRUE END-READ END-IF END-IF                   

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

ЕСЛИ x ДИСПЛЕЙ y . ДИСПЛЕЙ z .     

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

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

IF x IF y ПОКАЗАТЬ a ELSE ПОКАЗАТЬ b .        

В приведенном выше фрагменте   вместо оператора   ELSEиспользуется ассоциация с     оператором, что приводит к ошибке. До введения явных ограничителей области видимости для предотвращения их необходимо было     размещать после внутреннего . [159]IF yIF xELSE NEXT SENTENCEIF

Самомодифицирующийся код

Исходная спецификация COBOL (1959 г.) поддерживала печально известное     утверждение, для которого многие компиляторы создавали самомодифицирующийся код . и являются метками процедуры, а вместо этого означает   единственный     оператор в процедуре , выполняемый после такого оператора   . Многие компиляторы до сих пор поддерживают его, [160] , но в стандарте COBOL 1985 года он был признан устаревшим и удален в 2002 году . [161]ALTER X TO PROCEED TO YXYGO TOXALTERGO TO Y

Это ALTERзаявление было плохо воспринято, поскольку оно подрывало «локальность контекста» и затрудняло понимание общей логики программы. [162] Как писал в 1976 году автор учебника Дэниел Д. Маккракен , «тот, кто никогда раньше не видел программу, должен ознакомиться с ней как можно быстрее, иногда в условиях критического дефицита времени, потому что программа дала сбой… вид оператор GO TO в отдельном абзаце, сигнализирующий о существовании неизвестного количества операторов ALTER в неизвестных местах по всей программе, вселяет страх в сердце самого смелого программиста». [162]

Привет, мир

Программа « Привет, мир » на языке COBOL:

  ОТДЕЛЕНИЕ ИДЕНТИФИКАЦИИ . ПРОГРАММА-ID . Привет, мир . ПРОЦЕДУРНОЕ РАЗДЕЛЕНИЕ . ДИСПЛЕЙ «Привет, мир!» .           

Когда теперь знаменитый «Hello, World!» Пример программы на языке программирования C был впервые опубликован в 1978 году. Аналогичный пример программы COBOL для мэйнфреймов был бы отправлен через JCL , скорее всего, с использованием устройства чтения перфокарт и перфокарт на 80 столбцов. Листинг ниже с пустым полем DATA DIVISION был протестирован с использованием Linux и эмулятора System/370 Hercules под управлением MVS 3.8J. JCL, написанный в июле 2015 года, основан на учебных пособиях и примерах Hercules, размещенных Джеем Мозли. [163] В соответствии с программированием на языке COBOL той эпохи, HELLO, WORLD отображается заглавными буквами.

// COBUCLG JOB ( 001 ), 'COBOL BASE TEST' , 00010000 // CLASS = A , MSGCLASS = A , MSGLEVEL = ( 1 , 1 ) 00020000 // BASETEST EXEC COBUCLG 00030000 // COB . SYSIN DD * 00040000 00000 * ПРОВЕРКА БАЗОВОГО КОБОЛА INSTALL 00050000 01000 ИДЕНТИФИКАЦИОННОЕ ОТДЕЛЕНИЕ . _ 00060000 01100 ИДЕНТ. ПРОГРАММЫ . 'ПРИВЕТ' . 00070000 02000 ОТДЕЛ ЭКОЛОГИЧЕСКОЙ СРЕДЫ . 00080000 02100 РАЗДЕЛ КОНФИГУРАЦИИ . 00090000 02110 ИСТОЧНИК-КОМПЬЮТЕР . ГНУЛИНУКС . 00100000 02120 ОБЪЕКТ-КОМПЬЮТЕР . ГЕРКУЛЕС . 00110000 02200 СПЕЦИАЛЬНЫЕ НАЗВАНИЯ . 00120000 02210 КОНСОЛЬ КОНСОЛЬ . _ 00130000 03000 ОТДЕЛЕНИЕ ДАННЫХ . 00140000 04000 ПРОЦЕДУРНОЕ ОТДЕЛЕНИЕ . 00150000 04100 00 - ГЛАВНЫЙ . 00160000 04110 ОТОБРАЖЕНИЕ «HELLO, WORLD» НА CONSL . 00170000 04900 СТОП ПУСК . 00180000 // ЛКЭД . SYSLIB DD DSNAME = SYS1 . COBLIB , DISP = SHR 00190000 // DD DSNAME = SYS1 . LINKLIB , DISP = SHR 00200000 // ВПЕРЕД . SYSPRINT DD SYSOUT = A 00210000 // 00220000                                                     

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

 19.52.48 ЗАДАНИЕ 3 $HASP100 COBUCLG НА READER1 БАЗОВЫЙ ТЕСТ COBOL 19.52.48 ЗАДАНИЕ 3 IEF677I ВЫДАНО ПРЕДУПРЕЖДАЮЩЕЕ СООБЩЕНИЕ ДЛЯ ЗАДАНИЯ COBUCLG 19.52.48 JOB 3 $HASP373 COBUCLG НАЧАЛСЯ - 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 JOB 3 IEFACTRT — Имя шага Реткод программы Procstep 19.52.48 JOB 3 COBUCLG BASETEST COB IKFCBL00 RC= 0000 19.52.48 ЗАДАНИЕ 3 COBUCLG BASETEST LKED IEWL RC= 0000 19.52.48 JOB 3 +HELLO, WORLD 19.52.48 JOB 3 COBUCLG BASETEST GO PGM=*.DD RC= 0000 19.52.48 ЗАДАНИЕ 3 $HASP395 COBUCLG ЗАВЕРШЕНО

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

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

Прием

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

В 1970-х годах принятие парадигмы структурированного программирования становилось все более распространенным. Эдсгер Дейкстра , выдающийся ученый-компьютерщик, написал письмо редактору журнала Communications of ACM , опубликованного в 1975 году, под названием «Как мы говорим правду, которая может причинить вред?», в котором он критиковал COBOL и несколько других современных языков; отметив, что «использование COBOL калечит разум». [164]

В опубликованном несогласии с замечаниями Дейкстры учёный-компьютерщик Говард Э. Томпкинс заявил, что неструктурированный COBOL, как правило, «пишется программистами, которые никогда не имели возможности хорошо преподавать структурированный COBOL», утверждая, что проблема заключалась в первую очередь в обучении. [165]

Одной из причин спагетти-кода было GO TOзаявление. Однако попытки удалить GO TOs из кода COBOL привели к усложнению программ и снижению качества кода. [166] GO TO были в значительной степени заменены операторами PERFORMи процедурами, которые способствовали развитию модульного программирования [166] и давали легкий доступ к мощным средствам циклирования. Однако PERFORMего можно было использовать только с процедурами, поэтому тела циклов не располагались там, где они использовались, что затрудняло понимание программ. [167]

Программы COBOL были печально известны своей монолитностью и отсутствием модульности. [168] Код COBOL мог быть модульным только с помощью процедур, которые оказались неадекватными для больших систем. Было невозможно ограничить доступ к данным, то есть процедура могла получить доступ к любому элементу данных и изменить его. Более того, не было возможности передать параметры в процедуру, и это упущение Жан Самме считал самой большой ошибкой комитета. [169]

Еще одна сложность связана с возможностью выполнения PERFORM THRUопределенной последовательности процедур. Это означало, что управление могло перейти к любой процедуре и вернуться из нее, создавая запутанный поток управления и позволяя программисту нарушить правило «один вход — один выход» . [170]

Ситуация улучшилась по мере того, как в COBOL появилось больше функций. В COBOL-74 добавлены подпрограммы, дающие программистам возможность контролировать данные, к которым может получить доступ каждая часть программы. Затем в COBOL-85 были добавлены вложенные подпрограммы, что позволило программистам скрывать подпрограммы. [171] Дальнейший контроль над данными и кодом появился в 2002 году, когда были включены объектно-ориентированное программирование, определяемые пользователем функции и типы данных, определяемые пользователем.

Тем не менее, многие важные устаревшие программы COBOL используют неструктурированный код, который стал практически неподдерживаемым. Модифицировать даже простой участок кода может быть слишком рискованно и затратно, поскольку он может быть использован неизвестным образом из неизвестных мест. [172]

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

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

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

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

КОБОЛ: /кохбол/, сущ.

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

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

Синтаксис COBOL часто критикуют за его многословие. Сторонники говорят, что это было сделано для того, чтобы сделать код самодокументируемым , упрощая обслуживание программы. [178] COBOL также был задуман как простой для изучения и использования программистами, [179] но при этом он был удобен для чтения нетехническим персоналом, таким как менеджеры. [180] [181] [182] [183]

Стремление к читабельности привело к использованию похожего на английский синтаксиса и структурных элементов, таких как существительные, глаголы, предложения, разделы и подразделения. Тем не менее, к 1984 году сопровождающие программ COBOL с трудом справлялись с «непонятным» кодом [182], и основные изменения в COBOL-85 были призваны облегчить обслуживание. [92]

Жан Саммет, член комитета ближайшего окружения, отметила, что «не было предпринято особых попыток угодить профессиональным программистам; на самом деле люди, чей основной интерес — программирование, как правило, очень недовольны COBOL», что она объяснила многословным синтаксисом COBOL. [184]

Изоляция от сообщества информатики

Сообщество COBOL всегда было изолировано от сообщества компьютерных наук. Ни один ученый-компьютерщик не участвовал в разработке COBOL: все члены комитета были представителями торговли или правительства. Ученые-компьютерщики в то время больше интересовались такими областями, как численный анализ, физика и системное программирование, чем проблемами коммерческой обработки файлов, которые решала разработка COBOL. [185] Жан Саммет объяснил непопулярность COBOL первоначальной «снобской реакцией» из-за его неэлегантности, отсутствия влиятельных ученых-компьютерщиков, участвующих в процессе проектирования, и презрения к обработке бизнес-данных. [186] Спецификация COBOL использовала уникальную «нотацию» или метаязык для определения синтаксиса, а не новую форму Бэкуса-Наура , о которой комитет не знал. Это вызвало «жесткую» критику. [187] [188] [69]

Академический мир склонен считать COBOL многословным, неуклюжим и неэлегантным и пытается его игнорировать, хотя в мире, вероятно, больше программ COBOL и программистов, чем для FORTRAN, ALGOL и PL/I вместе взятых. По большей части только школы с непосредственной профессиональной целью проводят обучение COBOL.

Ричард Конвей и Дэвид Грис , 1973 г. [189]

Позже COBOL страдал от нехватки материалов, освещающих его; вводные книги появились только в 1963 году (в 1966 году Ричард Д. Ирвин опубликовал учебник по COBOL для колледжа). [190] К 1985 году в Библиотеке Конгресса было в два раза больше книг по FORTRAN и в четыре раза больше по BASIC, чем по COBOL . [128] Профессора университетов преподавали более современные, современные языки и методы вместо COBOL, который, как говорили, имел характер «профессиональной школы». [191] Дональд Нельсон, председатель комитета CODASYL COBOL, сказал в 1984 году, что «ученые ... ненавидят COBOL» и что выпускникам компьютерных наук «внушают ненависть к COBOL». [192]

К середине 1980-х годов в бизнес-сообществе также наблюдалась значительная снисходительность к COBOL со стороны пользователей других языков, например FORTRAN или ассемблера , подразумевая, что COBOL можно использовать только для решения несложных задач. [193]

В 2003 году COBOL использовался в 80% учебных программ по информационным системам в США, столько же, сколько C++ и Java . [194] Десять лет спустя опрос, проведенный Micro Focus , показал, что 20% университетских преподавателей считали COBOL устаревшим или мертвым, а 55% полагали, что их студенты считали COBOL устаревшим или мертвым. Тот же опрос также показал, что только 25% преподавателей включили программирование на COBOL в свою учебную программу, хотя 60% считали, что им следует его преподавать. [195]

Опасения по поводу процесса проектирования

Были высказаны сомнения относительно компетентности комитета по стандартам. Временно действующий член комитета Говард Бромберг заявил, что процесс разработки «незначительно контролируется» и что он «страдает от неоднородности персонала и… отсутствия талантов». [80] Жан Саммет и Джером Гарфанкель также отметили, что изменения, внесенные в одну редакцию стандарта, будут отменены в следующей, как из-за изменений в составе комитета по стандартизации, так и из-за объективных доказательств. [196]

Стандарты COBOL неоднократно страдали от задержек: COBOL-85 появился на пять лет позже, чем ожидалось, [197] COBOL 2002 опоздал на пять лет, [2] и COBOL 2014 опоздал на шесть лет. [100] [198] Чтобы бороться с задержками, комитет по стандартизации разрешил создание дополнительных дополнений, которые добавляли функции быстрее, чем при ожидании следующей версии стандарта. Однако некоторые члены комитета выразили обеспокоенность по поводу несовместимости реализаций и частых модификаций стандарта. [199]

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

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

PICTUREобъявления данных были включены в PL/I с небольшими изменениями.

COPYВозможности COBOL , хотя и считались «примитивными», [200] повлияли на разработку директив include . [128]

Акцент на переносимости и стандартизации означал, что программы, написанные на COBOL, могли быть переносимыми и способствовали распространению языка на широкий спектр аппаратных платформ и операционных систем. [201] Кроме того, четко определенная структура подразделений ограничивает определение внешних ссылок на Отдел окружающей среды, что, в частности, упрощает изменение платформы. [202]

Смотрите также

Примечания

  1. ^ Особое влияние на объектно-ориентированные функции COBOL 2002. [2] [3] [4]
  2. ^ Надгробие в настоящее время находится в Музее компьютерной истории . [63]
  3. ^ ab Читателя следует предупредить, что, хотя на исследование Gartner Group 1997 года повсеместно ссылаются знаменитая цитата «200 миллиардов строк COBOL», сам отчет найти трудно. [203] Более того, некоторые полагают, [204] что «единственное участие Gartner в этих цифрах» было исследование 1995 года [205] , в котором «предсказывалось, что исправление ошибки Y2K будет стоить 1 доллар за строку или 300 миллиардов долларов в общей сложности», что привело к неправильная интерпретация отчета.
  4. ^ Расширения, специфичные для конкретного поставщика, приводят к тому, что многие реализации имеют гораздо больше: одна реализация распознает более 1100 ключевых слов. [125]

Рекомендации

Цитаты

  1. ^ аб Саммет, Жан Э. (март 2000 г.). «Настоящие создатели Кобола». Программное обеспечение IEEE . 17 (2): 30–32. дои : 10.1109/52.841602. ISSN  1937-4194. Комитет ближнего действия усердно работал с июня 1959 года, но возникли большие трудности с тем, чтобы довольно большой комитет попытался создать язык программирования. В ноябре председатель комитета по малой дальности назначил шесть человек для разработки спецификаций на рассмотрение: Уильяма Селдена и Гертруду Тирни (IBM), Говарда Бромберга и Нормана Дисконта (RCA), а также Вернона Ривза и Джин Э. Саммет (Sylvania Electric Products). Мы работали в течение двух полных недель (включая несколько круглосуточных заседаний) в ноябре 1959 года и отправили предложенные спецификации в полный состав Комитета ближнего действия, который принял почти все из них. После некоторого редактирования (тем же шестью людьми) мы в декабре сдали спецификации в качестве окончательного отчета в Исполнительный комитет, который принял их в январе 1960 года. После некоторого дальнейшего редактирования Государственная типография выпустила Кобол 60. [.. .] [Грейс Хоппер] не участвовала в его работе, за исключением общего руководства, которое она давала своим сотрудникам, которые были непосредственными членами комитета. Таким образом, хотя ее косвенное влияние было очень важным, к сожалению, часто повторяющиеся утверждения о том, что «Грейс Хоппер разработала Кобол», или «Грейс Хоппер была соразработчиком Кобола», или «Грейс Хоппер — мать Кобола», просто неверны.
  2. ^ abc Сааде, Генри; Уоллес, Энн (октябрь 1995 г.). «КОБОЛ '97: Отчет о состоянии». Журнал доктора Добба . Архивировано из оригинала 22 апреля 2014 года . Проверено 21 апреля 2014 г.
  3. ^ аб Арранга, Эдмунд К.; Койл, Фрэнк П. (февраль 1998 г.). Объектно-ориентированный КОБОЛ. Издательство Кембриджского университета . п. 15. ISBN 978-0132611404. Стиль объектно-ориентированного языка COBOL отражает влияние Smalltalk и C++.
  4. ^ Арранга, Эдмунд К.; Койл, Фрэнк П. (март 1997 г.). «Кобол: восприятие и реальность». Компьютер . 30 (3): 127. дои : 10.1109/2.573683. ISSN  0018-9162.
  5. ^ Имаджо, Тецудзи; и другие. (сентябрь 2000 г.). COBOL Script: бизнес-ориентированный язык сценариев . Конференция по корпоративным распределенным объектным вычислениям. Макухари, Япония: IEEE. дои : 10.1109/EDOC.2000.882363. ISBN 0769508650.
  6. Хо, Винг Хонг (7 мая 2007 г.). «Введение в EGL» (PDF) . Группа программного обеспечения IBM. Архивировано из оригинала (PDF) 13 января 2019 года . Проверено 12 января 2019 г. .
  7. ^ Радин, Джордж (1978). Вексельблат, Ричард Л. (ред.). Ранняя история и характеристики PL/I . История языков программирования. Академическое издательство (опубликовано в 1981 г.). п. 572. дои : 10.1145/800025.1198410. ISBN 0127450408.
  8. ^ «Что такое PL/B — язык программирования для бизнеса?». sysmaker.com . Инфопро, ООО . Проверено 22 апреля 2022 г. ... преобразование в альтернативный, расширенный COBOL или в ANSI COBOL очень сложно, если вообще возможно.
  9. ^ abc Митчелл, Роберт Л. (4 октября 2006 г.). «Кобол: еще не умер». Компьютерный мир . Проверено 27 апреля 2014 г.
  10. Митчелл, Роберт Л. (14 марта 2012 г.). «Утечка мозгов: куда дальше пойдут системы Cobol». Компьютерный мир . Проверено 9 февраля 2015 г.
  11. ^ Энсменгер, Натан Л. (2009). Компьютерные мальчики берут верх: компьютеры, программисты и политика технических знаний. МТИ Пресс . п. 100. ИСБН 978-0262050937. LCCN  2009052638.
  12. ^ ISO/IEC JTC 1/SC 22/WG 4 2023.
  13. ^ Фергюсон, Эндрю. «История языков программирования». cs.brown.edu . Проверено 12 марта 2018 г.
  14. ^ «Общий бизнес-ориентированный язык» .
  15. ^ Грюнфельдт, Том. «Covid ускоряет миграцию банковских мейнфреймов в облако». Форбс .
  16. ^ Бейер 2009, с. 282.
  17. ^ Гюрер, Дениз (1 июня 2002 г.). «Женщины-новаторы в компьютерных науках». SIGCSE Bull . 34 (2): 175–180. дои : 10.1145/543812.543853. ISSN  0097-8418. S2CID  2577644.
  18. ^ Бейер 2009, стр. 281–282.
  19. ^ Саммет 1978a, с. 200.
  20. Флахайв, Пол (24 мая 2019 г.). «Как COBOL все еще поддерживает мировую экономику в 60 лет». Техасское общественное радио . Архивировано из оригинала 24 мая 2019 года . Проверено 19 июля 2019 г. (Грейс Хоппер) Код по прозвищу «Бабушка Кобол» был основан на некоторых из ее ранних работ. Она сказала, что, услышав слухи, один из ее сотрудников пошел и купил гранитное надгробие. «Он вырезал на нем слово COBOL. Затем он отправил его экспресс-почтой мистеру Филлипсу в Пентагон». По ее словам, розыгрыш над Чарльзом Филлипсом, руководителем проекта в министерстве обороны, привлек внимание сильных мира сего и стал поворотным моментом. COBOL впоследствии стал наиболее широко используемым и долговечным компьютерным языком в истории.
  21. ^ Бейер 2009, с. 283.
  22. ^ Бейер 2009, с. 284.
  23. ^ «Ранние заседания конференции по языкам систем данных». IEEE Анналы истории вычислений . 7 (4): 316–325. 1985. дои : 10.1109/MAHC.1985.10047. S2CID  35625728.
  24. ^ abcde Sammet 2004, с. 104.
  25. ^ Бейер 2009, с. 286.
  26. ^ аб Коннер 1984, с. ID/9.
  27. ^ Саммет 1978a, с. 201.
  28. ^ abcd Бемер 1971, с. 132.
  29. ^ Бейер 2009, с. 288.
  30. ^ Саммет 1978a, с. 203.
  31. ^ CODASYL 1969, § I.2.1.1.
  32. ^ Саммет 1978a, с. 204.
  33. ^ CODASYL 1969, § I.1.2.
  34. ^ Бейер 2009, с. 290.
  35. ^ Саммет, Жан (1978). «Ранняя история КОБОЛа». Уведомления ACM SIGPLAN . 13 (8): 121–161. дои : 10.1145/960118.808378. S2CID  10743643.
  36. ^ Саммет 1978a, с. 217.
  37. Адамс, Вики Портер (5 октября 1981 г.). «Капитан Грейс М. Хоппер: мать КОБОЛа». Инфомир . Том. 3, нет. 20. с. 33. ISSN  0199-6649.
  38. Беттс, Митч (6 января 1992 г.). «Грейс Хоппер, мать Кобола, умирает». Компьютерный мир . 26 (1): 14.
  39. ^ Лор, Стив (2008). Перейти к: История специалистов по математике, игроков в бридж, инженеров, шахматных волшебников, ученых-индивидуалистов и иконоборцев — программистов, сотворивших революцию в области программного обеспечения. Основные книги . п. 52. ИСБН 978-0786730766.
  40. ^ «Новаторский инженер-программист и со-разработчик Cobol». Ирландские Таймс .
  41. ^ аб Бейер 2009, с. 292.
  42. ^ Бемер 1971, с. 131.
  43. ^ Бейер 2009, с. 296.
  44. ^ Саммет 1978a, с. 221.
  45. ^ Бейер 2009, с. 291.
  46. ^ «Устная история капитана Грейс Хоппер» (PDF) . Музей истории компьютеров . Декабрь 1980 г. с. 37. Архивировано из оригинала (PDF) 25 декабря 2017 года . Проверено 28 июня 2014 г.
  47. ^ Саммет 1978a, с. 218.
  48. ^ Маркотти 1978a, с. 268.
  49. ^ Саммет 1978a, стр. 205–206.
  50. ^ ab Sammet 1978a, рисунок 8.
  51. ^ Саммет 1978a, стр. 230–231.
  52. ^ ISO/IEC JTC 1/SC 22/WG 4 2001, стр. 846.
  53. ^ Саммет 1978a, с. 220.
  54. ^ Саммет 1978a, с. 228.
  55. ^ Саммет 1978a, с. 210.
  56. ^ Бемер 1971, с. 132: Мы не можем найти ни одного человека, который бы признался, что придумал аббревиатуру «КОБОЛ» .
  57. ^ Саммет 1978a, с. 210: На следующий день название COBOL было окончательно согласовано как аббревиатура от COMmon Business Oriented Language. К сожалению, в моих записях не указано, кто сделал это предложение .
  58. Салливан, Патрисия (25 июня 2004 г.). «Пионер компьютеров Боб Бемер, 84 года». Вашингтон Пост . п. В06 . Проверено 28 июня 2014 г.
  59. ^ «ОТЧЕТ КОБОЛА — Интервью с Бобом Бемером — отцом КОБОЛа» . Архивировано из оригинала 2 апреля 2018 года.
  60. ^ «ОТЧЕТ КОБОЛА — Интервью с Бобом Бемером — отцом КОБОЛа» . Архивировано из оригинала 23 декабря 2003 года.
  61. ^ Бейер 2009, с. 293.
  62. ^ Бейер 2009, с. 294.
  63. ^ Надгробие КОБОЛ. Музей истории компьютеров. 1960 год . Проверено 29 июня 2014 г.
  64. ^ «История надгробия КОБОЛ» (PDF) . Отчет Компьютерного музея . 13 : 8–9. Лето 1985 года. Архивировано (PDF) из оригинала 3 апреля 2014 года . Проверено 29 июня 2014 г.
  65. ^ Бемер 1971, с. 130.
  66. ^ Бейер 2009, с. 289.
  67. ^ CODASYL 1969, § I.1.1.
  68. ^ Браун 1976, с. 47.
  69. ^ abc Bemer 1971, с. 133.
  70. ^ аб Бейер 2009, с. 297.
  71. Уильямс, Кэтлин Брум (10 ноября 2012 г.). Грейс Хоппер: Адмирал Киберморя. Издательство Военно-морского института США. ISBN 978-1612512655. ОКЛК  818867202.
  72. ^ Compaq Computer Corporation: Справочное руководство Compaq COBOL , номер заказа: AA–Q2G0F–TK, октябрь 2000 г., страница xviii; Fujitsu Corporation: Справочник по языку Net Cobol , версия 15, январь 2009 г.; Корпорация IBM: Справочник по языку Enterprise COBOL для z/OS , версия 4, выпуск 1, SC23-8528-00, декабрь 2007 г.
  73. Гарфанкель, Джером (11 ноября 1984 г.). «В защиту Кобола». Компьютерный мир . 18 (24): ИД/19.
  74. ^ Пратт, Терренс В. (1975). Языки программирования: проектирование и реализация . Энглвуд Клиффс, Нью-Джерси: Прентис Холл. стр. 361–362, 381–382. ISBN 0-13-730432-3.
  75. ^ аб Бемер 1971, с. 134.
  76. ^ Браун 1976, с. 48.
  77. ^ CODASYL 1969, § I.2.2.4.
  78. ^ CODASYL 1969, § I.2.3.
  79. ^ abcd Фоллет, Роберт Х.; Саммет, Жан Э. (2003). «Стандарты языков программирования» . В Ралстоне, Энтони; Рейли, Эдвин Д.; Хеммендингер, Дэвид (ред.). Энциклопедия информатики (4-е изд.). Уайли. п. 1467. ИСБН 978-0470864128.
  80. ^ аб Бейер 2009, с. 301.
  81. ^ Аб Браун 1976, с. 49.
  82. ^ Браун 1976, с. 52.
  83. Тейлор, Алан (2 августа 1972 г.). «Мало кто осознает растрачивание ресурсов местных школ для DP». Компьютерный мир . 6 (31): 11.
  84. ^ Трианс, Дж. М. (1974). Программирование на COBOL: курс двенадцати телевизионных лекций. Издательство Манчестерского университета. п. 87. ИСБН 978-0719005923.
  85. ^ Кляйн 2010, с. 16.
  86. ^ Бэрд, Джордж Н.; Оливер, Пол (май 1977 г.). «Стандарт 1974 года (X3.23–1974)». Стандарты языков программирования. Кому они нужны? (PDF) (Отчет). Департамент ВМФ . стр. 19–21. Архивировано (PDF) из оригинала 7 января 2014 года . Проверено 7 января 2014 г.
  87. ^ Каллетон, Джон Р. младший (23 июля 1975 г.). «Неравномерная доступность — проблема…» Computerworld . 9 (30): 17.
  88. Симмонс, Уильямс Б. (18 июня 1975 г.). «Действительно ли автор отчетов Кобола промахивается?». Компьютерный мир . 9 (25): 20.
  89. Шор, Рита (26 января 1981 г.). «Пользователь угрожает судебным иском из-за Ansi Cobol-80». Компьютерный мир . 15 (4): 1, 8.
  90. Шор, Рита (26 октября 1981 г.). «DPMA выступает против проекта Кобола». Компьютерный мир . 15 (43): 1–2.
  91. ^ abc Галлант, Джон (16 сентября 1985 г.). «Пересмотренный стандарт Кобола может быть готов в конце 1985 года». Компьютерный мир . 19 (37): 1, 8.
  92. ^ ab «Эксперт обращается к стандарту Cobol 85» . Компьютерный мир . 19 (37): 41, 48. 16 сентября 1985 г.
  93. Пол, Лоис (15 марта 1982 г.). «Ответы на Кобол-80 исключительно отрицательные». Компьютерный мир . 16 (11): 1, 5.
  94. Пол, Лоис (25 апреля 1983 г.). «Исследование выявило мало проблем при переходе на Cobol-8X». Компьютерный мир . 17 (17): 1, 6.
  95. Гиллин, Пол (19 ноября 1984 г.). «Пользователи DEC получают преимущество при внедрении Cobol-80». Компьютерный мир . 18 (47): 1, 6.
  96. ^ Корпоративные серверы ClearPath (апрель 2015 г.). «Справочное руководство по программированию COBOL ANSI-85» (PDF) . public.support.unisys.com . Унисис . Проверено 29 апреля 2022 г.
  97. ^ Гарфанкель 1987, с. 150.
  98. ^ Рой, МК; Дастидар, Д. Призрак (1 июня 1989 г.). «Особенности КОБОЛ-85». Программирование на COBOL: проблемы и решения (2-е изд.). Макгроу-Хилл Образование. стр. 438–451. ISBN 978-0074603185.
  99. Робинсон, Брайан (9 июля 2009 г.). «Кобол остается старым резервом в агентствах, несмотря на свой возраст». ФКВ . Медиа-группа государственного сектора. Архивировано из оригинала 27 апреля 2014 года . Проверено 26 апреля 2014 г.
  100. ^ ab «Стандарты COBOL». Микро Фокус. Архивировано из оригинала 31 марта 2004 года . Проверено 2 сентября 2014 г.
  101. ^ «NetCOBOL для .Net». netcobol.com . GTSoftware. 2013. Архивировано из оригинала 8 июля 2014 года . Проверено 29 января 2014 г.
  102. ^ «Список функций Codasyl Cobol» . Компьютерный мир . 18 (37): ИД/28. 10 сентября 1984 года . Проверено 8 июня 2014 г.
  103. ^ ISO/IEC JTC 1/SC 22/WG 4 2001, Приложение F.
  104. ^ Кляйн 2010, с. 21.
  105. ^ ab "JTC1/SC22/WG4 – КОБОЛ". ИСО. 30 июня 2010 года. Архивировано из оригинала 14 февраля 2014 года . Проверено 27 апреля 2014 г.
  106. ^ Биллман, Джон; Клинк, Хуиб (27 февраля 2008 г.). «Мысли о будущем стандартизации COBOL» (PDF) . Архивировано из оригинала (PDF) 11 июля 2009 года . Проверено 14 августа 2014 г.
  107. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, Приложение E.
  108. Шрикер, Дон (2 декабря 1998 г.). «J4: Стандартизация COBOL». Микро Фокус. Архивировано из оригинала 24 февраля 1999 года . Проверено 12 июля 2014 г.
  109. ^ abc ISO/IEC JTC 1/SC 22/WG 4 2023, § E.3.1.
  110. ^ abcde ISO/IEC JTC 1/SC 22/WG 4 2023, § E.3.2.
  111. ^ ISO/IEC JTC 1/SC 22/WG 4 2023, § 12.4.4.9.
  112. ^ ISO/IEC JTC 1/SC 22/WG 4 2023, § 8.7.2.
  113. ^ Кизиор, Рональд Дж.; Карр, Дональд; Халперн, Пол. «Есть ли будущее у COBOL?» (PDF) . Материалы конференции по образованию в области информационных систем 2000 . 17 (126). Архивировано из оригинала (PDF) 17 августа 2016 года . Проверено 30 сентября 2012 г.
  114. Уайт, Дуг (12 июля 1998 г.). «Часто задаваемые вопросы (FAQ) о проблеме 2000 года». homepages.wmich.edu . Архивировано из оригинала 7 ноября 2021 года . Проверено 29 апреля 2022 г. Таким образом, основной проблемой Y2K является проблема неверных результатов при проведении математических расчетов дат.
  115. ^ Каппельман, Леон А. (2000). «Некоторые стратегические благословения 2000 года». Программное обеспечение IEEE . 17 (2): 42–46. дои : 10.1109/52.841605.
  116. ^ Карр и Кизиор 2003, с. 16.
  117. ^ Карр и Кизиор 2003, с. 10.
  118. ^ «Утечка мозгов Кобола: результаты опроса» . Компьютерный мир . 14 марта 2012 года . Проверено 27 апреля 2014 г.
  119. Владелец, Дэвид А. (25 мая 2016 г.). «Федеральным агентствам необходимо решить проблему старения устаревших систем» (PDF) . Счетная палата правительства . п. 18. Архивировано из оригинала (PDF) 15 июня 2016 года . Проверено 19 июля 2019 г. Несколько агентств, таких как Министерство сельского хозяйства (USDA), DHS, HHS, Министерство юстиции, Казначейство и VA, сообщили об использовании общего бизнес-ориентированного языка (COBOL) — языка программирования, разработанного в конце 1950-х и начале 1960-х годов — для программирования своего наследия. системы. Широко известно, что агентствам необходимо переходить на более современные и удобные в сопровождении языки, если это целесообразно и осуществимо.
  120. ^ "КОБОЛ-блюз" . Рейтер . Проверено 8 апреля 2020 г.
  121. ^ Теплицки, Фил (25 октября 2019 г.). «Устранение пробела в навыках программирования на COBOL». Журнал IBM Systems, IBM Z. Архивировано из оригинала 13 апреля 2020 года . Проверено 11 июня 2020 г.
  122. Ли, Алисия (8 апреля 2020 г.). «Срочно требуются люди, знающие компьютерный язык полувековой давности, чтобы штаты могли обрабатывать заявки на пособие по безработице». CNN . Проверено 8 апреля 2020 г.
  123. ^ Лонг, Хизер; Штейн, Джефф; Рейн, Лиза; Ромм, Тони (17 апреля 2020 г.). «Проверке стимулов и другим мерам по оказанию помощи в связи с коронавирусом препятствуют устаревшие технологии и непростая политика правительства». Вашингтон Пост . Проверено 19 апреля 2020 г.
  124. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.9.
  125. ^ «Таблица зарезервированных слов» . Micro Focus Visual COBOL 2.2 Справочник по языку COBOL . Микро Фокус . Проверено 3 марта 2014 г.
  126. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.3.1.2.
  127. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.3.2.
  128. ^ abcd Шнейдерман 1985, с. 349.
  129. ^ Маккракен 1976, стр. 2, 6–9.
  130. ^ ab ISO/IEC JTC 1/SC 22/WG 4 2001, § F.2.
  131. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § D.18.2.
  132. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § D.18.
  133. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, стр. 108.
  134. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, стр. 896.
  135. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § D.2.1.
  136. ^ «Файловые организации». Обработка файлов . Микро Фокус. 1998. Архивировано из оригинала 4 марта 2016 года . Проверено 27 июня 2014 г.
  137. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.5.1.2.
  138. ^ Катлер 2014, Приложение А.
  139. ^ Хаббелл, Тейн (1999). Сэмс: Изучите COBOL за 24 часа . Издательство САМС . п. 40. ИСБН 978-0672314537. LCCN  98087215.
  140. ^ Маккракен и Голден 1988, § 19.9.
  141. ^ Катлер 2014, § 5.8.5.
  142. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.5.2.
  143. ^ ab ISO/IEC JTC 1/SC 22/WG 4 2014, § 14.9.24.
  144. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 14.9.35.
  145. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 13.18.40.
  146. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 13.18.60.3.
  147. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, стр. 855.
  148. ^ ab McCracken 1976, с. 338.
  149. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 14.4.
  150. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 14.6.3.
  151. ^ Филд, Джон; Рамалингам, Г. (сентябрь 1999 г.). Определение процедурной структуры в программах на языке Cobol (PDF) . ПАСТА '99. дои : 10.1145/381788.316163. ISBN 1581131372. Архивировано (PDF) из оригинала 24 декабря 2010 года.
  152. ^ abc Верман, Нильс; Верховен, Эрнст-Ян (ноябрь 2006 г.). «Обнаружение минных полей Кобол» (PDF) . Программное обеспечение: практика и опыт . 36 (14). дои :10.1002/spe.v36:14. S2CID  18619757. Архивировано из оригинала (PDF) 6 марта 2007 года.
  153. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 14.9.
  154. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, §§ 14.9.4, 14.9.22.
  155. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § D.6.5.2.2.
  156. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 14.9.13.1.
  157. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, §14.9.35.1.
  158. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, стр. 899.
  159. ^ ab McCracken & Golden 1988, § 8.4.
  160. ^ Примеры поддержки компилятора ALTERможно увидеть ниже:
    • Тиффин, Брайан (18 сентября 2013 г.). "Сентябрь 2013". ГНУ Кобол . Архивировано из оригинала 5 мая 2014 года . Проверено 5 января 2014 г.
    • «Заявление ALTER». Micro Focus Visual COBOL 2.2 для Visual Studio 2013 Справочник по языку COBOL . Микро Фокус . Проверено 5 января 2014 г.
    • «Заявление ALTER (Ядро)» (PDF) . Справочное руководство COBOL85 . Фуджицу. Ноябрь 1996 г. с. 555. Архивировано из оригинала (PDF) 6 января 2014 года . Проверено 5 января 2014 г.
    • «Заявление АЛЬТЕР». Справочник по языку Enterprise COBOL для z/OS . ИБМ. Июнь 2013 . Проверено 5 января 2014 г.
  161. ^ ISO/IEC JTC 1/SC 22/WG 4 2001, § F.1.
  162. ^ ab McCracken 1976, с. 355.
  163. Мозли, Джей (17 января 2015 г.). «Компилятор COBOL от MVT» . Проверено 19 июля 2015 г.
  164. ^ Дейкстра, Эдсгер В. (18 июня 1975 г.). «Как нам говорить правду, которая может ранить?». Техасский университет в Остине. EWD498. Архивировано из оригинала 2 мая 2017 года . Проверено 29 августа 2007 г.
  165. ^ Томпкинс, HE (1983). «В защиту преподавания структурированного COBOL как информатики». Уведомления ACM SIGPLAN . 18 (4): 86–94. дои : 10.1145/948176.948186 . S2CID  33803213.
  166. ^ ab Riehle 1992, с. 125.
  167. ^ Шнейдерман 1985, стр. 349–350.
  168. Кофлан, Майкл (16 марта 2014 г.). Начало COBOL для программистов. Апресс. п. 4. ISBN 978-1430262534. Проверено 13 августа 2014 г.
  169. ^ Саммет 1978b, с. 258.
  170. ^ Риле 1992, с. 126.
  171. ^ Риле 1992, с. 127.
  172. ^ «COBOL и устаревший код как системный риск | голый капитализм» . 19 июля 2016 года . Проверено 23 июля 2016 г.
  173. ^ Ламмель, Ральф; Верхуф, Крис (ноябрь – декабрь 2001 г.). «Решение проблемы 500 языков» (PDF) . Программное обеспечение IEEE . 18 (6): 79. дои : 10.1109/52.965809. hdl : 1871/9853. Архивировано из оригинала (PDF) 19 августа 2014 года.
  174. ^ Хокинс, Ти Джей; Харанди, Монтана (апрель 1979 г.). «На пути к более портативному COBOL». Компьютерный журнал . 22 (4): 290. doi : 10.1093/comjnl/22.4.290 .
  175. ^ Гарфанкель 1987, с. 11.
  176. ^ Гарфанкель 1987, с. 15.
  177. ^ Раймонд, Эрик С. (1 октября 2004 г.). «КОБОЛ». Файл жаргона, версия 4.4.8 . Архивировано из оригинала 30 августа 2014 года . Проверено 13 декабря 2014 г.
  178. ^ Браун 1976, с. 53.
  179. ^ CODASYL 1969, § II.1.1.
  180. ^ Шнейдерман 1985, с. 350.
  181. ^ Саммет 1961, с. 381.
  182. ^ аб Коннер 1984, с. ID/10.
  183. ^ Маркотти 1978a, с. 263.
  184. ^ Коннер 1984, с. ID/14.
  185. ^ Саммет 1961, с. 380.
  186. ^ Маркотти 1978a, с. 266.
  187. ^ Саммет 1978b, с. 255.
  188. ^ Шнейдерман 1985, стр. 348–349.
  189. ^ Конвей, Ричард; Грис, Дэвид (1973). Введение в программирование: структурированный подход с использованием PL/1 и PL/C . Кембридж, Массачусетс: Издательство Winthrop. п. 341. ИСБН 0-87626-405-4.
  190. ^ «Логика и программирование COBOL, третье издание 1974 г.» . Архивировано из оригинала 5 марта 2016 года . Проверено 25 февраля 2016 г. .
  191. ^ Шнейдерман 1985, с. 351.
  192. ^ "Интервью: защитник Кобола" . Компьютерный мир . 18 (37): ИД/29 – ИД/32. 10 сентября 1984 года . Проверено 8 июня 2014 г.
  193. ^ Пратт, Терренс В.; Зелковиц, Марвин В. (1984). Языки программирования: проектирование и реализация (2-е изд.). Энглвуд Клиффс, Нью-Джерси: Прентис Холл. ISBN 0136780121.
  194. ^ Карр и Кизиор 2003, с. 13.
  195. ^ «Академическому сообществу нужна дополнительная поддержка, чтобы решить проблему дефицита ИТ-навыков» (пресс-релиз). Микро Фокус. 7 марта 2013 года . Проверено 4 августа 2014 г.
  196. ^ Саммет, Жан; Гарфанкель, Джером (октябрь 1985 г.). «Краткое описание изменений в COBOL, 1960–1985». Анналы истории вычислительной техники . 7 (4): 342. doi :10.1109/MAHC.1985.10033. S2CID  17940092.
  197. ^ Кук, Маргарет М. (июнь 1978 г.). Гош, Шакти П.; Лю, Леонард Ю. (ред.). База данных для COBOL 80 (PDF) . 1978 Национальная компьютерная конференция. Анахайм, Калифорния: AFIPS Press. стр. 1107–1112. дои : 10.1109/AFIPS.1978.63. LCCN  55-44701 . Проверено 2 сентября 2014 г. Самая ранняя дата разработки и утверждения нового стандарта COBOL — 1980 год [...].
  198. ^ «Решения заседания WG4 24 – 26–28 июня 2003 г., Лас-Вегас, Невада, США» . 11 июля 2003 г. с. 1. Архивировано из оригинала (doc) 8 марта 2016 года . Проверено 29 июня 2014 г. пересмотренная версия стандарта COBOL от июня 2008 г.
  199. Бэбкок, Чарльз (14 июля 1986 г.). «Снятые со шкуры стандартные надстройки Cobol». Компьютерный мир . 20 (28): 1, 12.
  200. ^ Маркотти 1978b, с. 274.
  201. ^ Это можно увидеть в:
    • «Визуальный КОБОЛ». IBM PartnerWorld . ИБМ . 21 августа 2013 года. Архивировано из оригинала 12 июля 2014 года . Проверено 5 февраля 2014 г. Micro Focus Visual COBOL обеспечивает разработку и развертывание COBOL следующего поколения для Linux x86-64, Linux для System z, AIX, HP/UX, Solaris и Windows.
    • «Семейство компиляторов COBOL». IBM.com . ИБМ . Архивировано из оригинала 23 февраля 2014 года . Проверено 5 февраля 2014 г.
    • Тиффин, Брайан (4 января 2014 г.). «Какие платформы поддерживаются GNU Cobol?». Архивировано из оригинала 14 декабря 2013 года . Проверено 5 февраля 2014 г.
  202. ^ Кофлан, Майкл (2002). «Введение в КОБОЛ». Архивировано из оригинала 5 марта 2023 года.
  203. ^ "Исследования группы Gartner". 1997-2001.state.gov . Офис управления программой 2000 года. 2000 . Проверено 23 апреля 2022 г.
  204. Энгельманн, Виктор (8 апреля 2021 г.). «Проверка фактов о COBOL». cobsolete.de . КОБСОЛЕТ . Проверено 23 апреля 2022 г.
  205. ^ «Что будет в будущем» . ИТ-директор . Международная группа данных. 15 декабря 1995 г. - 1 января 1996 г. с. 82.

Источники

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