~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 9B2E2C267828F222ABB1B9E2DDE2A891__1718094120 ✰
Заголовок документа оригинал.:
✰ COBOL - Wikipedia ✰
Заголовок документа перевод.:
✰ КОБОЛ — Википедия, бесплатная энциклопедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/COBOL ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/9b/91/9b2e2c267828f222abb1b9e2dde2a891.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/9b/91/9b2e2c267828f222abb1b9e2dde2a891__translat.html ✰
Дата и время сохранения документа:
✰ 12.06.2024 12:13:31 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 11 June 2024, at 11:22 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

КОБОЛ — Википедия, бесплатная энциклопедия Jump to content

КОБОЛ

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

КОБОЛ
Отчет COBOL 60 для CODASYL (апрель 1960 г.)
Парадигма Процедурный , императивный , объектно-ориентированный , общий.
Разработано Ховард Бромберг , Норман Дисконт , Вернон Ривз , Джин Э. Саммет , Уильям Селден , Гертруда Тирни , при косвенном влиянии Грейс Хоппер [1]
Разработчики КОДАСИЛ , ANSI , ISO / IEC
Впервые появился 1959 год ; 65 лет назад ( 1959 )
Стабильная версия
ИСО/МЭК 1989:2023 / 2023 г.
Дисциплина набора текста Слабый , статичный
Расширения имен файлов .cbl, .cob, .cpy
Основные реализации
GnuCOBOL , IBM COBOL , Micro Focus Visual COBOL
Диалекты
COBOL/2, DEC COBOL-10, DEC PDP-11 COBOL, DEC PDP-11 COBOL-85, DEC VAX COBOL, DOSVS COBOL, Envyr ICOBOL, Fujitsu COBOL, Hitachi COBOL2002, HP3000 COBOL/II, IBM COBOL SAA, IBM COBOL /400, IBM COBOL/II, IBM Enterprise COBOL, IBM ILE COBOL, IBM OS/VS COBOL, ICL COBOL (VME), Micro Focus ACUCOBOL-GT, Micro Focus COBOL-IT, Micro Focus RM/COBOL, Micro Focus Visual COBOL , Microsoft COBOL, Raincode COBOL, Realia COBOL, Ryan McFarland RM/COBOL, Ryan McFarland RM/COBOL-85, Tandem (NonStop) COBOL, Tandem (NonStop) SCOBOL, UNIVAC COBOL, Unisys MCP COBOL74, Unisys MCP COBOL85, X/Open КОБОЛ, [2] Верянт — это COBOL, Ван против COBOL, WATBOL
Под влиянием
Начальные: AIMACO , COMTRAN , FACT , FLOW-MATIC.
КОБОЛ 2002: [а] C++ , Эйфель , Smalltalk
Под влиянием
КоболСкрипт , [6] ЭГЛ , [7] ПЛ/Я , [8] ПЛ/Б [9]

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

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

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

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

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

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

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

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

Хронология языка COBOL
Год Неофициальное имя Стандарт ANSI INCITS Стандарт ИСО/МЭК
1960 КОБОЛ-60
1961 КОБОЛ-61
1963 КОБОЛ-61 Расширенный
1965 КОБОЛ-65
1968 КОБОЛ-68 X3.23-1968
1974 КОБОЛ-74 X3.23-1974
1985 КОБОЛ-85 X3.23-1985 1989:1985
2002 КОБОЛ-2002 1989:2002
2014 КОБОЛ-2014 1989:2014
2023 КОБОЛ-2023 1989:2023

Предыстория [ править ]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В 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. [70]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

ДОБАВИТЬ   1  К   x 
 ДОБАВИТЬ   1  ,   a  ,   b   К   x   ОКРУГЛЕННЫЙ  ,   y  ,   z   ОКРУГЛЕННЫЙ 

 ДОБАВИТЬ   a  ,   b К   c   НА 
     ОТОБРАЖЕНИИ   РАЗМЕРА   ОТОБРАЖЕНИИ 
         «  Ошибка» 
 КОНЕЦ- 

 ДОБАВИТЬ   a   TO   b 
     НЕ   ОТОБРАЖАТЬ   ОШИБКУ 
         РАЗМЕРА  «Нет ошибки» 
     НА   ОШИБКИ   РАЗМЕРА 
         ОШИБКИ  "Ошибка" 

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

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

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

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

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

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

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

Идентификационный отдел [ править ]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие уровни данных [ править ]

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

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

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

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

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

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

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

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

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

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

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

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

Примеры
PICTURE пункт Стоимость в Ценность
PIC 9(5) 100 00100
"Hello" "Hello" (это законно, но приводит к неопределенному поведению ) [144]
PIC +++++ -10 "  -10" (обратите внимание на ведущие пробелы)
PIC 99/99/9(4) 30042003 "30/04/2003"
PIC *(4)9.99 100.50 "**100.50"
0 "****0.00"
PIC X(3)BX(3)BX(3) "ABCDEFGHI" "ABC DEF GHI"
Пункт USAGE [ править ]

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

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

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

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

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

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

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

        RD  Отчет о продажах 
            СТРАНИЦЫ   ОГРАНИЧЕНИЕ   60  СТРОК 
            ПЕРВАЯ   ДЕТАЛИ   3 
            УПРАВЛЕНИЯ   имя продавца  . 

         01  ТИП   СТРАНИЦЫ   ЗАГОЛОВОК  . 
             03  COL   1  ЗНАЧЕНИЕ  «Отчет о продажах»  . 
             03  COL   74  ЗНАЧЕНИЕ  «Страница»  . 
             03  COL   79  PIC Z9   ИСТОЧНИК   СЧЕТЧИКА СТРАНИЦ  . 

         01  продажа в день   ТИП   ДЕТАЛЬ  ,   СТРОКА  +   1  . 
             03  COL   3  ЗНАЧЕНИЕ  «Продажи продолжаются»  . 
             03  COL   12  PIC 99/99/9999   ИСТОЧНИК   -дата продажи  . 
             03  COL   21  ЗНАЧЕНИЕ  «было»  . 
             03  COL   26  PIC $$$$9,99   ИСТОЧНИК   объем продаж  . 

         01  недопустимые продажи   ТИП   ДЕТАЛИ  ,   СТРОКА  +   1  . 
             03  COL   3  ЗНАЧЕНИЕ  «НЕДЕЙСТВИТЕЛЬНАЯ ЗАПИСЬ:»  . 
             03  COL   19  PIC X(34)   ИСТОЧНИК   записи продаж  . 

         01  ТИП   УПРАВЛЯЮЩЕГО   ЗАГОЛОВКА   имя продавца  ,   LINE  +   2  . 
             03  КОЛОДЦА   1  ЗНАЧЕНИЕ  «Продавец:»  . 
             03  COL   9  PIC X(30)   ИСТОЧНИК   имя продавца  . 

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

Отчет о продажах, стр. 1

 Продавец: Говард Бромберг
   Продажи на 12.10.2008 составили 1000,00 долларов США.
   Продажи на 12.12.2008 составили 0,00 доллара США.
   Продажи 12.13.2008 г. составили 31,47 доллара США.
   НЕДЕЙСТВИТЕЛЬНАЯ ЗАПИСЬ: Говард Бромберг XXXXYY

 Продавец: Howard Discount
 ...
 Отчет о продажах, стр. 12

   Продажи на 05.08.2014 составили $543,98.
   НЕДЕЙСТВИТЕЛЬНАЯ ЗАПИСЬ: Уильям Селден 12O52014FOFOO
   Продажи на 30.05.2014 составили 0,00$.
 

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

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

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

Процедурное разделение [ править ]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ввод/ вывод [ править ]

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

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

Манипулирование данными [ править ]

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

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

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

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

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

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

  *> Ограничители области («явное завершение») 
 IF   недопустимая запись 
     IF   no-more-records 
         CONTINUE 
     ELSE 
         READ   Record-file 
             AT   END   SET   no-more-records   TO   TRUE 
         END-READ 
     END-IF 
 END-IF 

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

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

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

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

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

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

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

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

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

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

« Привет, мир!» программа на КОБОЛе:

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

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

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

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

19.52.48 ЗАДАНИЕ 3 $HASP100 COBUCLG НА READER1 БАЗОВЫЙ ТЕСТ COBOL 
      19.52.48 ЗАДАНИЕ 3 IEF677I ВЫДАНО ПРЕДУПРЕЖДАЮЩЕЕ СООБЩЕНИЕ ДЛЯ ЗАДАНИЯ COBUCLG 
      19.52.48 JOB 3 $HASP373 COBUCLG НАЧАЛСЯ – INIT 1 – CLASS A – SYS BSP1 
      19.52.48 ЗАДАНИЕ 3 IEC130I SYSPUNCH DD ЗАЯВЛЕНИЕ ОТСУТСТВУЕТ 
      19.52.48 ЗАДАНИЕ 3 IEC130I SYSLIB DD ЗАЯВЛЕНИЕ ОТСУТСТВУЕТ 
      19.52.48 ЗАДАНИЕ 3 IEC130I SYSPUNCH DD ЗАЯВЛЕНИЕ ОТСУТСТВУЕТ 
      19.52.48 JOB 3 IEFACTRT — Имя шага Реткод программы Procstep 
      19.52.48 JOB 3 COBUCLG BASETEST COB IKFCBL00 RC= 0000 
      19.52.48 ЗАДАНИЕ 3 COBUCLG BASETEST LKED IEWL RC= 0000 
    19.52.48 ЗАДАНИЕ 3 +ЗДРАВСТВУЙ, МИР 
    19.52.48 ЗАДАНИЕ 3 COBUCLG BASETEST GO PGM=*.DD RC= 0000 
      19.52.48 ЗАДАНИЕ 3 $HASP395 COBUCLG ЗАВЕРШЕНО 
 

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

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

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

Отсутствие структуры [ править ]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

КОБОЛ COPY объект, хотя и считается «примитивным», [201] повлиял на развитие директив include . [129]

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

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

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

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

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

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

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

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

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

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 9B2E2C267828F222ABB1B9E2DDE2A891__1718094120
URL1:https://en.wikipedia.org/wiki/COBOL
Заголовок, (Title) документа по адресу, URL1:
COBOL - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)