Кобол
![]() Cobol 60 Отчет Кодасилу (апрель 1960 г.) | |
Парадигма | Процедурные , императивные , объектно-ориентированные , универсальные |
---|---|
Спроектирован | Говард Бромберг , Нормана Скидки , Вернон Ривз , Джин Э. Саммет , Уильям Селден , Гертруда Тирни , с косвенным влиянием Грейс Хоппер [ 1 ] |
Разработчики | Codasyl , ANSI , ISO / IEC |
Впервые появился | 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 Oʊ 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 ]
COBOL 60
[ редактировать ]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-68
[ редактировать ]Усилия начали стандартизировать COBOL, чтобы преодолеть несовместимость между версиями. В конце 1962 года как ISO, так и Институт стандартов Соединенных Штатов Америки (ныне ANSI ) создали группы для создания стандартов. В августе 1968 года ANSI продюсировал стандартный Cobol X3.23 , который стал краеугольным камнем для более поздних версий. [ 79 ] Эта версия была известна как American National Standard (ANS) COBOL и была принята ISO в 1972 году. [ 80 ]
COBOL-74
[ редактировать ]К 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 ]
COBOL-85
[ редактировать ]В июне 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 ]
- Код бесплатной формы
- Пользовательские функции
- Рекурсия
- Локаль -основанная обработка
- Поддержка расширенных наборов символов, таких как Unicode
- Плавающая точка и бинарные их объявления ) базы-10 типы данных (до тех пор, бинарные элементы были усечены на основе спецификации
- Портативные арифметические результаты
- Бит и логические типы данных
- Указатели и синтаксис для получения и освобождения хранения
- А
SCREEN SECTION
Для текстовых пользовательских интерфейсов - А
VALIDATE
средство - Улучшенная совместимость с другими языками программирования и структуру, такими как .NET и Java .
Три Корригенда были опубликованы для стандарта: два в 2006 году и один в 2009 году. [ 106 ]
COBOL 2014
[ редактировать ]В период с 2003 по 2009 год было произведено три технических отчеты с описанием завершения объекта , обработки XML и классов сбора для COBOL. [ 106 ]
Cobol 2002 страдал от плохой поддержки: ни один компиляторы полностью не поддерживали стандарт. Micro Focus обнаружил, что это было связано с отсутствием пользовательского спроса на новые функции и из -за отмены набора тестов NIST , который использовался для проверки соответствия компилятора. Также было обнаружено, что процесс стандартизации является медленным и недооцененным. [ 107 ]
COBOL 2014 включает в себя следующие изменения: [ 108 ]
- Результаты портативных арифметиков были заменены на IEEE 754 Типы данных
- Основные функции были сделаны необязательными, например
VALIDATE
объект, писатель отчетов и экрановая установка - Метод перегрузка
- Таблицы динамических мощностей (функция, выброшенная с черновика Cobol 2002) [ 109 ]
COBOL 2023
[ редактировать ]Стандарт COBOL 2023 добавил несколько новых функций:
- Асинхронный синтаксис обмена сообщениями с использованием
SEND
иRECEIVE
заявления [ 110 ] - Обработка транзакций с
COMMIT
иROLLBACK
[ 110 ] XOR
логический оператор [ 110 ]- А
CONTINUE
Заявление может быть расширено, чтобы приостановить программу для указанной продолжительности [ 111 ] - А
DELETE FILE
заявление [ 111 ] LINE SEQUENTIAL
Файл Организация [ 112 ]- Определил бесконечный цикл с
PERFORM UNTIL EXIT
[ 111 ] SUBSTITUTE
Внутренняя функция, позволяющая заменить подстроение различной длины [ 111 ]CONVERT
функция для базовой конверсии [ 111 ]- Логические операторы сдвига [ 113 ]
Пока еще нет известной полной реализации этого стандарта. [ Цитация необходима ]
Наследие
[ редактировать ]Программы 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"
Формат кода
[ редактировать ]

Высота популярности Кобола совпала с эпохой машин клавиатуры и перфорированных карт . Сама программа была записана на перфорированные карты, затем читалась и скомпилирована, и данные, поданные в программу, иногда также были на картах. [ 130 ]
COBOL может быть записан в двух форматах: исправлен (по умолчанию) или бесплатно. В фиксированном формате код должен быть выровнен, чтобы соответствовать определенным областям (удержание от использования перфорированных карт). До кобола 2002 года это были:
Имя | Колонка (ы) | Использование |
---|---|---|
Область номера последовательности | 1–6 | Первоначально используется для номеров карт/линий (облегчение с сортировкой механической перфорированной карты для обеспечения предполагаемой последовательности кода программы после ручного редактирования/обработки), эта область игнорируется компилятором |
Область индикатора | 7 | Здесь разрешены следующие символы:
|
Область а | 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"
|
Пункт об использовании
[ редактировать ]В этом разделе отсутствует информация о вычислительном возрасте. ( Апрель 2021 г. ) |
А 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 TO
s были в значительной степени заменены 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 ]
Синтаксис многословного
[ редактировать ]Слабый, многословный и дряблый язык, используемый кодами, для того, чтобы делать скучные бессмысленные вещи на мэйнфреймах динозавров. [...] его имя редко произносится без ритуальных выражений отвращения или ужаса.
Файл жаргона 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 ]
Смотрите также
[ редактировать ]- Алфавитный список языков программирования
- Блис/Кобол
- Кодасиль
- Сравнение языков программирования
- Список поколений языков программирования § На основе COBOL
- Список компиляторов § Кобал Компиляторы
Примечания
[ редактировать ]- ^ Специально влияло на объектно-ориентированные функции COBOL 2002. [ 3 ] [ 4 ] [ 5 ]
- ^ TOMBSTONE в настоящее время находится в Музее истории компьютера . [ 64 ]
- ^ Jump up to: а беременный Читатель следует предупредить, что, хотя исследование Gartner Group 1997 года повсеместно ссылается на знаменитую цитату «200 миллиардов линий кобола», фактический отчет трудно найти. [ 204 ] Более того, некоторые спекуляли [ 205 ] Это «единственным участием Гартнера в этих числах» было исследование 1995 года [ 206 ] который «прогнозировал, что исправление ошибки Y2K будет стоить 1 доллар за строку или общего числа 300 миллиардов долларов», что вызвало неправильное толкование отчета.
- ^ Расширения, специфичные для поставщика, приводят к тому, что многие реализации имеют гораздо больше: одна реализация распознает более 1100 ключевых слов. [ 126 ]
Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ 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. [.. .] [Грейс Хоппер] не участвовала в своей работе, за исключением общего руководства, которое она дала своим сотрудникам, которые были прямыми членами комитета. Таким образом, хотя ее косвенное влияние было очень важным, к сожалению, частые повторяющиеся утверждения, которые «Грейс Хоппер разработал Кобол» или «Грейс Хоппер был разработчиком кодового кобола» или «Грейс Хоппер - это мать Кобола», просто неверны.
- ^ Технический стандарт, язык COBOL (PDF) . X/Open Company Ltd., Великобритания, декабрь 1991 года. ISBN 1-872630-09-х .
- ^ Jump up to: а беременный в Саад, Генри; Уоллес, Энн (октябрь 1995). "Cobol '97: отчет о состоянии" . Журнал доктора Добба . Архивировано с оригинала 22 апреля 2014 года . Получено 21 апреля 2014 года .
- ^ Jump up to: а беременный Аранца, Эдмунд С.; Койл, Фрэнк П. (февраль 1998 г.). Объектно-ориентированный кобол . Издательство Кембриджского университета . п. 15. ISBN 978-0132611404 Полем
Стиль объектно-ориентированного COBOL отражает влияние SmallTalk и C ++.
- ^ Аранца, Эдмунд С.; Койл, Фрэнк П. (март 1997 г.). «Кобол: восприятие и реальность». Компьютер 30 (3): 127. doi : 10.1109/2,573683 . ISSN 0018-9162 .
- ^ Имаджо, Тецуджи; и др. (Сентябрь 2000). Сценарий COBOL: язык сценариев, ориентированный на бизнес . Enterprise Distribute Object Componse Conference . Макухари, Япония: IEEE. doi : 10.1109/edoc.2000.882363 . ISBN 0769508650 .
- ^ Хо, Вин Хонг (7 мая 2007 г.). «Введение в EGL» (PDF) . IBM Software Group. Архивировано из оригинала (PDF) 13 января 2019 года . Получено 12 января 2019 года .
- ^ Радин, Джордж (1978). Wexelblat, Richard L. (ed.). Ранняя история и характеристики PL/I . История языков программирования. Академическая пресса (опубликовано 1981). п. 572. DOI : 10.1145/800025.1198410 . ISBN 0127450408 .
- ^ "Что такое PL/B - язык программирования для бизнеса?" Полем sysmaker.com . Infopro, Inc. Получено 22 апреля 2022 года .
... преобразование в альтернативный, расширенный COBOL или в ANSI COBOL очень сложно, если вообще возможно
- ^ Jump up to: а беременный в Митчелл, Роберт Л. (4 октября 2006 г.). «Кобол: еще не мертв» . Computerworld . Получено 27 апреля 2014 года .
- ^ Митчелл, Роберт Л. (14 марта 2012 г.). «Стечение мозга: куда системы кобола идут отсюда» . Computerworld . Получено 9 февраля 2015 года .
- ^ Ensmenger, Nathan L. (2009). Компьютерные мальчики вступают во владение: компьютеры, программисты и политика технической экспертизы . MIT Press . п. 100. ISBN 978-0262050937 Полем LCCN 2009052638 .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2023 .
- ^ Фергюсон, Эндрю. «История языков компьютерного программирования» . cs.brown.edu . Получено 12 марта 2018 года .
- ^ «Программирование мэйнфрейма кобола» .
- ^ Groenfeldt, Tom. «Covid ускоряет миграцию мэйнфреймов банка в облако» . Форбс .
- ^ Бейер 2009 , с. 282
- ^ Гюрер, Дениз (1 июня 2002 г.). «Новаторские женщины в информатике». Sigcse Bull . 34 (2): 175–180. doi : 10.1145/543812.543853 . ISSN 0097-8418 . S2CID 2577644 .
- ^ Beyer 2009 , с. 281–282.
- ^ Velvet 1978a , p.
- ^ Флахив, Пол (24 мая 2019 г.). «Как Кобал все еще поддерживает мировую экономику в 60 лет» . Техасское общественное радио . Архивировано из оригинала 24 мая 2019 года . Получено 19 июля 2019 года .
(Грейс Хоппер) Прозвище бабушка Кобол, код был основан на некоторых из ее предыдущих работ. Она сказала - услышав слухи - одна из ее сотрудников вышла и купила гранитную надгробную плиту. «У него было слово Кобал вырезан в передней части. Затем он отправил его экспресс, собрав мистеру Филлипсу в Пентагоне». Шутка на Чарльзе Филлипса, лидера проекта в Министерстве обороны, привлек внимание полномочий, которые были и стали поворотным моментом, по ее словам. Кобал станет самым широко используемым и самым длинным продолжительным компьютерным языком в истории.
- ^ Бейер 2009 , с. 283.
- ^ Бейер 2009 , с. 284
- ^ «Ранние встречи конференции по языкам систем данных». IEEE ANNALS ИСТОРИЯ ИСКУССТВА . 7 (4): 316–325. 1985. DOI : 10.1109/mahc.1985.10047 . S2CID 35625728 .
- ^ Jump up to: а беременный в дюймовый и Бархат 2004 , с.
- ^ Бейер 2009 , с. 286
- ^ Jump up to: а беременный Коннер 1984 , с. ID/9.
- ^ Velvet 1978a , p.
- ^ Jump up to: а беременный в дюймовый Бемер 1971 , с. 132.
- ^ Бейер 2009 , с. 288
- ^ Velvet 1978a , p.
- ^ Codasyl 1969 , § I.2.1.1.
- ^ Velvet 1978a , p.
- ^ Codasyl 1969 , § I.1.2.
- ^ Бейер 2009 , с. 290.
- ^ Саммет, Джин (1978). «Ранняя история кобола». ACM Sigplan замечает . 13 (8): 121–161. doi : 10.1145/960118.808378 . S2CID 10743643 .
- ^ Velvet 1978a , p.
- ^ Адамс, Вики Портер (5 октября 1981 года). «Капитан Грейс М. Хоппер: мать Кобола» . InfoWorld . Тол. 3, нет. 20. с. 33. ISSN 0199-6649 .
- ^ Беттс, Митч (6 января 1992 г.). «Грейс Хоппер, мать Кобола, умирает» . Computerworld . 26 (1): 14.
- ^ Лор, Стив (2008). Перейдите к: История математических майоров, игроков моста, инженеров, шахматных волшебников, ученых -индивидуалов и иконоборцев - программистов, которые создали революцию в программном обеспечении . Основные книги . п. 52. ISBN 978-0786730766 .
- ^ «Новаторский инженер программного обеспечения и кобола-конгресс» . Ирландские времена .
- ^ Jump up to: а беременный Бейер 2009 , с. 292
- ^ Бемер 1971 , с. 131.
- ^ Бейер 2009 , с. 296
- ^ Velvet 1978a , p.
- ^ Бейер 2009 , с. 291.
- ^ «Устная история капитана Грейс Хоппер» (PDF) . Музей компьютерной истории . Декабрь 1980 г. с. 37. Архивировано из оригинала (PDF) 25 декабря 2017 года . Получено 28 июня 2014 года .
- ^ Velvet 1978a , p.
- ^ Marcotty 1978a , p. 268.
- ^ Velvet 1978a , pp. 205–206.
- ^ Jump up to: а беременный Velvet 1978a , Рисунок 8.
- ^ Velvet 1978a , pp. 230–231.
- ^ ISO / IEC JTC 1 / SC 22 / WG 4 2001 , с. 846.
- ^ Velvet 1978a , p.
- ^ Velvet 1978a , p.
- ^ Velvet 1978a , p.
- ^ Бемер 1971 , с. 132: Мы не можем найти ни одного человека, который признает, что придумывает аббревиатуру "Cobol" .
- ^ Sammet 1978a , p. 210: На следующий день название Кобол, наконец, было согласовано в качестве аббревиатуры для общего бизнеса, ориентированного на бизнес. К сожалению, мои заметки не показывают, кто сделал это предложение .
- ^ Салливан, Патриция (25 июня 2004 г.). "Компьютерный пионер Боб Бемер, 84" . The Washington Post . п. B06 . Получено 28 июня 2014 года .
- ^ «Отчет COBOL - интервью с Бобом Бемере - отцом Кобола» . Архивировано с оригинала 2 апреля 2018 года.
- ^ «Отчет COBOL - интервью с Бобом Бемере - отцом Кобола» . Архивировано из оригинала 23 декабря 2003 года.
- ^ Бейер 2009 , с. 293.
- ^ Бейер 2009 , с. 294
- ^ Кобал надгробная плита . Музей компьютерной истории. 1960 . Получено 29 июня 2014 года .
- ^ «История о надгробии Кобола» (PDF) . Отчет о компьютерном музее . 13 : 8–9. Лето 1985. Архивировал (PDF) из оригинала 3 апреля 2014 года . Получено 29 июня 2014 года .
- ^ Бемер 1971 , с. 130.
- ^ Бейер 2009 , с. 289
- ^ Codasyl 1969 , § I.1.1.
- ^ Браун 1976 , с. 47
- ^ Jump up to: а беременный в Бемер 1971 , с. 133.
- ^ Jump up to: а беременный Бейер 2009 , с. 297
- ^ Уильямс, Кэтлин Брум (10 ноября 2012 г.). Грейс Хоппер: адмирал кибер -моря . Пресс из военно -морского института США. ISBN 978-1612512655 Полем OCLC 818867202 .
- ^ 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 г.
- ^ Гарфанкел, Джером (11 ноября 1984 г.). «В защиту Кобола» . Computerworld . 18 (24): ID/19.
- ^ Пратт, Терренс В. (1975). Языки программирования: проектирование и реализация . Englewood Cliffs, Нью -Джерси: Prentice Hall. С. 361–362, 381–382. ISBN 0-13-730432-3 .
- ^ Jump up to: а беременный Бемер 1971 , с. 134.
- ^ Браун 1976 , с. 48
- ^ Codasyl 1969 , § I.2.2.4.
- ^ Codasyl 1969 , § I.2.3.
- ^ Jump up to: а беременный в дюймовый Фоллет, Роберт Х.; Соберите, Джин Э. (2003). «Стандарты языка программирования» . В Ральстоне, Энтони; Оленя, Эдвин Д.; Hemmendinger, David (Eds.). Энциклопедия информатики (4 -е изд.). Уайли. п. 1467. ISBN 978-0470864128 .
- ^ Jump up to: а беременный Бейер 2009 , с. 301.
- ^ Jump up to: а беременный Браун 1976 , с. 49
- ^ Браун 1976 , с. 52
- ^ Тейлор, Алан (2 августа 1972 г.). «Мало кто осознает потраченные впустую ресурсы местных школ DP» . Computerworld . 6 (31): 11.
- ^ Traince, JM (1974). Программирование в COBOL: курс двенадцати телевизионных лекций . Манчестерское университетское издательство. п. 87. ISBN 978-0719005923 .
- ^ Klein 2010 , с. 16
- ^ Бэйрд, Джордж Н.; Оливер, Павел (май 1977). «Стандарт 1974 года (X3.23–1974)». Стандарты языка программирования - кому они нужны? (PDF) (отчет). Департамент военно -морского флота . С. 19–21. Архивировано (PDF) из оригинала 7 января 2014 года . Получено 7 января 2014 года .
- ^ Каллетон, Джон Р. младший (23 июля 1975 г.). « Spotty» доступность проблема ... » Computerworld . 9 (30): 17.
- ^ Симмонс, Уильямс Б. (18 июня 1975 года). "Действительно ли писатель отчетов Cobol действительно упускает отметку?" Полем Computerworld . 9 (25): 20.
- ^ Шур, Рита (26 января 1981 года). «Пользователь угрожает искупленность ANSI COBOL-80» . Computerworld . 15 (4): 1, 8.
- ^ Шур, Рита (26 октября 1981 г.). «DPMA выступает против драфта Cobol» . Computerworld . 15 (43): 1–2.
- ^ Jump up to: а беременный в Галлант, Джон (16 сентября 1985 г.). «Пересмотренный стандарт COBOL может быть готов в конце 85 года» . Computerworld . 19 (37): 1, 8.
- ^ Jump up to: а беременный «Эксперт обращается к стандарту COBOL 85» . Computerworld . 19 (37): 41, 48. 16 сентября 1985 года.
- ^ Пол, Лоис (15 марта 1982 г.). «Ответы на COBOL-80 в подавляющем большинстве отрицательно» . Computerworld . 16 (11): 1, 5.
- ^ Пол, Лоис (25 апреля 1983 г.). «В исследовании мало проблем переключается на COBOL-8X» . Computerworld . 17 (17): 1, 6.
- ^ Гиллин, Пол (19 ноября 1984 г.). «Пользователи DEC получают Head Start внедрить COBOL-80» . Computerworld . 18 (47): 1, 6.
- ^ ClearPath Enterprise Servers (апрель 2015 г.). «Справочное руководство по программированию COBOL ANSI-85» (PDF) . public.support.unisys.com . Unisys . Получено 29 апреля 2022 года .
- ^ Garfunkel 1987 , p. 150
- ^ Рой, MK; Dastidar, D. Ghost (1 июня 1989 г.). «Особенности COBOL-85». Программирование COBOL: проблемы и решения (2 -е изд.). McGraw-Hill Education. С. 438–451. ISBN 978-0074603185 .
- ^ Робинсон, Брайан (9 июля 2009 г.). «Кобол остается старым в режиме ожидания в агентствах, несмотря на то, что показывает свой возраст» . FCW . Государственный сектор Media Group. Архивировано с оригинала 27 апреля 2014 года . Получено 26 апреля 2014 года .
- ^ Jump up to: а беременный «Стандарты COBOL» . Микро фокус. Архивировано из оригинала 31 марта 2004 года . Получено 2 сентября 2014 года .
- ^ "NetCobol для .net" . netcobol.com . Gtsoftware. 2013. Архивировано из оригинала 8 июля 2014 года . Получено 29 января 2014 года .
- ^ «Список функций Codasyl Cobol» . Computerworld . 18 (37): ID/28. 10 сентября 1984 года . Получено 8 июня 2014 года .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2001 , Приложение F.
- ^ Klein 2010 , с. 21
- ^ Jump up to: а беременный "JTC1/SC22/WG4 - COBOL" . Iso. 30 июня 2010 г. Архивировано с оригинала 14 февраля 2014 года . Получено 27 апреля 2014 года .
- ^ Биллман, Джон; Клинк, Хуиб (27 февраля 2008 г.). «Мысли о будущем стандартизации COBOL» (PDF) . Архивировано из оригинала (PDF) 11 июля 2009 года . Получено 14 августа 2014 года .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , Приложение E.
- ^ Шрикер, Дон (2 декабря 1998 г.). «J4: стандартизация COBOL» . Микро фокус. Архивировано из оригинала 24 февраля 1999 года . Получено 12 июля 2014 года .
- ^ Jump up to: а беременный в ISO/ITC 1/SC 22/WG 4 2023 , § IN.1.
- ^ Jump up to: а беременный в дюймовый и ISO/ITC 1/SC 22/WG 4 2 2023 , § в.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2023 , § 12.4.4.9.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2023 , § 8.7.2.
- ^ Кизиор, Рональд Дж.; Карр, Дональд; Халперн, Пол. "Есть ли у Кобола будущее?" (PDF) . Материалы конференции по образованию информационных систем 2000 года . 17 (126). Архивировано из оригинала (PDF) 17 августа 2016 года . Получено 30 сентября 2012 года .
- ^ Уайт, Дуг (12 июля 1998 г.). «Часто задаваемые вопросы (FAQ) о проблеме Y2K» . Homepages.wmich.edu . Архивировано из оригинала 7 ноября 2021 года . Получено 29 апреля 2022 года .
Таким образом, основной проблемой Y2K является проблема неправильных результатов, когда проводятся математика даты.
- ^ Каппельман, Леон А. (2000). «Некоторые стратегические благословения Y2K» . Программное обеспечение IEEE . 17 (2): 42–46. doi : 10.1109/52,841605 .
- ^ Carr & Kizior 2003 , p. 16
- ^ Carr & Kizior 2003 , p. 10
- ^ "Cobol Brain Drain: результаты обследования" . Computerworld . 14 марта 2012 года . Получено 27 апреля 2014 года .
- ^ Паунер, Дэвид А. (25 мая 2016 г.). «Федеральные агентства должны учитывать стареющие устаревшие системы» (PDF) . Государственное управление ответственности . п. 18. Архивировано из оригинала (PDF) 15 июня 2016 года . Получено 19 июля 2019 года .
Несколько агентств, такие как Министерство сельского хозяйства (USDA), DHS, HHS, правосудие, казначейство и VA, сообщили об использовании общего бизнеса, ориентированного на бизнес (COBOL) - языка программирования, разработанного в конце 1950 -х и начале 1960 -х годов - для программирования своего наследия. система Широко известно, что агентства должны перейти на более современные, поддерживаемые языки, как это необходимо и возможно.
- ^ "Cobol Blues" . Рейтер . Получено 8 апреля 2020 года .
- ^ Теплицкий, Фил (25 октября 2019 г.). «Закрытие пробела навыков программирования COBOL» . Журнал IBM Systems, IBM Z. Архивировано из оригинала 13 апреля 2020 года . Получено 11 июня 2020 года .
- ^ Ли, Алисия (8 апреля 2020 года). «Разыскивается срочно: люди, которые знают на полвековой компьютерной языке, чтобы государства могли обрабатывать претензии по безработице» . CNN . Получено 8 апреля 2020 года .
- ^ Лонг, Хизер; Стейн, Джефф; Рейн, Лиза; Ромм, Тони (17 апреля 2020 года). «Проверки стимула и другие облегчения коронавируса, затрудненные устаревшими технологиями и развертыванием каменистого правительства» . The Washington Post . Получено 19 апреля 2020 года .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.9.
- ^ "Зарезервированные слов таблица" . Micro Focus Visual Cobol 2.2 Справочник по языку кобола . Микро фокус . Получено 3 марта 2014 года .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.3.1.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.3.2.
- ^ Jump up to: а беременный в дюймовый Shneiderman 1985 , p. 349.
- ^ McCracken 1976 , с. 2, 6–9.
- ^ Jump up to: а беременный ISO / IEC JTC 1 / SC 22 / WG 411 , § F.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § § 18.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § D.18.
- ^ Iso / iect jtc 1 / sc 22 / wg 4 2014 , с. 108
- ^ Iso / iect jtc 1 / sc 22 / wg 4 2014 , с. 896.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § § 1.1.
- ^ «Файл -организации» . Обработка файлов . Микро фокус. 1998. Архивировано с оригинала 4 марта 2016 года . Получено 27 июня 2014 года .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.5.1.2.
- ^ Катлер 2014 , Приложение А.
- ^ Хаббелл, Тану (1999). SAMS обучает себя COBOL за 24 часа . SAMS Publishing . п. 40. ISBN 978-0672314537 Полем LCCN 98087215 .
- ^ McCracken & Golden 1988 , § 19.9.
- ^ Cutler 2014 , § 5.8.5.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.5.2.
- ^ Jump up to: а беременный ISO/IEC JTC 1/SC 22/WG 4 2014 , § 14.9.24.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 14.9.35.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 13.18.40.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 13.18.60.3.
- ^ Iso / iect jtc 1 / sc 22 / wg 4 2014 , с. 855.
- ^ Jump up to: а беременный McCracken 1976 , p. 338.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 14.4.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 14.6.3.
- ^ Поле, Джон; Рамалингам, Г. (сентябрь 1999 г.). Выявление процедурной структуры в программах COBOL (PDF) . Вставка '99 . doi : 10.1145/381788.316163 . ISBN 1581131372 Полем Архивировано (PDF) из оригинала 24 декабря 2010 года.
- ^ Jump up to: а беременный в Вирман, Нильс; Верховен, Эрнст-Ян (ноябрь 2006 г.). «Обнаружение минного поля COBOL» (PDF) . Программное обеспечение: практика и опыт . 36 (14). doi : 10.1002/spe.v36: 14 . S2CID 18619757 . Архивировано из оригинала (PDF) 6 марта 2007 года.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 14.9.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , §§ 14.9.4, 14.9.22.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § § 6.5.2.2.2.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 14.9.13.1.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , §14.9.35.1.
- ^ Iso / iect jtc 1 / sc 22 / wg 4 2014 , с. 899.
- ^ Jump up to: а беременный McCracken & Golden 1988 , § 8.4.
- ^ Примеры поддержки компилятора для
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 года .
- ^ ISO / IEC JTC 1 / SC 22 / WG 411 , § F ..
- ^ Jump up to: а беременный McCracken 1976 , p. 355.
- ^ Мозли, Джей (17 января 2015 г.). «Компилятор Cobol от MVT» . Получено 19 июля 2015 года .
- ^ Дейкстра, Эдсгер В. (18 июня 1975 г.). "Как мы можем говорить правды, которые могут повредить?" Полем Техасский университет в Остине. EWD498. Архивировано из оригинала 2 мая 2017 года . Получено 29 августа 2007 года .
- ^ Томпкинс, он (1983). «В защиту преподавания структурированного кобола в качестве компьютерной науки» . ACM Sigplan замечает . 18 (4): 86–94. doi : 10.1145/948176.948186 . S2CID 33803213 .
- ^ Jump up to: а беременный Riehle 1992 , p. 125
- ^ Shneiderman 1985 , с. 349–350.
- ^ Кофлан, Майкл (16 марта 2014 г.). Начало COBOL для программистов . Апресс. п. 4. ISBN 978-1430262534 Полем Получено 13 августа 2014 года .
- ^ Velvet 1978b , p.
- ^ Riehle 1992 , p. 126
- ^ Riehle 1992 , p. 127
- ^ «COBOL и Legacy Code как системный риск | голый капитализм» . 19 июля 2016 года . Получено 23 июля 2016 года .
- ^ Lämmel, Ralf; Верхоф, Крис (ноябрь -декабрь 2001 г.). «Требование проблемы на 500 языках» (PDF) . Программное обеспечение IEEE . 18 (6): 79. doi : 10.1109/52,965809 . HDL : 1871/9853 . Архивировано из оригинала (PDF) 19 августа 2014 года.
- ^ Howkins, TJ; Харанди, MT (апрель 1979 г.). «На пути к более портативному коболу» . Компьютерный журнал . 22 (4): 290. DOI : 10.1093/comjnl/22.4.290 .
- ^ Garfunkel 1987 , p. 11
- ^ Garfunkel 1987 , p. 15
- ^ Рэймонд, Эрик С. (1 октября 2004 г.). "Кобал" . Файл жаргона, версия 4.4.8 . Архивировано из оригинала 30 августа 2014 года . Получено 13 декабря 2014 года .
- ^ Браун 1976 , с. 53
- ^ Codasyl 1969 , § II.1.1.
- ^ Shneiderman 1985 , p. 350.
- ^ Velvet 1961 , p.
- ^ Jump up to: а беременный Коннер 1984 , с. ID/10.
- ^ Marcotty 1978a , p. 263.
- ^ Коннер 1984 , с. ID/14.
- ^ Бархат 1961 , с.
- ^ Marcotty 1978a , p. 266
- ^ Velvet 1978b , p.
- ^ Shneiderman 1985 , с. 348–349.
- ^ Конвей, Ричард; Грис, Дэвид (1973). Введение в программирование: структурированный подход с использованием PL/1 и PL/C . Кембридж, штат Массачусетс: Уинтроп Издатели. п. 341. ISBN 0-87626-405-4 .
- ^ «Логика и программирование COBOL, третье издание 1974 года» . Архивировано с оригинала 5 марта 2016 года . Получено 25 февраля 2016 года .
- ^ Shneiderman 1985 , p. 351.
- ^ «Интервью: защитник кобола» . Computerworld . 18 (37): ID/29 - ID/32. 10 сентября 1984 года . Получено 8 июня 2014 года .
- ^ Пратт, Терренс В.; Зелковиц, Марвин В. (1984). Языки программирования: проектирование и реализация (2 -е изд.). Englewood Cliffs, NJ: Prentice Hall. ISBN 0136780121 .
- ^ Carr & Kizior 2003 , p. 13
- ^ «Академии нуждаются в большей поддержке для борьбы с разрывом ИТ навыков» (пресс -релиз). Микро фокус. 7 марта 2013 года . Получено 4 августа 2014 года .
- ^ Саммет, Джин; Гарфанкел, Джером (октябрь 1985 г.). «Сводка изменений в Cobol, 1960–1985». Анналы истории вычислений . 7 (4): 342. doi : 10.1109/mahc.1985.10033 . S2CID 17940092 .
- ^ Кук, Маргарет М. (июнь 1978 г.). Гош, Сакти П.; Лю, Леонард Ю. (ред.). Основа данных для COBOL 80 (PDF) . 1978 Национальная компьютерная конференция. Анахайм, Калифорния: Afips Press. С. 1107–1112. doi : 10.1109/afips.1978.63 . LCCN 55-44701 . Получено 2 сентября 2014 года .
Самая ранняя дата, когда новый стандарт COBOL может быть разработан и утвержден, - это 1980 год [...].
- ^ «Резолюции от собрания WG4 24 - 26–28 июня 2003 г. Лас -Вегас, Невада, США» . 11 июля 2003 г. с. 1. Архивировано из оригинала (DOC) 8 марта 2016 года . Получено 29 июня 2014 года .
Пересмотр в июне 2008 года стандарт COBOL
- ^ Бэбкок, Чарльз (14 июля 1986 г.). «Стандартные дополнения COBOL» . Computerworld . 20 (28): 1, 12.
- ^ Marcotty 1978b , p. 274
- ^ Это можно увидеть в:
- «Визуальный кобол» . IBM Partnerworld . IBM . 21 августа 2013 года. Архивировано с оригинала 12 июля 2014 года . Получено 5 февраля 2014 года .
Micro Focus Visual Cobol обеспечивает следующее поколение разработки и развертывания COBOL для Linux X86-64, Linux для системы Z, AIX, HP/UX, Solaris и Windows.
- "Семья компиляторов IBM Cobol" . IBM . Получено 11 сентября 2024 года .
- "Гнукобол - проект GNU" . Получено 11 сентября 2024 года .
- «Визуальный кобол» . IBM Partnerworld . IBM . 21 августа 2013 года. Архивировано с оригинала 12 июля 2014 года . Получено 5 февраля 2014 года .
- ^ Кофлан, Майкл (2002). «Введение в Кобол» . Архивировано из оригинала 5 марта 2023 года.
- ^ "Gartner Group Исследования" . 1997-2001.state.gov . 2000 год управления программами. 2000 . Получено 23 апреля 2022 года .
- ^ Энгельманн, Виктор (8 апреля 2021 года). «Кобал-проверка» . Cobsolete.de . Cobsolete . Получено 23 апреля 2022 года .
- ^ «Что будет иметь в будущем». -директор ИТ Международная группа данных. 15 декабря 1995 г. - 1 января 1996 г. с. 82
Источники
[ редактировать ]- Бемер, Боб (1971). «Взгляд на историю Кобола» (PDF) . Honeywell Computer Journal . 5 (3). Архивировано из оригинала (PDF) 22 января 2016 года . Получено 28 июня 2014 года .
- Бейер, Курт (2009). Грейс Хоппер и изобретение информационного века . MIT Press. ISBN 978-0262013109 Полем LCCN 2008044229 .
- Браун, Уильям Р. (1 декабря 1976 г.). "Кобал". В Белцере, Джек; Хольцман, Альберт Г.; Кент, Аллен (ред.). Энциклопедия компьютерных наук и техники: том 5 . CRC Press . ISBN 978-0824722555 .
- Карр, Дональд Э.; Кизиор, Рональд Дж. (31 декабря 2003 г.). «Продолжающаяся актуальность COBOL в бизнесе и научных кругах: текущая ситуация и сравнение с исследованием 2000 года» (PDF) . Журнал образования информационных систем . 1 (52). ISSN 1545-679x . S2CID 62485945 . Архивировано (PDF) из оригинала 5 марта 2023 года . Получено 4 августа 2014 года .
- Кодасиль (июль 1969). Codasyl Cobol Journal of Development 1968 . Национальное бюро стандартов . ISSN 0591-0218 . LCCN 73601243 . OL 14204153M .
- Коннер, Ричард Л. (14 мая 1984 г.). «Кобол, ваш возраст показывает» . Computerworld . 18 (20): id/7 - ID/18. ISSN 0010-4841 .
- Катлер, Гэри (9 апреля 2014 г.). Руководство программиста GNU COBOL (PDF) (3 -е изд.) . Получено 25 февраля 2014 года .
- Гарфанкель, Джером (1987). Книга COBOL 85 . Уайли . ISBN 978-0471804611 .
- ISO/IEC JTC 1/SC 22/WG 4 (4 декабря 2001 г.). «ISO/IEC IS 1989: 2001 - Язык программирования COBOL» . Iso . Архивировано из оригинала (Zip of PDF) 24 января 2002 года . Получено 2 сентября 2014 года . (Ссылка идет на проект N 0147)
- ISO/IEC JTC 1/SC 22/WG 4 (31 октября 2014 г.). ANCITS/ISO/IEC 1989: 2014 [2014] - Язык программирования COBOL . Выпуск .
{{cite book}}
: CS1 Maint: числовые имена: список авторов ( ссылка ) - ISO/IEC JTC 1/SC 22/WG 4 (январь 2023 г.). ISO/IEC 1989: 2023 - Язык программирования COBOL . Iso .
{{cite book}}
: CS1 Maint: числовые имена: список авторов ( ссылка ) - Кляйн, Уильям М. (4 октября 2010 г.). «История кобола» (PDF) . Архивировано из оригинала (PDF) 7 января 2014 года . Получено 7 января 2014 года .
- Маркотти, Майкл (1978a). Wexelblat, Richard L. (ed.). Стенограмма сеанса вопросов и ответов . История языков программирования. Академическая пресса (опубликовано 1981). п. 263. doi : 10.1145/800025.1198370 . ISBN 0127450408 .
- Маркотти, Майкл (1978b). Wexelblat, Richard L. (ed.). Полный текст всех представленных вопросов . История языков программирования. Академическая пресса (опубликовано 1981). п. 274. doi : 10.1145/800025.1198371 . ISBN 0127450408 .
- МакКракен, Даниэль Д. (1976). Упрощенное руководство по структурированному программированию COBOL . Уайли. ISBN 0-471-58284-0 Полем LCCN 75044399 .
- МакКракен, Даниэль Д.; Голден, Дональд Дж. (1988). Упрощенное руководство по структурированному программированию COBOL (2 -е изд.). Уайли. ISBN 978-0471610540 Полем LCCN 87034608 .
- Риле, Ричард Л. (август 1992 г.). «Выполнить считается вредным» . Коммуникации ACM . 35 (8): 125–128. doi : 10.1145/135226.376106 . S2CID 18845698 .
- Саммет, Джин Э. (май 1961 г.). Метод объединения алгол и кобола . Документы, представленные в 9–11 мая 1961 года, компьютерная конференция Western Main IRE - AIEE - ACM. ACM . С. 379–387. doi : 10.1145/1460690.1460734 .
- Саммет, Джин Э. (1978a). Wexelblat, Richard L. (ed.). Ранняя история Кобола . История языков программирования. Академическая пресса (опубликовано 1981). doi : 10.1145/800025.1198367 . ISBN 0127450408 .
- Саммет, Джин Э. (1978b). Wexelblat, Richard L. (ed.). Стенограмма презентации . История языков программирования. Академическая пресса (опубликовано 1981). doi : 10.1145/800025.1198368 . ISBN 0127450408 .
- Саммет, Джин Э. (23 июля 2004 г.). "Кобал". В Рейли, Эдвин Д. (ред.). Краткая энциклопедия компьютерных наук . Уайли. ISBN 978-0470090954 Полем OCLC 249810423 .
- Shneiderman, B. (октябрь 1985). «Отношения между коболом и информатикой». Анналы истории вычислений . 7 (4): 348–352. doi : 10.1109/mahc.1985.10041 . S2CID 1009406 .
Внешние ссылки
[ редактировать ]- Cobolstandard.info на машине Wayback (архив 2017-01-10)
- ISO/IEC JTC1/SC22/WG4-COBOL на машине Wayback (архив 2016-08-22)
- Стандарт языка COBOL (1991; COBOL-85 с поправкой 1), из открытой группы
- Кобол
- .NET программирования языков
- 1959 программное обеспечение
- Классные языки программирования
- Компьютерные введения в 1959 году
- Кроссплатформенное программное обеспечение
- Объектно-ориентированные языки программирования
- Процедурные языки программирования
- Языки программирования, созданные женщинами
- Языки программирования, созданные в 1959 году
- Языки программирования со стандартом ISO
- Статически напечатанные языки программирования
- Структурированные языки программирования