Jump to content

Кобол

(Перенаправлен с изображения )

Кобол
Cobol 60 Отчет Кодасилу (апрель 1960 г.)
Парадигма Процедурные , императивные , объектно-ориентированные , универсальные
Спроектирован Говард Бромберг , Нормана Скидки , Вернон Ривз , Джин Э. Саммет , Уильям Селден , Гертруда Тирни , с косвенным влиянием Грейс Хоппер [ 1 ]
Разработчики Codasyl , ANSI , ISO / IEC
Впервые появился 1959 ; 65 лет назад ( 1959 )
Стабильный релиз
ISO/IEC 1989: 2023 / 2023
Дисциплина набора печати Слабый , статический
Расширения имени файла .cbl, .cob, .cpy
Основные реализации
Гнукобол , 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 COBOL2002, HP3000 COBOL/II, IBM COBOL SAA, IBM COBOL2002, HP3000, IBM COBOL SAA, IBM COBOL2002, HP3000, IBM COBOL SAA, IBM COBOL2002, HP3000, IBM COBOL SAA, IBM COBOL2002, HP3000. /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 ] Очень iscobol, Wang vs Cobol, Watbol
Под влиянием
ИСТИНАЯ: AIMACO , COMTRAN , FACT , FLOW-MATIC
Cobol 2002: [ А ] C ++ , Eiffel , SmallTalk
Под влиянием
Cobolscript , [ 6 ] Egl , [ 7 ] Pl/i , [ 8 ] PL/B. [ 9 ]

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

COBOL был разработан в 1959 году Codasyl языка программирования и был частично основан на потоке , разработанной Грейс Хоппер . Он был создан как часть усилий Министерства обороны США по созданию портативного языка программирования для обработки данных. Первоначально он рассматривался как остановка, но Министерство обороны быстро дало на производителей компьютеров, чтобы они предоставили его, что привело к его широкому внедрению. [ 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 ]

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

[ редактировать ]
График языка кобола
Год Неформальное имя ANSI выпускает стандарт Стандарт ISO/IEC
1960 COBOL-60
1961 COBOL-61
1963 COBOL-61 расширен
1965 COBOL-65
1968 COBOL-68 X3.23-1968
1974 COBOL-74 X3.23-1974
1985 COBOL-85 X3.23-1985 1989:1985
2002 COBOL-2002 1989:2002
2014 COBOL-2014 1989:2014
2023 COBOL-2013 1989:2023

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

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

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

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

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

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

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

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

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

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

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

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

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

В 1980 году Грейс Хоппер прокомментировала, что «Cobol 60 составляет 95% потока», и что Comtran оказал «чрезвычайно маленькое» влияние. Кроме того, она сказала, что она будет утверждать, что на работу повлияла как Flow-Matic, так и Comtran только для того, чтобы «держать других людей счастливыми, чтобы они не пытались выбить нас». [ 47 ]

Особенности от Comtran включены в Cobol, включенные формулы, [ 48 ] а PICTURE пункт , [ 49 ] улучшен IF Заявление, которое устраняло необходимость в GO TOS , и более надежную систему управления файлами. [ 42 ]

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

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

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

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

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

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

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

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

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

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

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

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

В течение 1960 года вырос список производителей, планирующих создавать компиляторы COBOL. К сентябрю еще пять производителей присоединились к Codasyl ( Bendix , Control Data Corporation , General Electric (GE), National Cash Agistring и Philco ), и все представленные производители объявили компиляторы COBOL. GE и IBM планировали интегрировать COBOL на свои языки, GECOM и Comtran, соответственно. Напротив, международные компьютеры и табуляторы планировали заменить свой язык, Codel, на Cobol. [ 70 ]

Тем временем RCA и Sperry Rand работали над созданием компиляторов 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, Системы автоматизации данных, авторское право, 1958, 1959, Unisys Corporation; Форма коммерческого переводчика IBM № F28-8013, авторские права в 1959 году IBM; Факт, DSI 27A5260-2760, авторское право, 1960 г. Миннеаполис-Хониэлл.

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

COBOL-61 до COBOL-65

[ редактировать ]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ISO TC97-SC5 установлен в 1979 году Международная группа экспертов COBOL, по инициативе Wim Ebbinkhuijsen . Группа состояла из экспертов 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% всех бизнес -программ. [ C ] [ 100 ]

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

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

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

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

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

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

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

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

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

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

Пока еще нет известной полной реализации этого стандарта. [ Цитация необходима ]

Наследие

[ редактировать ]

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

Ближе к концу 20 -го века проблема 2000 года (Y2K) была в центре значительных усилий по программированию COBOL, иногда теми же программистами, которые разработали системы десятилетия назад. Определенный уровень усилий, необходимый для исправления кода COBOL, был отнесен к большому объему ориентированного на бизнес COBOL, так как бизнес-приложения используют даты сильного уровня, а также поля данных с фиксированной длиной. [ 115 ] Некоторые исследования приписывают «24% затрат на ремонт программного обеспечения Y2K для COBOL». [ 116 ] После того, как усилия по очистке, вложенные в эти программы для Y2K, опрос 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 ] [ D ] Некоторые из ключевых слов являются простыми альтернативными или плюрализованными написаниями того же слова, которое предусматривает более грамматически соответствующие утверждения и предложения; например, IN и OF Ключевые слова могут использоваться взаимозаменяемо, как можно TIME и TIMES, и VALUE и VALUES.

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

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

Металлическая языка

[ редактировать ]

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

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

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

 

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

ADD 1 TO x
ADD 1, a, b TO x ROUNDED, y, z ROUNDED

ADD a, b TO c
    ON SIZE ERROR
        DISPLAY "Error"
END-ADD

ADD a TO b
    NOT SIZE ERROR
        DISPLAY "No error"
    ON SIZE ERROR
        DISPLAY "Error"

Формат кода

[ редактировать ]
Кобал программная колода перфорированных карт, с 1970 -х годов
3270 сессия

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

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 ]

*> These are equivalent.
INVOKE my-class "foo" RETURNING var
MOVE my-class::"foo" TO var *> Inline method invocation

Кобол не предоставляет способ скрыть методы. Данные класса могут быть скрыты, однако, объявив их без 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  some-record.                   *> Aggregate group record item
           05  num            PIC 9(10).  *> Elementary item
           05  the-date.                  *> Aggregate (sub)group record item
               10  the-year   PIC 9(4).   *> Elementary item
               10  the-month  PIC 99.     *> Elementary item
               10  the-day    PIC 99.     *> Elementary item

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

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

       01  sale-date.
           05  the-year       PIC 9(4).
           05  the-month      PIC 99.
           05  the-day        PIC 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  customer-record.
           05  cust-key            PIC X(10).
           05  cust-name.
               10  cust-first-name PIC X(30).
               10  cust-last-name  PIC X(30).
           05  cust-dob            PIC 9(8).
           05  cust-balance        PIC 9(7)V99.
           
       66  cust-personal-details   RENAMES cust-name THRU cust-dob.
       66  cust-all-details        RENAMES cust-name THRU cust-balance.

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

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

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

       01  wage-type          PIC X.
           88  wage-is-hourly VALUE "H".
           88  wage-is-yearly VALUE "S", "Y".

Типы данных

[ редактировать ]

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

Тип данных Образец объявления Примечания
Алфавитный PIC A(30) Может содержать только буквы или пространства.
Буквенно -цифровой PIC X(30) Может содержать любые символы.
Логический PIC 1 USAGE BIT Данные, хранящиеся в форме 0s и 1s, в виде двоичного числа.
Индекс 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 (или 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 Клаус объявляет формат, в котором хранятся данные. В зависимости от типа данных, он может либо дополнить, либо использоваться вместо PICTURE пункт. Хотя его можно использовать для объявления указателей и ссылок на объекты, он в основном предназначен для определения числовых типов. Эти числовые форматы: [ 147 ]

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

Сообщение автора

[ редактировать ]

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

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

       FD  report-out REPORT sales-report.

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

       RD  sales-report
           PAGE LIMITS 60 LINES
           FIRST DETAIL 3
           CONTROLS seller-name.

       01  TYPE PAGE HEADING.
           03  COL 1                    VALUE "Sales Report".
           03  COL 74                   VALUE "Page".
           03  COL 79                   PIC Z9 SOURCE PAGE-COUNTER.

       01  sales-on-day TYPE DETAIL, LINE + 1.
           03  COL 3                    VALUE "Sales on".
           03  COL 12                   PIC 99/99/9999 SOURCE sales-date.
           03  COL 21                   VALUE "were".
           03  COL 26                   PIC $$$$9.99 SOURCE sales-amount.

       01  invalid-sales TYPE DETAIL, LINE + 1.
           03  COL 3                    VALUE "INVALID RECORD:".
           03  COL 19                   PIC X(34) SOURCE sales-record.

       01  TYPE CONTROL HEADING seller-name, LINE + 2.
           03  COL 1                    VALUE "Seller:".
           03  COL 9                    PIC X(30) SOURCE seller-name.

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

Sales Report                                                             Page  1

Seller: Howard Bromberg
  Sales on 10/12/2008 were $1000.00
  Sales on 12/12/2008 were    $0.00
  Sales on 13/12/2008 were   $31.47
  INVALID RECORD: Howard Bromberg             XXXXYY

Seller: Howard Discount
...
Sales Report                                                            Page 12

  Sales on 08/05/2014 were  $543.98
  INVALID RECORD: William Selden      12O52014FOOFOO
  Sales on 30/05/2014 were    $0.00

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

           OPEN INPUT sales, OUTPUT report-out
           INITIATE sales-report
 
           PERFORM UNTIL 1 <> 1
               READ sales
                   AT END
                       EXIT PERFORM
               END-READ
 
               VALIDATE sales-record
               IF valid-record
                   GENERATE sales-on-day
               ELSE
                   GENERATE invalid-sales
               END-IF
           END-PERFORM
 
           TERMINATE sales-report
           CLOSE sales, report-out
           .

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

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

[ редактировать ]

Процедуры

[ редактировать ]

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

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

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

PROCEDURE so-and-so.
    PERFORM ALPHA
    PERFORM ALPHA THRU GAMMA
    STOP RUN.
ALPHA.
    DISPLAY 'A'.
BETA.
    DISPLAY 'B'.
GAMMA.
    DISPLAY 'C'.

Вывод этой программы будет: «AAB C».

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

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

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

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

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

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

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

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

Заявления

[ редактировать ]

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

Управление потоком
[ редактировать ]

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

EVALUATE TRUE ALSO desired-speed ALSO current-speed
    WHEN lid-closed ALSO min-speed THRU max-speed ALSO LESS THAN desired-speed
        PERFORM speed-up-machine
    WHEN lid-closed ALSO min-speed THRU max-speed ALSO GREATER THAN desired-speed
        PERFORM slow-down-machine
    WHEN lid-open ALSO ANY ALSO NOT ZERO
        PERFORM emergency-stop
    WHEN OTHER
        CONTINUE
END-EVALUATE

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

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

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

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

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

Манипуляция данных
[ редактировать ]

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

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

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

Получение области

[ редактировать ]

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

*> Terminator period ("implicit termination")
IF invalid-record
    IF no-more-records
        NEXT SENTENCE
    ELSE
        READ record-file
            AT END SET no-more-records TO TRUE.

*> Scope terminators ("explicit termination")
IF invalid-record
    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 ] Например, изучите следующий код:

IF x
    DISPLAY y.
    DISPLAY z.

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

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

IF x
    IF y
        DISPLAY a
ELSE
    DISPLAY 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 ] Но это было признано устаревшим в стандарте Cobol 1985 и удален в 2002 году. [ 162 ]

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

Привет, мир

[ редактировать ]

" Привет, мир!" Программа в Cobol:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. hello-world.
       PROCEDURE DIVISION.
           DISPLAY "Hello, world!"
           .

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

//COBUCLG  JOB (001),'COBOL BASE TEST',                                 00010000
//             CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)                        00020000
//BASETEST EXEC COBUCLG                                                 00030000
//COB.SYSIN DD *                                                        00040000
 00000* VALIDATION OF BASE COBOL INSTALL                                00050000
 01000 IDENTIFICATION DIVISION.                                         00060000
 01100 PROGRAM-ID. 'HELLO'.                                             00070000
 02000 ENVIRONMENT DIVISION.                                            00080000
 02100 CONFIGURATION SECTION.                                           00090000
 02110 SOURCE-COMPUTER.  GNULINUX.                                      00100000
 02120 OBJECT-COMPUTER.  HERCULES.                                      00110000
 02200 SPECIAL-NAMES.                                                   00120000
 02210     CONSOLE IS CONSL.                                            00130000
 03000 DATA DIVISION.                                                   00140000
 04000 PROCEDURE DIVISION.                                              00150000
 04100 00-MAIN.                                                         00160000
 04110     DISPLAY 'HELLO, WORLD' UPON CONSL.                           00170000
 04900     STOP RUN.                                                    00180000
//LKED.SYSLIB DD DSNAME=SYS1.COBLIB,DISP=SHR                            00190000
//            DD DSNAME=SYS1.LINKLIB,DISP=SHR                           00200000
//GO.SYSPRINT DD SYSOUT=A                                               00210000
//                                                                      00220000

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

    19.52.48 JOB    3  $HASP100 COBUCLG  ON READER1     COBOL BASE TEST
    19.52.48 JOB    3  IEF677I WARNING MESSAGE(S) FOR JOB COBUCLG  ISSUED
    19.52.48 JOB    3  $HASP373 COBUCLG  STARTED - INIT 1 - CLASS A - SYS BSP1
    19.52.48 JOB    3  IEC130I SYSPUNCH DD STATEMENT MISSING
    19.52.48 JOB    3  IEC130I SYSLIB   DD STATEMENT MISSING
    19.52.48 JOB    3  IEC130I SYSPUNCH DD STATEMENT MISSING
    19.52.48 JOB    3  IEFACTRT - Stepname  Procstep  Program   Retcode
    19.52.48 JOB    3  COBUCLG    BASETEST  COB       IKFCBL00  RC= 0000
    19.52.48 JOB    3  COBUCLG    BASETEST  LKED      IEWL      RC= 0000
    19.52.48 JOB    3  +HELLO, WORLD
    19.52.48 JOB    3  COBUCLG    BASETEST  GO        PGM=*.DD  RC= 0000
    19.52.48 JOB    3  $HASP395 COBUCLG  ENDED

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

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

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

[ редактировать ]

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

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

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

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

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

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

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

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

[ редактировать ]

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

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

Синтаксис многословного

[ редактировать ]
COBOL: /koh′bol/, n.

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

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

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

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

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

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

[ редактировать ]

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

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

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

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

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

В 2003 году COBOL показал 80% учебных программ по информационным системам в Соединенных Штатах, та же доля, что и C ++ и Java . [ 195 ] Десять лет спустя опрос Micro Focus показал, что 20% университетских ученых считали, что Кобол устарел или мертв, и что 55% считали, что их ученики считают, что Кобол устарел или мертв. Тот же опрос также обнаружил, что только 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 ] повлиял на разработку директив . [ 129 ]

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

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

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Специально влияло на объектно-ориентированные функции COBOL 2002. [ 3 ] [ 4 ] [ 5 ]
  2. ^ TOMBSTONE в настоящее время находится в Музее истории компьютера . [ 64 ]
  3. ^ Jump up to: а беременный Читатель следует предупредить, что, хотя исследование Gartner Group 1997 года повсеместно ссылается на знаменитую цитату «200 миллиардов линий кобола», фактический отчет трудно найти. [ 204 ] Более того, некоторые спекуляли [ 205 ] Это «единственным участием Гартнера в этих числах» было исследование 1995 года [ 206 ] который «прогнозировал, что исправление ошибки Y2K будет стоить 1 доллар за строку или общего числа 300 миллиардов долларов», что вызвало неправильное толкование отчета.
  4. ^ Расширения, специфичные для поставщика, приводят к тому, что многие реализации имеют гораздо больше: одна реализация распознает более 1100 ключевых слов. [ 126 ]
  1. ^ Jump up to: а беременный Саммет, Джин Э. (март 2000 г.). «Настоящие создатели кобола». Программное обеспечение IEEE . 17 (2): 30–32. doi : 10.1109/52,841602 . ISSN   1937-4194 . Комитет с коротким дальности усердно работал с июня 1959 года, но были большие трудности в том, чтобы довольно крупный комитет попытался создать язык программирования. В ноябре председатель комитета с краткосрочной перспективой назначил шесть человек для разработки спецификаций для рассмотрения: Уильям Селден и Гертруда Тирни (IBM), Говард Бромберг и Норман скидка (RCA), а также Вернон Ривз и Жан Э. Саммет (Sylvania Electric Products). Мы работали в течение двух полных недель (включая несколько круглосуточных сессий) в ноябре 1959 года и отправили предлагаемые спецификации в полный комитет с краткосрочной перспективой, который принял почти все из них. После некоторого редактирования (те же шесть человек) мы обратились к спецификациям в качестве окончательного отчета в декабре в исполнительный комитет, который принял их в январе 1960 года. После некоторого дальнейшего редактирования правительственная типография выпустила Cobol 60. [.. .] [Грейс Хоппер] не участвовала в своей работе, за исключением общего руководства, которое она дала своим сотрудникам, которые были прямыми членами комитета. Таким образом, хотя ее косвенное влияние было очень важным, к сожалению, частые повторяющиеся утверждения, которые «Грейс Хоппер разработал Кобол» или «Грейс Хоппер был разработчиком кодового кобола» или «Грейс Хоппер - это мать Кобола», просто неверны.
  2. ^ Технический стандарт, язык COBOL (PDF) . X/Open Company Ltd., Великобритания, декабрь 1991 года. ISBN  1-872630-09-х .
  3. ^ Jump up to: а беременный в Саад, Генри; Уоллес, Энн (октябрь 1995). "Cobol '97: отчет о состоянии" . Журнал доктора Добба . Архивировано с оригинала 22 апреля 2014 года . Получено 21 апреля 2014 года .
  4. ^ Jump up to: а беременный Аранца, Эдмунд С.; Койл, Фрэнк П. (февраль 1998 г.). Объектно-ориентированный кобол . Издательство Кембриджского университета . п. 15. ISBN  978-0132611404 Полем Стиль объектно-ориентированного COBOL отражает влияние SmallTalk и C ++.
  5. ^ Аранца, Эдмунд С.; Койл, Фрэнк П. (март 1997 г.). «Кобол: восприятие и реальность». Компьютер 30 (3): 127. doi : 10.1109/2,573683 . ISSN   0018-9162 .
  6. ^ Имаджо, Тецуджи; и др. (Сентябрь 2000). Сценарий COBOL: язык сценариев, ориентированный на бизнес . Enterprise Distribute Object Componse Conference . Макухари, Япония: IEEE. doi : 10.1109/edoc.2000.882363 . ISBN  0769508650 .
  7. ^ Хо, Вин Хонг (7 мая 2007 г.). «Введение в EGL» (PDF) . IBM Software Group. Архивировано из оригинала (PDF) 13 января 2019 года . Получено 12 января 2019 года .
  8. ^ Радин, Джордж (1978). Wexelblat, Richard L. (ed.). Ранняя история и характеристики PL/I . История языков программирования. Академическая пресса (опубликовано 1981). п. 572. DOI : 10.1145/800025.1198410 . ISBN  0127450408 .
  9. ^ "Что такое PL/B - язык программирования для бизнеса?" Полем sysmaker.com . Infopro, Inc. Получено 22 апреля 2022 года . ... преобразование в альтернативный, расширенный COBOL или в ANSI COBOL очень сложно, если вообще возможно
  10. ^ Jump up to: а беременный в Митчелл, Роберт Л. (4 октября 2006 г.). «Кобол: еще не мертв» . Computerworld . Получено 27 апреля 2014 года .
  11. ^ Митчелл, Роберт Л. (14 марта 2012 г.). «Стечение мозга: куда системы кобола идут отсюда» . Computerworld . Получено 9 февраля 2015 года .
  12. ^ Ensmenger, Nathan L. (2009). Компьютерные мальчики вступают во владение: компьютеры, программисты и политика технической экспертизы . MIT Press . п. 100. ISBN  978-0262050937 Полем LCCN   2009052638 .
  13. ^ ISO/IEC JTC 1/SC 22/WG 4 2023 .
  14. ^ Фергюсон, Эндрю. «История языков компьютерного программирования» . cs.brown.edu . Получено 12 марта 2018 года .
  15. ^ «Программирование мэйнфрейма кобола» .
  16. ^ Groenfeldt, Tom. «Covid ускоряет миграцию мэйнфреймов банка в облако» . Форбс .
  17. ^ Бейер 2009 , с. 282
  18. ^ Гюрер, Дениз (1 июня 2002 г.). «Новаторские женщины в информатике». Sigcse Bull . 34 (2): 175–180. doi : 10.1145/543812.543853 . ISSN   0097-8418 . S2CID   2577644 .
  19. ^ Beyer 2009 , с. 281–282.
  20. ^ Velvet 1978a , p.
  21. ^ Флахив, Пол (24 мая 2019 г.). «Как Кобал все еще поддерживает мировую экономику в 60 лет» . Техасское общественное радио . Архивировано из оригинала 24 мая 2019 года . Получено 19 июля 2019 года . (Грейс Хоппер) Прозвище бабушка Кобол, код был основан на некоторых из ее предыдущих работ. Она сказала - услышав слухи - одна из ее сотрудников вышла и купила гранитную надгробную плиту. «У него было слово Кобал вырезан в передней части. Затем он отправил его экспресс, собрав мистеру Филлипсу в Пентагоне». Шутка на Чарльзе Филлипса, лидера проекта в Министерстве обороны, привлек внимание полномочий, которые были и стали поворотным моментом, по ее словам. Кобал станет самым широко используемым и самым длинным продолжительным компьютерным языком в истории.
  22. ^ Бейер 2009 , с. 283.
  23. ^ Бейер 2009 , с. 284
  24. ^ «Ранние встречи конференции по языкам систем данных». IEEE ANNALS ИСТОРИЯ ИСКУССТВА . 7 (4): 316–325. 1985. DOI : 10.1109/mahc.1985.10047 . S2CID   35625728 .
  25. ^ Jump up to: а беременный в дюймовый и Бархат 2004 , с.
  26. ^ Бейер 2009 , с. 286
  27. ^ Jump up to: а беременный Коннер 1984 , с. ID/9.
  28. ^ Velvet 1978a , p.
  29. ^ Jump up to: а беременный в дюймовый Бемер 1971 , с. 132.
  30. ^ Бейер 2009 , с. 288
  31. ^ Velvet 1978a , p.
  32. ^ Codasyl 1969 , § I.2.1.1.
  33. ^ Velvet 1978a , p.
  34. ^ Codasyl 1969 , § I.1.2.
  35. ^ Бейер 2009 , с. 290.
  36. ^ Саммет, Джин (1978). «Ранняя история кобола». ACM Sigplan замечает . 13 (8): 121–161. doi : 10.1145/960118.808378 . S2CID   10743643 .
  37. ^ Velvet 1978a , p.
  38. ^ Адамс, Вики Портер (5 октября 1981 года). «Капитан Грейс М. Хоппер: мать Кобола» . InfoWorld . Тол. 3, нет. 20. с. 33. ISSN   0199-6649 .
  39. ^ Беттс, Митч (6 января 1992 г.). «Грейс Хоппер, мать Кобола, умирает» . Computerworld . 26 (1): 14.
  40. ^ Лор, Стив (2008). Перейдите к: История математических майоров, игроков моста, инженеров, шахматных волшебников, ученых -индивидуалов и иконоборцев - программистов, которые создали революцию в программном обеспечении . Основные книги . п. 52. ISBN  978-0786730766 .
  41. ^ «Новаторский инженер программного обеспечения и кобола-конгресс» . Ирландские времена .
  42. ^ Jump up to: а беременный Бейер 2009 , с. 292
  43. ^ Бемер 1971 , с. 131.
  44. ^ Бейер 2009 , с. 296
  45. ^ Velvet 1978a , p.
  46. ^ Бейер 2009 , с. 291.
  47. ^ «Устная история капитана Грейс Хоппер» (PDF) . Музей компьютерной истории . Декабрь 1980 г. с. 37. Архивировано из оригинала (PDF) 25 декабря 2017 года . Получено 28 июня 2014 года .
  48. ^ Velvet 1978a , p.
  49. ^ Marcotty 1978a , p. 268.
  50. ^ Velvet 1978a , pp. 205–206.
  51. ^ Jump up to: а беременный Velvet 1978a , Рисунок 8.
  52. ^ Velvet 1978a , pp. 230–231.
  53. ^ ISO / IEC JTC 1 / SC 22 / WG 4 2001 , с. 846.
  54. ^ Velvet 1978a , p.
  55. ^ Velvet 1978a , p.
  56. ^ Velvet 1978a , p.
  57. ^ Бемер 1971 , с. 132: Мы не можем найти ни одного человека, который признает, что придумывает аббревиатуру "Cobol" .
  58. ^ Sammet 1978a , p. 210: На следующий день название Кобол, наконец, было согласовано в качестве аббревиатуры для общего бизнеса, ориентированного на бизнес. К сожалению, мои заметки не показывают, кто сделал это предложение .
  59. ^ Салливан, Патриция (25 июня 2004 г.). "Компьютерный пионер Боб Бемер, 84" . The Washington Post . п. B06 . Получено 28 июня 2014 года .
  60. ^ «Отчет COBOL - интервью с Бобом Бемере - отцом Кобола» . Архивировано с оригинала 2 апреля 2018 года.
  61. ^ «Отчет 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. ^ Jump up to: а беременный в Бемер 1971 , с. 133.
  71. ^ Jump up to: а беременный Бейер 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 Language Research , версия 15, январь 2009 г.; IBM Corporation: Enterprise Cobol для ссылки на язык Z/OS , версия 4 Release 1, SC23-8528-00, декабрь 2007 г.
  74. ^ Гарфанкел, Джером (11 ноября 1984 г.). «В защиту Кобола» . Computerworld . 18 (24): ID/19.
  75. ^ Пратт, Терренс В. (1975). Языки программирования: проектирование и реализация . Englewood Cliffs, Нью -Джерси: Prentice Hall. С. 361–362, 381–382. ISBN  0-13-730432-3 .
  76. ^ Jump up to: а беременный Бемер 1971 , с. 134.
  77. ^ Браун 1976 , с. 48
  78. ^ Codasyl 1969 , § I.2.2.4.
  79. ^ Codasyl 1969 , § I.2.3.
  80. ^ Jump up to: а беременный в дюймовый Фоллет, Роберт Х.; Соберите, Джин Э. (2003). «Стандарты языка программирования» . В Ральстоне, Энтони; Оленя, Эдвин Д.; Hemmendinger, David (Eds.). Энциклопедия информатики (4 -е изд.). Уайли. п. 1467. ISBN  978-0470864128 .
  81. ^ Jump up to: а беременный Бейер 2009 , с. 301.
  82. ^ Jump up to: а беременный Браун 1976 , с. 49
  83. ^ Браун 1976 , с. 52
  84. ^ Тейлор, Алан (2 августа 1972 г.). «Мало кто осознает потраченные впустую ресурсы местных школ DP» . Computerworld . 6 (31): 11.
  85. ^ Traince, JM (1974). Программирование в COBOL: курс двенадцати телевизионных лекций . Манчестерское университетское издательство. п. 87. ISBN  978-0719005923 .
  86. ^ Klein 2010 , с. 16
  87. ^ Бэйрд, Джордж Н.; Оливер, Павел (май 1977). «Стандарт 1974 года (X3.23–1974)». Стандарты языка программирования - кому они нужны? (PDF) (отчет). Департамент военно -морского флота . С. 19–21. Архивировано (PDF) из оригинала 7 января 2014 года . Получено 7 января 2014 года .
  88. ^ Каллетон, Джон Р. младший (23 июля 1975 г.). « Spotty» доступность проблема ... » Computerworld . 9 (30): 17.
  89. ^ Симмонс, Уильямс Б. (18 июня 1975 года). "Действительно ли писатель отчетов Cobol действительно упускает отметку?" Полем Computerworld . 9 (25): 20.
  90. ^ Шур, Рита (26 января 1981 года). «Пользователь угрожает искупленность ANSI COBOL-80» . Computerworld . 15 (4): 1, 8.
  91. ^ Шур, Рита (26 октября 1981 г.). «DPMA выступает против драфта Cobol» . Computerworld . 15 (43): 1–2.
  92. ^ Jump up to: а беременный в Галлант, Джон (16 сентября 1985 г.). «Пересмотренный стандарт COBOL может быть готов в конце 85 года» . Computerworld . 19 (37): 1, 8.
  93. ^ Jump up to: а беременный «Эксперт обращается к стандарту COBOL 85» . Computerworld . 19 (37): 41, 48. 16 сентября 1985 года.
  94. ^ Пол, Лоис (15 марта 1982 г.). «Ответы на COBOL-80 в подавляющем большинстве отрицательно» . Computerworld . 16 (11): 1, 5.
  95. ^ Пол, Лоис (25 апреля 1983 г.). «В исследовании мало проблем переключается на COBOL-8X» . Computerworld . 17 (17): 1, 6.
  96. ^ Гиллин, Пол (19 ноября 1984 г.). «Пользователи DEC получают Head Start внедрить COBOL-80» . Computerworld . 18 (47): 1, 6.
  97. ^ ClearPath Enterprise Servers (апрель 2015 г.). «Справочное руководство по программированию COBOL ANSI-85» (PDF) . public.support.unisys.com . Unisys . Получено 29 апреля 2022 года .
  98. ^ Garfunkel 1987 , p. 150
  99. ^ Рой, MK; Dastidar, D. Ghost (1 июня 1989 г.). «Особенности COBOL-85». Программирование COBOL: проблемы и решения (2 -е изд.). McGraw-Hill Education. С. 438–451. ISBN  978-0074603185 .
  100. ^ Робинсон, Брайан (9 июля 2009 г.). «Кобол остается старым в режиме ожидания в агентствах, несмотря на то, что показывает свой возраст» . FCW . Государственный сектор Media Group. Архивировано с оригинала 27 апреля 2014 года . Получено 26 апреля 2014 года .
  101. ^ Jump up to: а беременный «Стандарты COBOL» . Микро фокус. Архивировано из оригинала 31 марта 2004 года . Получено 2 сентября 2014 года .
  102. ^ "NetCobol для .net" . netcobol.com . Gtsoftware. 2013. Архивировано из оригинала 8 июля 2014 года . Получено 29 января 2014 года .
  103. ^ «Список функций Codasyl Cobol» . Computerworld . 18 (37): ID/28. 10 сентября 1984 года . Получено 8 июня 2014 года .
  104. ^ ISO/IEC JTC 1/SC 22/WG 4 2001 , Приложение F.
  105. ^ Klein 2010 , с. 21
  106. ^ Jump up to: а беременный "JTC1/SC22/WG4 - COBOL" . Iso. 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. ^ Jump up to: а беременный в ISO/ITC 1/SC 22/WG 4 2023 , § IN.1.
  111. ^ Jump up to: а беременный в дюймовый и ISO/ITC 1/SC 22/WG 4 2 2023 , § в.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. ^ Кизиор, Рональд Дж.; Карр, Дональд; Халперн, Пол. "Есть ли у Кобола будущее?" (PDF) . Материалы конференции по образованию информационных систем 2000 года . 17 (126). Архивировано из оригинала (PDF) 17 августа 2016 года . Получено 30 сентября 2012 года .
  115. ^ Уайт, Дуг (12 июля 1998 г.). «Часто задаваемые вопросы (FAQ) о проблеме Y2K» . Homepages.wmich.edu . Архивировано из оригинала 7 ноября 2021 года . Получено 29 апреля 2022 года . Таким образом, основной проблемой Y2K является проблема неправильных результатов, когда проводятся математика даты.
  116. ^ Каппельман, Леон А. (2000). «Некоторые стратегические благословения Y2K» . Программное обеспечение IEEE . 17 (2): 42–46. doi : 10.1109/52,841605 .
  117. ^ Carr & Kizior 2003 , p. 16
  118. ^ Carr & Kizior 2003 , p. 10
  119. ^ "Cobol Brain Drain: результаты обследования" . Computerworld . 14 марта 2012 года . Получено 27 апреля 2014 года .
  120. ^ Паунер, Дэвид А. (25 мая 2016 г.). «Федеральные агентства должны учитывать стареющие устаревшие системы» (PDF) . Государственное управление ответственности . п. 18. Архивировано из оригинала (PDF) 15 июня 2016 года . Получено 19 июля 2019 года . Несколько агентств, такие как Министерство сельского хозяйства (USDA), DHS, HHS, правосудие, казначейство и VA, сообщили об использовании общего бизнеса, ориентированного на бизнес (COBOL) - языка программирования, разработанного в конце 1950 -х и начале 1960 -х годов - для программирования своего наследия. система Широко известно, что агентства должны перейти на более современные, поддерживаемые языки, как это необходимо и возможно.
  121. ^ "Cobol Blues" . Рейтер . Получено 8 апреля 2020 года .
  122. ^ Теплицкий, Фил (25 октября 2019 г.). «Закрытие пробела навыков программирования COBOL» . Журнал IBM Systems, IBM Z. Архивировано из оригинала 13 апреля 2020 года . Получено 11 июня 2020 года .
  123. ^ Ли, Алисия (8 апреля 2020 года). «Разыскивается срочно: люди, которые знают на полвековой компьютерной языке, чтобы государства могли обрабатывать претензии по безработице» . CNN . Получено 8 апреля 2020 года .
  124. ^ Лонг, Хизер; Стейн, Джефф; Рейн, Лиза; Ромм, Тони (17 апреля 2020 года). «Проверки стимула и другие облегчения коронавируса, затрудненные устаревшими технологиями и развертыванием каменистого правительства» . The Washington Post . Получено 19 апреля 2020 года .
  125. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.9.
  126. ^ "Зарезервированные слов таблица" . Micro Focus Visual Cobol 2.2 Справочник по языку кобола . Микро фокус . Получено 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. ^ Jump up to: а беременный в дюймовый Shneiderman 1985 , p. 349.
  130. ^ McCracken 1976 , с. 2, 6–9.
  131. ^ Jump up to: а беременный ISO / IEC JTC 1 / SC 22 / WG 411 , § F.2.
  132. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § § 18.2.
  133. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § D.18.
  134. ^ Iso / iect jtc 1 / sc 22 / wg 4 2014 , с. 108
  135. ^ Iso / iect jtc 1 / sc 22 / wg 4 2014 , с. 896.
  136. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § § 1.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). SAMS обучает себя COBOL за 24 часа . SAMS Publishing . п. 40. ISBN  978-0672314537 Полем LCCN   98087215 .
  141. ^ McCracken & Golden 1988 , § 19.9.
  142. ^ Cutler 2014 , § 5.8.5.
  143. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.5.2.
  144. ^ Jump up to: а беременный 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 / iect jtc 1 / sc 22 / wg 4 2014 , с. 855.
  149. ^ Jump up to: а беременный McCracken 1976 , p. 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 . doi : 10.1145/381788.316163 . ISBN  1581131372 Полем Архивировано (PDF) из оригинала 24 декабря 2010 года.
  153. ^ Jump up to: а беременный в Вирман, Нильс; Верховен, Эрнст-Ян (ноябрь 2006 г.). «Обнаружение минного поля COBOL» (PDF) . Программное обеспечение: практика и опыт . 36 (14). doi : 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 , § § 6.5.2.2.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 / iect jtc 1 / sc 22 / wg 4 2014 , с. 899.
  160. ^ Jump up to: а беременный McCracken & Golden 1988 , § 8.4.
  161. ^ Примеры поддержки компилятора для ALTER можно увидеть в следующем:
    • Тиффин, Брайан (18 сентября 2013 г.). "Сентябрь 2013 года" . GNU COBOL . Архивировано из оригинала 5 мая 2014 года . Получено 5 января 2014 года .
    • «Альтер -заявление» . Micro Focus Visual Cobol 2.2 для Visual Studio 2013. Справочник по языку COBOL . Микро фокус . Получено 5 января 2014 года .
    • "ALTER OPTION (ядро)" (PDF) . Справочное руководство COBOL85 . Fujitsu. Ноябрь 1996 г. с. 555. Архивировано из оригинала (PDF) 6 января 2014 года . Получено 5 января 2014 года .
    • "Альпет -заявление" . Enterprise Cobol для ссылки на язык Z/OS . IBM. Июнь 2013 года . Получено 5 января 2014 года .
  162. ^ ISO / IEC JTC 1 / SC 22 / WG 411 , § F ..
  163. ^ Jump up to: а беременный McCracken 1976 , p. 355.
  164. ^ Мозли, Джей (17 января 2015 г.). «Компилятор Cobol от MVT» . Получено 19 июля 2015 года .
  165. ^ Дейкстра, Эдсгер В. (18 июня 1975 г.). "Как мы можем говорить правды, которые могут повредить?" Полем Техасский университет в Остине. EWD498. Архивировано из оригинала 2 мая 2017 года . Получено 29 августа 2007 года .
  166. ^ Томпкинс, он (1983). «В защиту преподавания структурированного кобола в качестве компьютерной науки» . ACM Sigplan замечает . 18 (4): 86–94. doi : 10.1145/948176.948186 . S2CID   33803213 .
  167. ^ Jump up to: а беременный Riehle 1992 , p. 125
  168. ^ Shneiderman 1985 , с. 349–350.
  169. ^ Кофлан, Майкл (16 марта 2014 г.). Начало COBOL для программистов . Апресс. п. 4. ISBN  978-1430262534 Полем Получено 13 августа 2014 года .
  170. ^ Velvet 1978b , p.
  171. ^ Riehle 1992 , p. 126
  172. ^ Riehle 1992 , p. 127
  173. ^ «COBOL и Legacy Code как системный риск | голый капитализм» . 19 июля 2016 года . Получено 23 июля 2016 года .
  174. ^ Lämmel, Ralf; Верхоф, Крис (ноябрь -декабрь 2001 г.). «Требование проблемы на 500 языках» (PDF) . Программное обеспечение IEEE . 18 (6): 79. doi : 10.1109/52,965809 . HDL : 1871/9853 . Архивировано из оригинала (PDF) 19 августа 2014 года.
  175. ^ Howkins, TJ; Харанди, MT (апрель 1979 г.). «На пути к более портативному коболу» . Компьютерный журнал . 22 (4): 290. DOI : 10.1093/comjnl/22.4.290 .
  176. ^ Garfunkel 1987 , p. 11
  177. ^ Garfunkel 1987 , p. 15
  178. ^ Рэймонд, Эрик С. (1 октября 2004 г.). "Кобал" . Файл жаргона, версия 4.4.8 . Архивировано из оригинала 30 августа 2014 года . Получено 13 декабря 2014 года .
  179. ^ Браун 1976 , с. 53
  180. ^ Codasyl 1969 , § II.1.1.
  181. ^ Shneiderman 1985 , p. 350.
  182. ^ Velvet 1961 , p.
  183. ^ Jump up to: а беременный Коннер 1984 , с. ID/10.
  184. ^ Marcotty 1978a , p. 263.
  185. ^ Коннер 1984 , с. ID/14.
  186. ^ Бархат 1961 , с.
  187. ^ Marcotty 1978a , p. 266
  188. ^ Velvet 1978b , p.
  189. ^ Shneiderman 1985 , с. 348–349.
  190. ^ Конвей, Ричард; Грис, Дэвид (1973). Введение в программирование: структурированный подход с использованием PL/1 и PL/C . Кембридж, штат Массачусетс: Уинтроп Издатели. п. 341. ISBN  0-87626-405-4 .
  191. ^ «Логика и программирование COBOL, третье издание 1974 года» . Архивировано с оригинала 5 марта 2016 года . Получено 25 февраля 2016 года .
  192. ^ Shneiderman 1985 , p. 351.
  193. ^ «Интервью: защитник кобола» . Computerworld . 18 (37): ID/29 - ID/32. 10 сентября 1984 года . Получено 8 июня 2014 года .
  194. ^ Пратт, Терренс В.; Зелковиц, Марвин В. (1984). Языки программирования: проектирование и реализация (2 -е изд.). Englewood Cliffs, NJ: Prentice Hall. ISBN  0136780121 .
  195. ^ Carr & Kizior 2003 , p. 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. doi : 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 года . Пересмотр в июне 2008 года стандарт COBOL
  200. ^ Бэбкок, Чарльз (14 июля 1986 г.). «Стандартные дополнения COBOL» . Computerworld . 20 (28): 1, 12.
  201. ^ Marcotty 1978b , p. 274
  202. ^ Это можно увидеть в:
  203. ^ Кофлан, Майкл (2002). «Введение в Кобол» . Архивировано из оригинала 5 марта 2023 года.
  204. ^ "Gartner Group Исследования" . 1997-2001.state.gov . 2000 год управления программами. 2000 . Получено 23 апреля 2022 года .
  205. ^ Энгельманн, Виктор (8 апреля 2021 года). «Кобал-проверка» . Cobsolete.de . Cobsolete . Получено 23 апреля 2022 года .
  206. ^ «Что будет иметь в будущем». -директор ИТ Международная группа данных. 15 декабря 1995 г. - 1 января 1996 г. с. 82

Источники

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: cb498cd27d1ad3909b828eb70f620420__1726713420
URL1:https://arc.ask3.ru/arc/aa/cb/20/cb498cd27d1ad3909b828eb70f620420.html
Заголовок, (Title) документа по адресу, URL1:
COBOL - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)