Это хорошая статья. Для получения дополнительной информации нажмите здесь.
Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

История и спецификация [ править ]

Фон [ править ]

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

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

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

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

COBOL 60 [ править ]

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

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

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

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

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

Комитет в основном исследовал языки программирования FLOW-MATIC , AIMACO и COMTRAN . [21] [30] Язык FLOW-MATIC имел особое влияние, потому что он был реализован и потому что AIMACO был его производным с незначительными изменениями. [31] [32] Изобретатель FLOW-MATIC, Грейс Хоппер, также работала техническим советником комитета. [25] Основным вкладом FLOW-MATIC в COBOL стали длинные имена переменных, английские слова для команд и разделение описаний данных и инструкций. [33] Хоппера иногда называют «матерью COBOL» или «бабушкой COBOL», [34] [35][36] хотя Жан Саммет , ведущий дизайнер COBOL, заявил, что Хоппер «не был матерью, создателем или разработчиком Cobol». [37] [1]

Язык COMTRAN компании IBM, изобретенный Бобом Бемером , рассматривался как конкурент FLOW-MATIC [38] [39] комитетом по краткосрочным вопросам, состоящим из коллег Грейс Хоппер. [40] Некоторые из его функций не были включены в COBOL, чтобы не выглядело так, будто IBM доминировала в процессе проектирования, [23] и Жан Саммет сказал в 1981 году, что со стороны какого-то комитета было «сильное предубеждение против IBM». члены (включая ее самого). [41]В одном случае, после того, как Рой Голдфингер, автор руководства COMTRAN и член комитета среднего уровня, присутствовал на заседании подкомитета, чтобы поддержать его язык и поощрить использование алгебраических выражений, Грейс Хоппер отправила меморандум в комитет краткосрочного сотрудничества, повторяя слова Сперри Рэнд. усилия по созданию языка на основе английского. [42] В 1980 году Грейс Хоппер отметила, что «COBOL 60 на 95% состоит из FLOW-MATIC» и что COMTRAN оказал «чрезвычайно небольшое» влияние. Более того, она сказала, что будет утверждать, что на работу повлияли как FLOW-MATIC, так и COMTRAN, только для того, чтобы «сделать других счастливыми [чтобы они] не пытались нас вырубить». [43] Функции из COMTRAN включены в COBOL включены формулы, [44]PICTURE положение ,[45]улучшенная IFинструкция, которая устраняет необходимость в GO TO и более надежная система управления файлами. [38]

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

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

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

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

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

Говард Бромберг о том, как он купил надгробную плиту COBOL [60]

Вскоре стало очевидно, что комитет слишком велик, чтобы быстро добиться дальнейшего прогресса. Разочарованный Говард Бромберг купил надгробие за 15 долларов с выгравированным на нем «КОБОЛ» и отправил его Чарльзу Филлипсу, чтобы продемонстрировать свое недовольство. [b] [60] [62] Подкомитет был сформирован для анализа существующих языков и состоял из шести человек: [21] [63]

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

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

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

В течение 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. [66]

Тем временем RCA и Сперри Рэнд работали над созданием компиляторов COBOL. Первая программа COBOL была запущена 17 августа на RCA 501. [67] 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 № F28-8013, авторское право принадлежит IBM в 1959 году; ФАКТ, DSI 27A5260-2760, авторское право 1960 г. защищено Minneapolis-Honeywell.

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

COBOL-61 - COBOL-65 [ править ]

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

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

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

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

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

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

COBOL-68 [ править ]

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

COBOL-74 [ править ]

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

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

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

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

КОБОЛ-85 [ править ]

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

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

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

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

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

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

Шестьдесят функций были изменены или признаны устаревшими, и многие [ quantify ] были добавлены, например: [92] [93]

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

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

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

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

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

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

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

Было много других новых функций, многие из которых были в журнале разработки CODASYL COBOL с 1978 года и упустили возможность быть включенными в COBOL-85. [97] Эти другие функции включали: [98] [99]

  • Код в произвольной форме
  • Пользовательские функции
  • Рекурсия
  • Locale основанная обработка
  • Поддержка расширенных наборов символов, таких как Unicode
  • Типы данных с плавающей запятой и двоичные данные (до этого двоичные элементы усекались на основе спецификации их объявления base-10 )
  • Переносные арифметические результаты
  • Битовые и логические типы данных
  • Указатели и синтаксис для получения и освобождения памяти
  • SCREEN SECTIONДля текстовых пользовательских интерфейсов
  • VALIDATEобъект
  • Улучшенная совместимость с другими языками программирования и средами фреймворка, такими как .NET и Java .

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

COBOL 2014 [ править ]

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

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

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

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

Наследие [ править ]

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

Ближе к концу 20-го века проблема 2000 года (Y2K) была в центре внимания значительных усилий по программированию COBOL, иногда теми же программистами, которые проектировали системы несколько десятилетий назад. Конкретный уровень усилий, необходимых для исправления кода COBOL, был приписан [ кем? ] к большому количеству ориентированного на бизнес COBOL, поскольку бизнес-приложения активно используют даты, и к полям данных фиксированной длины. После усилий по очистке этих программ для 2000 года, опрос 2003 года показал, что многие из них продолжают использоваться. [105]По словам авторов, данные опроса предполагают «постепенное снижение важности Cobol в разработке приложений в течение [следующих] 10 лет, если ... не будет внедрена интеграция с другими языками и технологиями». [106]

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

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

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

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

Особенности [ править ]

Синтаксис [ править ]

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

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

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

Метаязык [ править ]

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

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

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

ДОБАВИТЬ  1 В  x ДОБАВИТЬ  1 ,  a ,  b  В  x  ОКРУГЛЕННЫЙ ,  y ,  z  ОКРУГЛЕННЫЙДОБАВИТЬ  a ,  b  В  c  НА  ОТОБРАЖЕНИИ ОШИБКИ РАЗМЕРА  "Ошибка" КОНЕЦ-ДОБАВЛЕНИЕ  ДОБАВИТЬ  в  TO  б  НЕ  SIZE  ERROR DISPLAY "Нет ошибки" ON SIZE ERROR DISPLAY "Error"       

Формат кода [ править ]

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

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

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

Отдел идентификации [ править ]

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

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

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

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

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

Отдел окружающей среды [ править ]

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

Файлы [ править ]

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

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

Отдел данных [ править ]

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

Агрегированные данные [ править ]

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

  01 какая-то запись .  *> Элемент групповой записи 05 num PIC 9 (10) . *> Элементарный пункт 05 дата . *> Совокупные запись пункт (подпункт) группа 10 год PIC 9 (4) . *> Элементарный пункт 10 PIC 99 в месяц . *> Элементарный пункт 10 дня PIC 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разделе , редко используется [127] и, примерно, в 1988 году, обычно встречается в старых программах. Его способность игнорировать данные иерархической и логической структуры означала, что его использование не рекомендовалось, и многие установки запрещали его использование. [128]

  01 запись о клиенте . 05 cust-key PIC X (10) . 05 cust-name . 10 cust-first-name PIC X (30) . 10 cust-last-name PIC X (30) . 05 cust-dob ПИК 9 (8) . 05 cust-balance PIC 9 (7) V99 . 66 cust-personal-details ПЕРЕИМЕНОВАТЬ cust-name THRU cust-dob . 66 cust-all-details ПЕРЕИМЕНОВАТЬ cust-name THRU cust-balance .                               

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

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

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

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

Типы данных [ править ]

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

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

Пункт PICTURE [ править ]

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

Пункт USAGE [ править ]

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

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

Автор отчета [ править ]

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

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

  FD  отчет ожидания  ОТЧЕТ  продаж-отчет .

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

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

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

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

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

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

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

Отдел процедур [ править ]

Процедуры [ править ]

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

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

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

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

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

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

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

LABEL1 .  DISPLAY '1'  ВЫПОЛНИТЬ  LABEL2  THRU  LABEL3  СТОП  ПУСК . LABEL2 .  DISPLAY '2'  ВЫПОЛНИТЬ  LABEL3  THRU  LABEL4 . LABEL3 .  ДИСПЛЕЙ «3» . LABEL4 .  ДИСПЛЕЙ «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». Поэтому поведение в таких случаях не только (возможно) удивительно, но еще и непереносимо. [140]

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

 MOVE  1 К  PERFORM ПОЛЕ СТОП RUN . ЭТИКЕТКА . DISPLAY IF < 3 ADD 1 TO ВЫПОЛНИТЬ LABEL END-IF DISPLAY 'END' .                    

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

Заявления [ править ]

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

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

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

EVALUATE  ИСТИНЫ  ТАКЖЕ  желательно скорость  ТАКЖЕ  вольта-скорость ,  КОГДА  крышки закрыты  ТАКЖЕ  мин Скорость  THRU  макс скорости  ТАКЖЕ  МЕНЬШЕ  ЧЕМ  желаемой скорость  PERFORM  скорости вверх-машины  КОГДА  крышки закрыта  ТАКЖЕ  мин скорость  THRU  макс скорости  ТАКЖЕ  БОЛЕЕ  ЧЕМ  желательно -speed  PERFORM  slow-down-machine,  КОГДА  открыта крышка,  ТАКЖЕ  ЛЮБЫЕ  ТАКЖЕ  НЕ  НУЛЕВОЙ ВЫПОЛНИТЬ аварийный останов, КОГДА ДРУГОЕ ПРОДОЛЖИТЬ       КОНЕЧНАЯ ОЦЕНКА

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

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

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

I / O [ править ]

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

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

Обработка данных [ править ]

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

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

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

Прекращение действия [ править ]

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

*> Период терминатора ("неявное завершение") ЕСЛИ  недопустимая-запись  ЕСЛИ  больше-записей нет  СЛЕДУЮЩЕЕ  СООБЩЕНИЕ ЕЩЕ ПРОЧИТАТЬ файл-записи В КОНЦЕ УСТАНОВИТЬ больше-записей В ИСТИНА .           *> Терминаторы области действия ("явное завершение") ЕСЛИ  недопустимая-запись  ЕСЛИ  больше-записей нет  ПРОДОЛЖИТЬ ИНАЧЕ ПРОЧИТАТЬ файл-запись В КОНЕЦ УСТАНОВИТЬ больше-записей НА ИСТИНА КОНЕЦ-ЧТЕНИЕ END-IF END-IF               

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

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

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

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

IF  х  IF  у  DISPLAY  ELSE DISPLAY б .   

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

Самомодифицирующийся код [ править ]

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

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

Привет, мир [ править ]

Программа " Hello, world " на COBOL:

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

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

// COBUCLG  РАБОТА  ( 001 ), 'COBOL БАЗА ТЕСТ' ,  00010000 //  КЛАСС = , MSGCLASS = , MSGLEVEL = ( 1 , 1 ) 00020000 // BASETEST ВЫПЛН COBUCLG 00030000 // ХОБ . SYSIN DD * 00040000 00000 * АТТЕСТАЦИЯ OF BASE - COBOL УСТАНОВИТЬ 00050000 01000 ОПОЗНАВАТЕЛЬНОГО DIVISION              .  00060000 01100 ИД ПРОГРАММЫ .  «ПРИВЕТ» .  00070000 02000 ЭКОЛОГИЧЕСКОЕ  ОТДЕЛЕНИЕ .  00080000 02100 РАЗДЕЛ КОНФИГУРАЦИИ  . 00090000 02110 ИСТОЧНИК-КОМПЬЮТЕР . GNULINUX . 00100000 02120 ОБЪЕКТ-КОМПЬЮТЕР . ГЕРКУЛЕС . 00110000 02200 СПЕЦИАЛЬНЫЕ НАИМЕНОВАНИЯ . 00120000 02210 КОНСОЛЬ IS CONSL . 00130000 03000 ОТДЕЛЕНИЕ ДАННЫХ .           00140000 04000 ПРОЦЕДУРА  ОТДЕЛЕНИЯ .  00150000 04100 00 - ГЛАВНАЯ .  00160000 04110 DISPLAY 'ПРИВЕТ, МИР'  НА  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 JOB 3 $ HASP100 COBUCLG НА READER1 COBOL BASE TEST 19.52.48 ВЫПУЩЕНО ПРЕДУПРЕЖДАЮЩИЕ СООБЩЕНИЯ ДЛЯ ЗАДАНИЯ 3 IEF677I ДЛЯ ЗАДАНИЯ COBUCLG 19.52.48 ЗАДАНИЕ 3 $ HASP373 COBUCLG ЗАПУЩЕНО - НАЧАЛО 1 - КЛАСС A - SYS BSP1 19.52.48 ОТСУТСТВУЕТ ЗАЯВЛЕНИЕ DD ЗАЯВКИ 3 IEC130I SYSPUNCH 19.52.48 ОТСУТСТВУЕТ ЗАЯВЛЕНИЕ DD IEC130I SYSLIB JOB 3 19.52.48 ОТСУТСТВУЕТ ЗАЯВЛЕНИЕ DD ЗАЯВКИ 3 IEC130I SYSPUNCH 19.52.48 JOB 3 IEFACTRT - Реткод программы Procstep имени шага 19.52.48 JOB 3 COBUCLG BASETEST COB IKFCBL00 RC = 0000 19.52.48 JOB 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-х годах принятие парадигмы структурированного программирования становилось все более распространенным. Эдсгер Дейкстра , выдающийся ученый-компьютерщик, написал письмо редактору журнала « Коммуникации ACM» , опубликованное в 1975 году, под названием «Как мы говорим правду, которая может навредить?», В котором он критиковал COBOL и несколько других современных языков; отмечая, что «использование COBOL калечит разум». [152] В опубликованном несогласии с замечаниями Дейкстры, компьютерный ученый Ховард Э. Томпкинс утверждал, что неструктурированный COBOL, как правило, «написан программистами, которые никогда не имели преимуществ структурированного COBOL, преподаваемого хорошо»,утверждая, что проблема заключалась прежде всего в обучении.[153]

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

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

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

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

Проблемы совместимости [ править ]

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

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

Подробный синтаксис [ править ]

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

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

Синтаксис COBOL часто критиковали за многословие. Сторонники говорят, что это было сделано для того, чтобы сделать код самодокументированным , что упростило бы обслуживание программы. [166] COBOL также должен был быть простым для изучения и использования программистами, [167] при этом оставаясь доступным для чтения для нетехнического персонала, такого как менеджеры. [168] [169] [170] [171] Стремление к удобочитаемости привело к использованию синтаксиса и структурных элементов, похожих на английский, таких как существительные, глаголы, придаточные предложения, предложения, разделы и деления. Однако к 1984 году разработчики программ COBOL изо всех сил пытались справиться с "непонятным" кодом [170], и основные изменения в COBOL-85 были внесены, чтобы облегчить обслуживание. [88]

Джин Саммет, член краткосрочного комитета, отметила, что «мало попыток было сделано для обслуживания профессионального программиста, на самом деле люди, чей основной интерес - программирование, как правило, очень недовольны COBOL», что она приписывала многословному синтаксису COBOL. [172]

Изоляция от компьютерного сообщества [ править ]

Сообщество COBOL всегда было изолировано от сообщества компьютерных наук. В разработке COBOL не участвовали ученые-компьютерщики: все члены комитета были представителями коммерции или правительства. В то время компьютерных ученых больше интересовали такие области, как численный анализ, физика и системное программирование, чем коммерческие проблемы обработки файлов, которыми занималась разработка COBOL. [173] Жан Саммет объяснил непопулярность COBOL первоначальной «реакцией снобов» из-за его неэлегантности, отсутствия влиятельных ученых-информатиков, участвующих в процессе разработки, и пренебрежения к обработке бизнес-данных. [174] Спецификация COBOL использовала уникальную «нотацию», или метаязык , для определения своего синтаксиса, а не новыйФорма Бэкуса – Наура, о которой комитету не известно. Это вызвало «резкую» критику. [175] [176] [66]

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

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

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

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

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

Влияния на другие языки [ править ]

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

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

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

См. Также [ править ]

  • Алфавитный список языков программирования
  • БЛИС / КОБОЛ
  • COBOL ReSource
  • КОДАСИЛ
  • Сравнение языков программирования
  • Список поколений языков программирования на основе COBOL.
  • Список компиляторов § компиляторы COBOL

Примечания [ править ]

  1. ^ a b c Особо повлиял на объектно-ориентированные функции COBOL 2002. [2] [3] [4]
  2. ^ Надгробие в настоящее время находится в Музее истории компьютеров . [61]
  3. ^ Расширения, зависящие от поставщика, приводят к тому, что многие реализации имеют гораздо больше: одна реализация распознает более 1100 ключевых слов. [114]

Ссылки [ править ]

Цитаты [ править ]

  1. ^ a b Саммет, Жан Э. (март 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. ^ a b c Сааде, Генри; Уоллес, Энн (октябрь 1995 г.). «COBOL '97: отчет о состоянии» . Журнал доктора Добба . Архивировано из оригинального 22 апреля 2014 года . Проверено 21 апреля 2014 года .
  3. ^ a b Arranga, Edmund C .; Койл, Фрэнк П. (февраль 1998 г.). Объектно-ориентированный КОБОЛ . Издательство Кембриджского университета . п. 15. ISBN 978-0132611404. Стиль объектно-ориентированного COBOL отражает влияние Smalltalk и C ++.
  4. ^ Arranga, Эдмунд C .; Койл, Фрэнк П. (март 1997 г.). «Кобол: восприятие и реальность». Компьютер . 30 (3): 127. DOI : 10,1109 / 2,573683 . ISSN 0018-9162 . 
  5. ^ Имаджо, Тетсудзи; и другие. (Сентябрь 2000 г.). COBOL Script: бизнес-ориентированный язык сценариев . Конференция по корпоративным распределенным объектным вычислениям . Макухари, Япония: IEEE. DOI : 10.1109 / EDOC.2000.882363 . ISBN 0769508650.
  6. Хо, Винг Хонг (7 мая 2007 г.). «Введение в EGL» (PDF) . IBM Software Group.
  7. ^ Радин, Джордж (1978). Wexelblat, Ричард Л. (ред.). Ранняя история и характеристики PL / I . История языков программирования. Academic Press (опубликовано в 1981 г.). п. 572. DOI : 10,1145 / +800025,1198410 . ISBN 0127450408.
  8. Митчелл, Роберт Л. (14 марта 2012 г.). «Утечка мозгов: куда идут системы Cobol» . Компьютерный мир . Дата обращения 9 февраля 2015 .
  9. ^ a b c Митчелл, Роберт Л. (4 октября 2006 г.). «Кобол: еще не умер» . Компьютерный мир . Проверено 27 апреля 2014 года .
  10. ^ Ensmenger, Nathan L. (2009). Компьютерные мальчики берут верх: компьютеры, программисты и политика технической экспертизы . MIT Press . п. 100. ISBN 978-0262050937. LCCN  2009052638 .
  11. ^ «ISO / IEC 1989: 2014» . ISO. 26 мая 2014 . Дата обращения 7 июня 2014 .
  12. ^ Фергюсон, Эндрю. «История языков программирования» . cs.brown.edu .
  13. Перейти ↑ Beyer 2009 , p. 282.
  14. ^ Gürer, Дэнис (1 июня 2002). «Женщины-первопроходцы в области компьютерных наук». SIGCSE Bull . 34 (2): 175–180. DOI : 10.1145 / 543812.543853 . ISSN 0097-8418 . S2CID 2577644 .  
  15. Перейти ↑ Beyer 2009 , pp. 281–282.
  16. ^ Заммет 1978а , стр. 200.
  17. ^ Flahive, Пол (24 мая 2019). «Как COBOL по-прежнему поддерживает мировую экономику в свои 60 лет» . Общественное радио Техаса . Архивировано из оригинального 24 -го мая 2019 года . Проверено 19 июля 2019 .(Грейс Хоппер) По прозвищу Бабушка Кобол, код был основан на некоторых из ее более ранних работ. Она сказала - услышав слухи - один из ее сотрудников пошел и купил гранитную надгробную плиту. «Перед ним было вырезано слово« КОБОЛ ». Затем он отправил его срочным сбором мистеру Филипсу в пятиугольник». По ее словам, розыгрыш с Чарльзом Филлипсом, руководителем проекта в министерстве обороны, привлек внимание властей и стал поворотным моментом. COBOL станет наиболее широко используемым и самым долговечным компьютерным языком в истории.
  18. Перейти ↑ Beyer 2009 , p. 283.
  19. Перейти ↑ Beyer 2009 , p. 284.
  20. ^ "Ранние встречи конференции по языкам систем данных". IEEE Annals of the History of Computing . 7 (4): 316–325. 1985. DOI : 10,1109 / MAHC.1985.10047 . S2CID 35625728 . 
  21. ^ a b c d e Sammet 2004 , стр. 104.
  22. Перейти ↑ Beyer 2009 , p. 286.
  23. ^ а б Коннер 1984 , стр. ID / 9.
  24. ^ Заммет 1978а , стр. 201.
  25. ^ а б в г Бемер 1971 , стр. 132.
  26. Перейти ↑ Beyer 2009 , p. 288.
  27. ^ Заммет 1978а , стр. 203.
  28. ^ CODASYL 1969 , § I.2.1.1.
  29. ^ Заммет 1978а , стр. 204.
  30. ^ CODASYL 1969 , § I.1.2.
  31. Перейти ↑ Beyer 2009 , p. 290.
  32. ^ Саммет, Жан (1978). «Ранняя история КОБОЛА». Уведомления ACM SIGPLAN . 13 (8): 121–161. DOI : 10.1145 / 960118.808378 . S2CID 10743643 . 
  33. ^ Заммет 1978а , стр. 217.
  34. Адамс, Вики Портер (5 октября 1981 г.). «Капитан Грейс М. Хоппер: мать КОБОЛА» . InfoWorld . Vol. 3 шт. 20. с. 33. ISSN 0199-6649 . 
  35. Беттс, Митч (6 января 1992 г.). «Грейс Хоппер, мать Кобола, умирает» . Компьютерный мир . 26 (1): 14.
  36. ^ Лор, Стив (2008). Перейти к: История математиков, бриджистов, инженеров, шахматных мастеров, ученых-индивидуалистов и иконоборцев - программистов, создавших революцию в программном обеспечении . Основные книги . п. 52. ISBN 978-0786730766.
  37. ^ "Новаторский инженер-программист и со-дизайнер Cobol" .
  38. ^ а б Бейер 2009 , стр. 292.
  39. ^ Bemer 1971 , стр. 131.
  40. Перейти ↑ Beyer 2009 , p. 296.
  41. ^ Заммет 1978а , стр. 221.
  42. Перейти ↑ Beyer 2009 , p. 291.
  43. ^ "Устная история капитана Грейс Хоппер" (PDF) . Музей истории компьютеров . Декабрь 1980 г. с. 37. Архивировано из оригинального (PDF) 25 декабря 2017 года . Проверено 28 июня 2014 .
  44. ^ Заммет 1978а , стр. 218.
  45. ^ Marcotty 1978а , стр. 268.
  46. ^ Заммет 1978а , стр. 205-206.
  47. ^ a b Sammet 1978a , рисунок 8.
  48. ^ Заммет 1978а , стр. 230-231.
  49. ISO / IEC JTC 1 / SC 22 / WG 4 2001 , стр. 846.
  50. ^ Заммет 1978а , стр. 220.
  51. ^ Заммет 1978а , стр. 228.
  52. ^ Заммет 1978а , стр. 210.
  53. ^ Bemer 1971 , стр. 132: Мы не можем найти ни одного человека, который признал бы создание аббревиатуры «КОБОЛ» .
  54. ^ Заммет 1978а , стр. 210: На следующий день название COBOL было окончательно согласовано как сокращение от COmmon Business Oriented Language. К сожалению, в моих записях не указано, кто сделал это предложение .
  55. Салливан, Патрисия (25 июня 2004 г.). "Пионер компьютеров Боб Бемер, 84 года" . Вашингтон Пост . п. B06 . Проверено 28 июня 2014 .
  56. ^ «ОТЧЕТ КОБОЛА - Интервью с Бобом Бемером - отцом COBOL» . Архивировано из оригинального 2 -го апреля 2018 года.
  57. ^ «ОТЧЕТ КОБОЛА - Интервью с Бобом Бемером - отцом COBOL» . Архивировано из оригинала 23 декабря 2003 года.
  58. Перейти ↑ Beyer 2009 , p. 293.
  59. Перейти ↑ Beyer 2009 , p. 294.
  60. ^ a b "История надгробия COBOL" (PDF) . Отчет компьютерного музея . 13 : 8–9. Лето 1985 года. Архивировано 3 апреля 2014 года (PDF) . Проверено 29 июня 2014 года .
  61. ^ "COBOL Tombstone" . Музей истории компьютеров . Проверено 29 июня 2014 года .
  62. ^ Bemer 1971 , стр. 130.
  63. Перейти ↑ Beyer 2009 , p. 289.
  64. ^ CODASYL 1969 , § I.1.1.
  65. ^ Браун 1976 , стр. 47.
  66. ^ a b c Бемер 1971 , стр. 133.
  67. ^ а б Бейер 2009 , стр. 297.
  68. ^ Уильямс, Кэтлин Брум (10 ноября 2012 г.). Грейс Хоппер: Адмирал Киберморя . Издательство Военно-морского института США. ISBN 978-1612512655. OCLC  818867202 .
  69. ^ 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 г.
  70. Гарфанкел, Джером (11 ноября 1984 г.). «В защиту Кобола» . Компьютерный мир . 18 (24): ID / 19.
  71. ^ а б Бемер 1971 , стр. 134.
  72. ^ Браун 1976 , стр. 48.
  73. ^ CODASYL 1969 , § I.2.2.4.
  74. ^ CODASYL 1969 , § I.2.3.
  75. ^ a b c d Фолле, Роберт Х .; Саммет, Жан Э. (2003). «Стандарты языков программирования» . В Ральстоне, Энтони; Рейли, Эдвин Д .; Hemmendinger, Дэвид (ред.). Энциклопедия компьютерных наук (4-е изд.). Вайли. п. 1467. ISBN 978-0470864128.
  76. ^ а б Бейер 2009 , стр. 301.
  77. ^ а б Браун 1976 , стр. 49.
  78. ^ Браун 1976 , стр. 52.
  79. Тейлор, Алан (2 августа 1972 г.). «Немногие осознают, что ресурсы местных школ DP» . Компьютерный мир . 6 (31): 11.
  80. ^ Triance, JM (1974). Программирование на COBOL: курс из двенадцати телевизионных лекций . Издательство Манчестерского университета. п. 87. ISBN 978-0719005923.
  81. Перейти ↑ Klein 2010 , p. 16.
  82. ^ Бэрд, Джордж Н .; Оливер, Пол (май 1977 г.). «Стандарт 1974 г. (X3.23–1974)». Стандарты языков программирования - кому они нужны? (PDF) (Отчет). Департамент ВМФ . С. 19–21. Архивировано 7 января 2014 года (PDF) . Проверено 7 января 2014 года .
  83. ^ Culleton, Джон Р., младший (23 июля 1975). « Проблема с " пятнистой "доступностью ...» Computerworld . 9 (30): 17.
  84. Симмонс, Уильямс Б. (18 июня 1975 г.). «Неужели составитель отчетов Кобола не попадает в цель?» . Компьютерный мир . 9 (25): 20.
  85. ^ Shoor, Рита (26 января 1981). «Пользователь угрожает костюмом из-за Ansi Cobol-80» . Компьютерный мир . 15 (4): 1, 8.
  86. ^ Shoor, Рита (26 октября 1981). "DPMA выступает против проекта" Кобол " . Компьютерный мир . 15 (43): 1–2.
  87. ^ a b c Галлант, Джон (16 сентября 1985 г.). «Пересмотренный стандарт Cobol может быть готов в конце 1985 года» . Компьютерный мир . 19 (37): 1, 8.
  88. ^ a b «Эксперт обращается к стандарту Cobol 85» . Компьютерный мир . 19 (37): 41, 48. 16 сентября 1985 г.
  89. Пол, Лоис (15 марта 1982 г.). «Ответы на Cobol-80 в подавляющем большинстве отрицательные» . Компьютерный мир . 16 (11): 1, 5.
  90. Пол, Лоис (25 апреля 1983 г.). «Исследование не видит проблем при переходе на Cobol-8X» . Компьютерный мир . 17 (17): 1, 6.
  91. ^ Гиллин, Пол (19 ноября 1984). «Пользователи DEC получают преимущество при внедрении Cobol-80» . Компьютерный мир . 18 (47): 1, 6.
  92. Перейти ↑ Garfunkel 1987 , p. 150.
  93. ^ Рой, МК; Дастидар, Д. Призрак (1 июня 1989 г.). «Особенности КОБОЛ-85». Программирование на COBOL: проблемы и решения (2-е изд.). McGraw-Hill Education. С. 438–451. ISBN 978-0074603185.
  94. Робинсон, Брайан (9 июля 2009 г.). «Cobol остается старым резервом агентств, несмотря на свой возраст» . FCW . Медиа-группа государственного сектора . Проверено 26 апреля 2014 года .
  95. ^ a b «Стандарты COBOL» . Микро Фокус. Архивировано из оригинального 31 марта 2004 года . Проверено 2 сентября 2014 года .
  96. ^ "NetCOBOL для .Net" . netcobol.com . GTSoftware. 2013. Архивировано из оригинала 8 июля 2014 года . Проверено 29 января 2014 .
  97. ^ «Список особенностей Codasyl Cobol» . Компьютерный мир . 18 (37): ID / 28. 10 сентября 1984 . Проверено 8 июня 2014 года .
  98. ISO / IEC JTC 1 / SC 22 / WG 4 2001 , приложение F.
  99. Перейти ↑ Klein 2010 , p. 21.
  100. ^ a b "JTC1 / SC22 / WG4 - COBOL" . ISO. 30 июня 2010. Архивировано из оригинала 14 февраля 2014 года . Проверено 27 апреля 2014 года .
  101. ^ Биллман, Джон; Клинк, Хьюиб (27 февраля 2008 г.). «Мысли о будущем стандартизации COBOL» (PDF) . Архивировано из оригинального (PDF) 11 июля 2009 года . Проверено 14 августа 2014 .
  102. ISO / IEC JTC 1 / SC 22 / WG 4 2014 , приложение E.
  103. ^ Schricker, Дон (2 декабря 1998). «J4: Стандартизация COBOL» . Микро Фокус. Архивировано из оригинального 24 февраля 1999 года . Проверено 12 июля 2014 .
  104. ^ Кизиор, Рональд Дж .; Карр, Дональд; Хальперн, Пол. «Есть ли у COBOL будущее?» (PDF) . Труды конференции Информационные системы образования 2000 года . 17 (126). Архивировано 17 августа 2016 года из оригинального (PDF) . Проверено 30 сентября 2012 года .
  105. ^ Carr & Kizior 2003 , стр. 16.
  106. ^ Carr & Kizior 2003 , стр. 10.
  107. ^ «Утечка мозгов Кобола: результаты опроса» . Компьютерный мир . 14 марта 2012 . Проверено 27 апреля 2014 года .
  108. ^ Powner, David A. (25 мая 2016). «Федеральным агентствам необходимо заняться устаревшими устаревшими системами» (PDF) . Счетная палата правительства . п. 18. Архивировано из оригинального (PDF) 15 июня 2016 года . Проверено 19 июля 2019 . Несколько агентств, таких как Министерство сельского хозяйства (USDA), DHS, HHS, юстиция, казначейство и VA, сообщили об использовании Common Business Oriented Language (COBOL) - языка программирования, разработанного в конце 1950-х - начале 1960-х годов - для программирования своего наследия. системы. Широко известно, что агентствам необходимо переходить на более современные, поддерживаемые языки, если это целесообразно и возможно.
  109. ^ "COBOL blues" . Рейтер . Проверено 8 апреля 2020 .
  110. ^ Теплицки, Фил (25 октября 2019). «Устранение разрыва в навыках программирования на COBOL» . IBM Systems Magazine, IBM Z . Проверено 11 июня 2020 .
  111. Ли, Алисия (8 апреля 2020 г.). «Срочно разыскиваются: люди, которые знают компьютерный язык полувековой давности, чтобы государства могли обрабатывать заявления о безработице» . CNN . Проверено 8 апреля 2020 .
  112. ^ Лонг, Хизер; Штейн, Джефф; Рейн, Лиза; Ромм, Тони (17 апреля 2020 г.). «Стимулирующие проверки и другие меры по борьбе с коронавирусом сдерживаются устаревшими технологиями и нестабильным внедрением правительства» . Вашингтон Пост . Проверено 19 апреля 2020 .
  113. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § 8.9.
  114. ^ «Таблица зарезервированных слов» . Micro Focus Visual COBOL 2.2 Справочник по языку COBOL . Микро Фокус . Проверено 3 марта 2014 .
  115. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § 8.3.1.2.
  116. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § 8.3.2.
  117. ^ а б в г Шнейдерман 1985 , с. 349.
  118. ^ a b ISO / IEC JTC 1 / SC 22 / WG 4 2001 , § F.2.
  119. ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § D.18.2.
  120. ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § D.18.
  121. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , стр. 108.
  122. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , стр. 896.
  123. ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § D.2.1.
  124. ^ "Файловые организации" . Обработка файлов . Микро Фокус. 1998 . Проверено 27 июня 2014 .
  125. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § 8.5.1.2.
  126. ^ Катлер 2014 , приложение А.
  127. ^ Хаббелл, Тейн (1999). Sams научитесь COBOL за 24 часа . Издательство SAMS . п. 40. ISBN 978-0672314537. LCCN  98087215 .
  128. McCracken & Golden 1988 , § 19.9.
  129. ^ Катлер 2014 , § 5.8.5.
  130. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § 8.5.2.
  131. ^ a b ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § 14.9.24.
  132. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § 14.9.35.
  133. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § 13.18.40.
  134. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § 13.18.60.3.
  135. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , стр. 855.
  136. ↑ a b McCracken 1976 , стр. 338.
  137. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § 14.4.
  138. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § 14.6.3.
  139. ^ Поле, Джон; Рамалингам, Г. (сентябрь 1999 г.). Определение процедурной структуры в программах на языке Cobol (PDF) . ПАСТА '99 . DOI : 10.1145 / 381788.316163 . ISBN  1581131372.
  140. ^ a b c Вирман, Нильс; Верховен, Эрнст-Ян (ноябрь 2006 г.). «Обнаружение минного поля Кобола» (PDF) . Программное обеспечение - практика и опыт . 36 (14). DOI : 10.1002 / spe.v36: 14 . Архивировано из оригинального (PDF) 6 марта 2007 года.
  141. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § 14.9.
  142. ISO / IEC JTC 1 / SC 22 / WG 4 2014 , §§ 14.9.4, 14.9.22.
  143. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § D.6.5.2.2.
  144. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , § 14.9.13.1.
  145. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , §14.9.35.1.
  146. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2014 , стр. 899.
  147. ^ a b McCracken & Golden 1988 , § 8.4.
  148. ^ Примеры поддержки компилятором дляALTERможно увидеть в следующем:
    • Тиффин, Брайан (18 сентября 2013 г.). «Сентябрь 2013» . GNU Cobol . Архивировано из оригинала на 5 мая 2014 года . Проверено 5 января 2014 года .
    • «Заявление ALTER» . Справочник по языку Micro Focus Visual COBOL 2.2 для Visual Studio 2013 COBOL . Микро Фокус . Проверено 5 января 2014 года .
    • «Заявление ALTER (ядро)» (PDF) . Справочное руководство COBOL85 . Fujitsu. Ноябрь 1996. с. 555. Архивировано из оригинального (PDF) 6 января 2014 года . Проверено 5 января 2014 года .
    • «Заявление ALTER» . Справочник по языку Enterprise COBOL для z / OS . IBM. Июнь 2013 . Проверено 5 января 2014 года .
  149. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2001 , § Е.1.
  150. ↑ a b McCracken 1976 , стр. 355.
  151. Рианна Мозли, Джей (17 января 2015 г.). "Компилятор COBOL от MVT" . Дата обращения 19 июля 2015 .
  152. ^ Дейкстра, Эдсгер W. (18 июня 1975). «Как мы можем говорить правду, которая может причинить боль?» . Техасский университет в Остине. EWD498. Архивировано из оригинального 2 -го мая 2017 года . Проверено 29 августа 2007 года .
  153. Перейти ↑ Tompkins, HE (1983). «В защиту преподавания структурированного COBOL как информатики». Уведомления ACM SIGPLAN . 18 (4): 86–94. DOI : 10.1145 / 948176.948186 . S2CID 33803213 . 
  154. ^ a b Riehle 1992 , стр. 125.
  155. ^ Шнейдерман 1985 , стр. 349-350.
  156. ^ Coughlan, Майкл (16 марта 2014). Начало COBOL для программистов . Апресс. п. 4. ISBN 978-1430262534. Дата обращения 13 августа 2014 .
  157. ^ Заммет 1978b , стр. 258.
  158. ^ Riehle 1992 , стр. 126.
  159. ^ Riehle 1992 , стр. 127.
  160. ^ «COBOL и устаревший код как системный риск | голый капитализм» . 19 июля 2016 . Проверено 23 июля 2016 года .
  161. ^ Лэммель, Ральф; Верхоф, Крис (ноябрь – декабрь 2001 г.). «Решение проблемы 500 языков» (PDF) . Программное обеспечение IEEE . 18 (6): 79. DOI : 10,1109 / 52,965809 . hdl : 1871/9853 . Архивировано из оригинального (PDF) 19 августа 2014 года.
  162. ^ Хоукинс, TJ; Харанди, MT (апрель 1979 г.). «К более портативному COBOL» . Компьютерный журнал . 22 (4): 290. DOI : 10,1093 / comjnl / 22.4.290 .
  163. Перейти ↑ Garfunkel 1987 , p. 11.
  164. Перейти ↑ Garfunkel 1987 , p. 15.
  165. Перейти ↑ Raymond, Eric S. (1 октября 2004 г.). «КОБОЛ» . Файл жаргона, версия 4.4.8 . Архивировано 30 августа 2014 года . Проверено 13 декабря 2014 .
  166. ^ Браун 1976 , стр. 53.
  167. ^ CODASYL 1969 , § II.1.1.
  168. ^ Шнейдерман 1985 , стр. 350.
  169. ^ Саммет 1961 , стр. 381.
  170. ^ а б Коннер 1984 , стр. ID / 10.
  171. ^ Marcotty 1978а , стр. 263.
  172. Коннер 1984 , стр. ID / 14.
  173. ^ Саммет 1961 , стр. 380.
  174. ^ Marcotty 1978а , стр. 266.
  175. ^ Заммет 1978b , стр. 255.
  176. ^ Шнейдерман 1985 , стр. 348-349.
  177. ^ "Архивная копия" . Архивировано из оригинала 5 марта 2016 года . Проверено 25 февраля +2016 .CS1 maint: archived copy as title (link)
  178. ^ Шнейдерман 1985 , стр. 351.
  179. ^ "Интервью: защитник Кобола" . Компьютерный мир . 18 (37): ID / 29 – ID / 32. 10 сентября 1984 . Проверено 8 июня 2014 года .
  180. ^ «Академическим сообществам нужна дополнительная поддержка, чтобы преодолеть разрыв в ИТ-навыках» (пресс-релиз). Микро Фокус. 7 марта 2013 . Дата обращения 4 августа 2014 .
  181. ^ Carr & Kizior 2003 , стр. 13.
  182. ^ Саммет, Жан; Гарфанкел, Джером (октябрь 1985 г.). «Сводка изменений в COBOL, 1960–1985». Анналы истории вычислительной техники . 7 (4): 342. DOI : 10,1109 / MAHC.1985.10033 . S2CID 17940092 . 
  183. ^ Кук, Маргарет М. (июнь 1978 г.). Ghosh, Sakti P .; Лю, Леонард Ю. (ред.). База данных для COBOL 80 (PDF) . 1978 Национальная компьютерная конференция. Анахайм, Калифорния: AFIPS Press. С. 1107–1112. DOI : 10,1109 / AFIPS.1978.63 . LCCN 55-44701 . Проверено 2 сентября 2014 года . Самая ранняя дата, когда новый стандарт COBOL может быть разработан и утвержден, - это 1980 год [...].  
  184. ^ «Резолюции заседания WG4 24 - 26–28 июня 2003 г., Лас-Вегас, Невада, США» . 11 июля 2003 г. с. 1. Архивировано из оригинала (doc) 8 марта 2016 года . Проверено 29 июня 2014 года . редакция стандарта COBOL от июня 2008 г.
  185. Бэбкок, Чарльз (14 июля 1986 г.). "Стандартные надстройки Cobol содрали кожу" . Компьютерный мир . 20 (28): 1, 12.
  186. ^ Marcotty 1978b , стр. 274.
  187. ^ Это можно увидеть в:
    • «Визуальный КОБОЛ» . IBM PartnerWorld . IBM . 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 . IBM . Архивировано 23 февраля 2014 года . Проверено 5 февраля 2014 .
    • Тиффин, Брайан (4 января 2014 г.). "Какие платформы поддерживаются GNU Cobol?" . Архивировано из оригинального 14 декабря 2013 года . Проверено 5 февраля 2014 .
  188. ^ Coughlan, Майкл (2002). «Введение в КОБОЛ» . Проверено 3 февраля 2014 года .

Источники [ править ]

  • Бемер, Боб (1971). «Взгляд на историю COBOL» (PDF) . Компьютерный журнал Honeywell . 5 (3). Архивировано из оригинального (PDF) 22 января 2016 года . Проверено 28 июня 2014 .
  • Бейер, Курт (2009). Грейс Хоппер и изобретение информационного века . MIT Press. ISBN 978-0262013109. LCCN  2008044229 .
  • Браун, Уильям Р. (1 декабря 1976 г.). «КОБОЛ». В Белзере, Джек; Хольцман, Альберт Г .; Кент, Аллен (ред.). Энциклопедия компьютерных наук и технологий: Том 5 . CRC Press . ISBN 978-0824722555.
  • Карр, Дональд Э .; Кизиор, Рональд Дж. (31 декабря 2003 г.). «Сохраняющаяся актуальность COBOL для бизнеса и академических кругов: текущая ситуация и сравнение с исследованием 2000 года» (PDF) . Информационные системы образования журнала . 1 (52). ISSN  1545-679X . Дата обращения 4 августа 2014 .
  • КОДАСИЛ (июль 1969 г.). "CODASYL COBOL Journal of Development 1968" . Codasyl Cobal Журнал развития . Национальное бюро стандартов . ISSN  0591-0218 . LCCN  73601243 .
  • Коннер, Ричард Л. (14 мая 1984 г.). «Кобол, твой возраст показывает» . Компьютерный мир . 18 (20): ID / 7 – ID / 18. ISSN  0010-4841 .
  • Катлер, Гэри (9 апреля 2014 г.). «Руководство программиста GNU COBOL» (PDF) (3-е изд.) . Проверено 25 февраля 2014 года .
  • Гарфанкел, Джером (1987). Книга примеров COBOL 85 . Вайли . ISBN 978-0471804611.
  • ISO / IEC JTC 1 / SC 22 / WG 4 (4 декабря 2001 г.). «ISO / IEC IS 1989: 2001 - Язык программирования COBOL» . ISO . Архивировано из оригинала (ZIP в формате PDF) 24 января 2002 года . Проверено 2 сентября 2014 года .
  • ISO / IEC JTC 1 / SC 22 / WG 4 (31 октября 2014 г.). INCITS / ISO / IEC 1989: 2014 [2014] - Язык программирования COBOL . INCITS .
  • Кляйн, Уильям М. (4 октября 2010 г.). «История COBOL» (PDF) . Архивировано 7 января 2014 года из оригинального (PDF) . Проверено 7 января 2014 года .
  • Маркотти, Майкл (1978a). Wexelblat, Ричард Л. (ред.). Стенограмма вопросов и ответов . История языков программирования. Academic Press (опубликовано в 1981 г.). п. 263 . DOI : 10.1145 / 800025.1198370 . ISBN 0127450408.
  • Маркотти, Майкл (1978b). Wexelblat, Ричард Л. (ред.). Полный текст всех присланных вопросов . История языков программирования. Academic Press (опубликовано в 1981 г.). п. 274 . DOI : 10.1145 / 800025.1198371 . ISBN 0127450408.
  • Маккрэкен, Дэниел Д. (1976). Упрощенное руководство по структурированному программированию на COBOL . Вайли. ISBN 0-471-58284-0.
  • McCracken, Daniel D .; Голден, Дональд Г. (1988). Упрощенное руководство по структурированному программированию на COBOL (2-е изд.). Вайли. ISBN 978-0471610540. LCCN  87034608 .
  • Риле, Ричард Л. (август 1992 г.). «ВЫПОЛНЕНИЕ считается вредным». Коммуникации ACM . 35 (8): 125–128. DOI : 10.1145 / 135226.376106 . S2CID  18845698 .
  • Саммет, Жан Э. (май 1961 г.). Метод сочетания АЛГОЛА и КОБОЛА . Доклады, представленные на западной совместной компьютерной конференции IRE – AIEE – ACM 9–11 мая 1961 г. ACM . С. 379–387. DOI : 10.1145 / 1460690.1460734 .
  • Саммет, Жан Э. (1978a). Wexelblat, Ричард Л. (ред.). Ранняя история COBOL . История языков программирования. Academic Press (опубликовано в 1981 г.). DOI : 10.1145 / 800025.1198367 . ISBN 0127450408.
  • Саммет, Жан Э. (1978b). Wexelblat, Ричард Л. (ред.). Стенограмма презентации . История языков программирования. Academic Press (опубликовано в 1981 г.). DOI : 10.1145 / 800025.1198368 . ISBN 0127450408.
  • Саммет, Жан Э. (23 июля 2004 г.). «КОБОЛ». В Рейли, Эдвин Д. (ред.). Краткая энциклопедия компьютерных наук . Вайли. ISBN 978-0470090954. OCLC  249810423 .
  • Шнейдерман, Б. (октябрь 1985 г.). «Связь между COBOL и компьютерными науками». Анналы истории вычислительной техники . 7 (4): 348–352. DOI : 10.1109 / MAHC.1985.10041 . S2CID  1009406 .

Внешние ссылки [ править ]

  • COBOL в Curlie