КОБОЛ
Парадигма | Процедурный , императивный , объектно-ориентированный , общий. |
---|---|
Разработано | Ховард Бромберг , Норман Дисконт , Вернон Ривз , Джин Э. Саммет , Уильям Селден , Гертруда Тирни , при косвенном влиянии Грейс Хоппер [1] |
Разработчики | КОДАСИЛ , ANSI , ISO / IEC |
Впервые появился | 1959 год |
Стабильная версия | ИСО/МЭК 1989:2023
/ 2023 г. |
Дисциплина набора текста | Слабый , статичный |
Расширения имен файлов | .cbl , .cob , .cpy |
Основные реализации | |
GnuCOBOL , IBM COBOL , Micro Focus Visual COBOL | |
Диалекты | |
COBOL/2, DEC COBOL-10, DEC PDP-11 COBOL, DEC PDP-11 COBOL-85, DEC VAX COBOL, DOSVS COBOL, Envyr ICOBOL, Fujitsu COBOL, Hitachi COBOL2002, HP3000 COBOL/II, IBM COBOL SAA, IBM COBOL /400, IBM COBOL/II, IBM Enterprise COBOL, IBM ILE COBOL, IBM OS/VS COBOL, ICL COBOL (VME), Micro Focus ACUCOBOL-GT, Micro Focus COBOL-IT, Micro Focus RM/COBOL, Micro Focus Visual COBOL , Microsoft COBOL, Raincode COBOL, Realia COBOL, Ryan McFarland RM/COBOL, Ryan McFarland RM/COBOL-85, Tandem (NonStop) COBOL, Tandem (NonStop) SCOBOL, UNIVAC COBOL, Unisys MCP COBOL74, Unisys MCP COBOL85, X/Open КОБОЛ, [2] Верянт — это COBOL, Ван против COBOL, WATBOL | |
Под влиянием | |
Начальные: AIMACO , COMTRAN , FACT , FLOW-MATIC.
КОБОЛ 2002: [а] C++ , Эйфель , Smalltalk | |
Под влиянием | |
КоболСкрипт , [6] ЭГЛ , [7] ПЛ/Я , [8] ПЛ/Б [9] | |
|
COBOL ( / ˈ k oʊ b ɒ l , - b ɔː l / ; аббревиатура от «общий бизнес-ориентированный язык») — это компилируемый английский язык программирования, предназначенный для использования в бизнесе. Это императивный , процедурный и, с 2002 года, объектно-ориентированный язык. COBOL в основном используется в бизнесе, финансах и административных системах компаний и правительств. COBOL по-прежнему широко используется в приложениях, развернутых на мейнфреймах , таких как крупномасштабные задания пакетной обработки и обработки транзакций . Многие крупные финансовые учреждения разрабатывали новые системы на этом языке еще в 2006 году. [10] но большая часть программирования на COBOL сегодня предназначена исключительно для поддержки существующих приложений. Программы переносятся на новые платформы, переписываются на современные языки или заменяются другим программным обеспечением. [11]
COBOL был разработан в 1959 году компанией CODASYL и частично основывался на языке программирования FLOW-MATIC , разработанном Грейс Хоппер . Он был создан в рамках усилий Министерства обороны США по созданию портативного языка программирования для обработки данных. Первоначально это рассматривалось как временное решение, но Министерство обороны сразу же потребовало от производителей компьютеров предоставить его, что привело к его широкому распространению. [12] Он был стандартизирован в 1968 году и пересматривался пять раз. Расширения включают поддержку структурированного и объектно-ориентированного программирования . Действующим стандартом является ISO / IEC 1989:2023. [13]
Операторы COBOL имеют прозаический синтаксис, например MOVE x TO y
, который был разработан как самодокументируемый и легко читаемый. Однако он многословен и использует более 300 зарезервированных слов . Это контрастирует с кратким и математически вдохновленным синтаксисом других языков (в данном случае y = x;
).
Код COBOL разделен на четыре части (идентификация, среда, данные и процедуры), содержащие жесткую иерархию разделов, абзацев и предложений. Из-за отсутствия большой стандартной библиотеки стандарт определяет 43 оператора, 87 функций и только один класс.
Академические ученые-компьютерщики, как правило, не интересовались бизнес-приложениями, когда был создан COBOL, и не участвовали в его разработке; он был (фактически) разработан с нуля как компьютерный язык для бизнеса с упором на ввод и вывод, единственными типами данных которого были числа и текстовые строки. [14]
COBOL подвергался критике за многословие, процесс проектирования и плохую поддержку структурного программирования . Эти недостатки приводят к созданию монолитных программ, которые трудно понять в целом, несмотря на их локальную читабельность.
В течение многих лет COBOL считался языком программирования для бизнес-операций на мейнфреймах. [15] хотя в последние годы многие операции COBOL были перенесены в облачные вычисления . [16]
История и характеристики
[ редактировать ]Год | Неофициальное имя | Стандарт ANSI INCITS | Стандарт ИСО/МЭК |
---|---|---|---|
1960 | КОБОЛ-60 | — | — |
1961 | КОБОЛ-61 | — | — |
1963 | КОБОЛ-61 Расширенный | — | — |
1965 | КОБОЛ-65 | — | — |
1968 | КОБОЛ-68 | X3.23-1968 | — |
1974 | КОБОЛ-74 | X3.23-1974 | — |
1985 | КОБОЛ-85 | X3.23-1985 | 1989:1985 |
2002 | КОБОЛ-2002 | — | 1989:2002 |
2014 | КОБОЛ-2014 | — | 1989:2014 |
2023 | КОБОЛ-2023 | — | 1989:2023 |
Фон
[ редактировать ]В конце 1950-х годов пользователи компьютеров и производители стали обеспокоены ростом стоимости программирования. Исследование 1959 года показало, что в любой установке по обработке данных стоимость программирования в среднем составляет 800 000 долларов США, а перевод программ для работы на новом оборудовании обойдется в 600 000 долларов США. В то время, когда распространялись новые языки программирования , то же исследование показало, что если бы использовался общий бизнес-ориентированный язык, преобразование было бы намного дешевле и быстрее. [17]
8 апреля 1959 года Мэри К. Хоуз , ученый-компьютерщик из корпорации Burroughs , созвала встречу представителей академических кругов, пользователей компьютеров и производителей в Пенсильванском университете, чтобы организовать официальную встречу по общим деловым языкам. [18] Среди представителей были Грейс Хоппер (изобретатель английского языка обработки данных FLOW-MATIC ), Джин Саммет и Сол Горн . [19] [20]
На апрельской встрече группа обратилась к Министерству обороны (DoD) с просьбой спонсировать усилия по созданию общего делового языка. Делегация произвела впечатление на Чарльза А. Филлипса, директора исследовательского отдела систем данных Министерства обороны. [21] которые думали, что «полностью понимают» проблемы Министерства обороны. Министерство обороны эксплуатировало 225 компьютеров, еще 175 было заказано и потратило более 200 миллионов долларов на реализацию программ для их работы. Портативные программы сэкономят время, снизят затраты и облегчат модернизацию. [22]
Чарльз Филлипс согласился спонсировать встречу и поручил делегации подготовить повестку дня. [23]
КОБОЛ 60
[ редактировать ]28 и 29 мая 1959 года (ровно через год после цюрихской встречи ALGOL 58 прошла встреча, ) в Пентагоне на которой обсуждалось создание общего языка программирования для бизнеса. В нем принял участие 41 человек, председательствовал Филлипс. [24] Министерство обороны было обеспокоено тем, можно ли запускать одни и те же программы обработки данных на разных компьютерах. FORTRAN , единственный распространенный язык того времени, не имел функций, необходимых для написания таких программ. [25]
Представители с энтузиазмом описали язык, который может работать в самых разных средах: от банковского дела и страхования до коммунальных услуг и управления запасами. Они единогласно согласились, что больше людей должны уметь программировать и что новый язык не должен ограничиваться ограничениями современных технологий. Большинство согласились с тем, что язык должен максимально использовать английский, быть способным к изменению, быть машинонезависимым и простым в использовании, даже за счет мощности. [26]
Результатом встречи стало создание руководящего комитета , а также комитетов краткосрочного, промежуточного и долгосрочного характера. Комитету по краткосрочным вопросам было дано до сентября (три месяца) для разработки спецификаций временной формулировки, которая затем была бы улучшена другими комитетами. [27] [28] Однако их официальная миссия заключалась в выявлении сильных и слабых сторон существующих языков программирования; он не давал им явного указания на создание нового языка. [25]
Крайний срок был встречен комитетом ближнего действия с недоверием. [29] Одна из участниц, Бетти Холбертон , назвала трехмесячный срок «чрезвычайным оптимизмом» и выразила сомнение в том, что эта формулировка действительно станет временным решением. [30]
Руководящий комитет собрался 4 июня и согласился назвать всю деятельность Комитетом по языкам систем данных , или CODASYL , и сформировать исполнительный комитет. [31]
Члены комитета ближнего радиуса действия представляли шесть производителей компьютеров и три правительственных учреждения. Производителями компьютеров были Burroughs Corporation , IBM , Minneapolis-Honeywell (Honeywell Labs), RCA , Sperry Rand и Sylvania Electric Products . Правительственными учреждениями были ВВС США ВМФ , Модельный бассейн Дэвида Тейлора и Национальное бюро стандартов (ныне Национальный институт стандартов и технологий). [32] Комитет возглавил Джозеф Вегштейн из Национального бюро стандартов США. Работа началась с изучения описаний данных, операторов, существующих приложений и пользовательского опыта. [33]
Комитет в основном рассматривал языки программирования FLOW-MATIC , AIMACO и COMTRAN . [25] [34] Язык FLOW-MATIC оказал особое влияние, потому что он был реализован и потому что AIMACO был его производным с небольшими изменениями. [35] [36] Изобретатель FLOW-MATIC Грейс Хоппер также была техническим консультантом комитета. [29] Основным вкладом FLOW-MATIC в COBOL стали длинные имена переменных, английские слова для команд и разделение описаний данных и инструкций. [37]
Хоппер иногда называют «матерью КОБОЛа» или «бабушкой КОБОЛа». [38] [39] [40] хотя Жан Саммет , ведущий дизайнер COBOL, сказал, что Хоппер «не был матерью, создателем или разработчиком Cobol». [41] [1]
Язык IBM COMTRAN, изобретенный Бобом Бемером , считался конкурентом FLOW-MATIC. [42] [43] комитетом ближнего действия, состоящим из коллег Грейс Хоппер. [44] Некоторые из его функций не были включены в COBOL, чтобы не выглядело так, будто IBM доминировала в процессе проектирования. [27] а Жан Саммет заявила в 1981 году, что некоторые члены комитета (включая ее самого) имели «сильную предвзятость против IBM». [45] В одном случае, после того как Рой Голдфингер, автор руководства COMTRAN и член комитета среднего уровня, присутствовал на заседании подкомитета, чтобы поддержать его язык и поощрять использование алгебраических выражений, Грейс Хоппер отправила комитету ближнего действия записку, повторяющую точку зрения Сперри Рэнда. усилия по созданию языка на основе английского. [46]
В 1980 году Грейс Хоппер отметила, что «COBOL 60 на 95% состоит из FLOW-MATIC» и что COMTRAN оказал «крайне небольшое» влияние. Более того, она сказала, что будет утверждать, что на работу повлияли как FLOW-MATIC, так и COMTRAN только для того, чтобы «сделать других людей счастливыми, [чтобы они] не пытались нас выбить из строя». [47]
Функции COMTRAN, включенные в COBOL, включали формулы, [48] тот PICTURE
пункт , [49] улучшенный IF
заявление, которое устранило необходимость в GO TO и более надежной системе управления файлами. [42]
Полезность работы комитета стала предметом больших дискуссий. Хотя некоторые члены считали, что в этом языке слишком много компромиссов и что он является результатом разработки комитета , другие считали, что он лучше, чем три рассмотренных языка. Некоторые считали, что язык слишком сложен; другие слишком простые. [50]
К спорным функциям относились те, которые некоторые считали бесполезными или слишком продвинутыми для пользователей, занимающихся обработкой данных. К таким функциям относятся логические выражения , формулы и индексы таблиц . [51] [52] Еще один спорный вопрос заключался в том, следует ли делать ключевые слова контекстно-зависимыми и как это повлияет на читабельность. [51] Хотя контекстно-зависимые ключевые слова были отклонены, этот подход позже использовался в PL/I и частично в COBOL с 2002 года. [53] Мало внимания уделялось интерактивности , взаимодействию с операционными системами (в то время их было мало) и функциям (которые считались чисто математическими и бесполезными при обработке данных). [54] [55]
Спецификации были представлены исполкому 4 сентября. Они не оправдали ожиданий: Джозеф Вегштейн отметил, что «он содержит неровности и требует некоторых дополнений», а Боб Бемер позже охарактеризовал их как «сборную мешанину». Подкомиссии дали время до декабря на его доработку. [29]
На заседании в середине сентября комитет обсудил название нового языка. Предложения включали «BUSY» (бизнес-система), «INFOSYL» (язык информационных систем) и «COCOSYL» (общий язык компьютерных систем). [56] Неясно, кто придумал название «КОБОЛ». [57] [58] хотя Боб Бемер позже утверждал, что это было его предложение. [59] [60] [61]
В октябре комитет промежуточного уровня получил копии спецификации языка FACT , созданной Роем Наттом . Его особенности настолько впечатлили комитет, что они приняли решение основать на нем COBOL. [62]
Это стало ударом по комитету по ближнему радиусу действия, который добился хорошего прогресса в разработке спецификации. Несмотря на свое техническое превосходство, FACT не создавался с учетом портативности или консенсуса производителей и пользователей. Ему также не хватало наглядной реализации, [29] позволяя сторонникам COBOL на основе FLOW-MATIC отменить резолюцию. Представитель RCA Говард Бромберг также заблокировал FACT, чтобы работа RCA над внедрением COBOL не пропала даром. [63]
Вскоре стало очевидно, что комитет слишком велик, чтобы можно было быстро добиться дальнейшего прогресса. Разочарованный Говард Бромберг купил надгробие за 15 долларов с выгравированной на нем надписью «COBOL» и отправил его Чарльзу Филлипсу, чтобы продемонстрировать свое недовольство. [б] [65] [66]
Для анализа существующих языков был сформирован подкомитет из шести человек: [25] [67]
- Уильям Селден и Гертруда Тирни из IBM,
- Говард Бромберг и Говард Дисконт из RCA,
- Вернон Ривз и Джин Э. Саммет из Sylvania Electric Products.
Подкомитет проделал большую часть работы по созданию спецификации, оставив комитету ближнего действия рассмотреть и изменить свою работу перед выпуском готовой спецификации. [25]
Спецификации были одобрены исполнительным комитетом 8 января 1960 года и отправлены в правительственную типографию, которая напечатала их как COBOL 60 . Заявленные цели языка заключались в том, чтобы позволить легко писать эффективные переносимые программы, позволить пользователям переходить на новые системы с минимальными усилиями и затратами, а также быть подходящим для неопытных программистов. [68]
Позже исполнительный комитет CODASYL создал комитет по обслуживанию COBOL, чтобы отвечать на вопросы пользователей и поставщиков, а также улучшать и расширять спецификации. [69]
В 1960 году список производителей, планировавших создавать компиляторы COBOL, расширился. К сентябрю к CODASYL присоединились еще пять производителей ( Bendix , Control Data Corporation , General Electric (GE), National Cash Register и Philco ), и все представленные производители анонсировали компиляторы COBOL. GE и IBM планировали интегрировать COBOL в свои языки GECOM и COMTRAN соответственно. напротив, Компания International Computers and Tabulators, планировала заменить свой язык CODEL на COBOL. [70]
Тем временем RCA и Сперри Рэнд работали над созданием компиляторов COBOL. Первая программа COBOL была запущена 17 августа на RCA 501. [71] 6 и 7 декабря одна и та же программа COBOL (хотя и с небольшими изменениями) работала на компьютере RCA и компьютере Remington-Rand Univac , продемонстрировав возможность достижения совместимости. [72]
Относительное влияние используемых языков сохраняется и по сей день в рекомендуемых рекомендациях, напечатанных во всех справочных руководствах COBOL:
COBOL является отраслевым языком и не является собственностью какой-либо компании или группы компаний, а также какой-либо организации или группы организаций.
Никакие гарантии, явные или подразумеваемые, не предоставляются кем-либо из участников или комитетом CODASYL COBOL в отношении точности и функционирования. система и язык программирования. Более того, ни один участник или комитет не несут никакой ответственности в связи с этим. Авторами и правообладателями используемых здесь материалов, защищенных авторским правом, являются:
FLOW-MATIC (торговая марка Unisys Corporation ), Программирование для UNIVAC (R) I и II, Системы автоматизации данных, авторские права принадлежат Unisys Corporation в 1958, 1959 годах; Форма коммерческого переводчика IBM № F28-8013, авторские права принадлежат IBM в 1959 году; ФАКТ: DSI 27A5260-2760, авторские права принадлежат Minneapolis-Honeywell в 1960 году.
Они специально разрешили использование этого материала, полностью или частично, в спецификациях COBOL. Такое разрешение распространяется на воспроизведение и использование спецификаций COBOL в руководствах по программированию или аналогичных публикациях. [73]
от КОБОЛ-61 до КОБОЛ-65
[ редактировать ]Маловероятно, что Cobol появится к концу десятилетия.
Аноним, июнь 1960 г. [74]
было обнаружено множество логических ошибок В COBOL 60 из General Electric , из-за чего Чарльз Кац предупредил, что его нельзя интерпретировать однозначно. Неохотно краткосрочный комитет провел полную очистку, и к марту 1963 года было сообщено, что синтаксис COBOL так же поддается определению, как и синтаксис ALGOL , хотя семантическая неопределенность осталась. [70]
COBOL — сложный язык для написания компилятора из-за большого синтаксиса и множества дополнительных элементов в синтаксических конструкциях, а также из-за необходимости генерировать эффективный код для языка со многими возможными представлениями данных, неявными преобразованиями типов и необходимыми наборами значений. ИБП для операций ввода-вывода. [75] Ранние компиляторы COBOL были примитивными и медленными. Оценка ВМС США в 1962 году показала скорость компиляции 3–11 операторов в минуту. К середине 1964 года они увеличились до 11–1000 заявлений в минуту. Было замечено, что увеличение памяти резко увеличивает скорость, а затраты на компиляцию сильно различаются: затраты на оператор составляли от 0,23 до 18,91 доллара. [76]
В конце 1962 года IBM объявила, что COBOL станет их основным языком разработки и что разработка COMTRAN прекратится. [76]
Спецификация COBOL пересматривалась трижды за пять лет после ее публикации. COBOL-60 был заменен в 1961 году на COBOL-61. Затем в 1963 году на смену им пришли расширенные спецификации COBOL-61, в которых были представлены возможности сортировки и создания отчетов. [77] Добавленные мощности исправили недостатки, выявленные Honeywell в конце 1959 года в письме комитету по ближнему радиусу действия. [71] COBOL Edition 1965 внес дополнительные разъяснения в спецификации и представил средства для работы с запоминающих устройств файлами и таблицами . [78]
КОБОЛ-68
[ редактировать ]Начались попытки стандартизировать COBOL, чтобы преодолеть несовместимость между версиями. В конце 1962 года ИСО и Институт стандартов США (ныне ANSI ) сформировали группы для создания стандартов. В августе 1968 года ANSI выпустил стандарт США COBOL X3.23 , который стал краеугольным камнем для более поздних версий. [79] Эта версия была известна как Американский национальный стандарт (ANS) COBOL и была принята ISO в 1972 году. [80]
КОБОЛ-74
[ редактировать ]К 1970 году COBOL стал наиболее широко используемым языком программирования в мире. [81]
Независимо от комитета ANSI, комитет по языкам программирования CODASYL работал над улучшением языка. Они описали новые версии 1968, 1969, 1970 и 1973 годов, включая такие изменения, как новые возможности межпрограммного взаимодействия, отладки и объединения файлов, а также улучшенные функции обработки строк и включения библиотек . [82]
Хотя CODASYL был независим от комитета ANSI, журнал развития CODASYL использовался ANSI для определения функций, которые были достаточно популярны, чтобы гарантировать внедрение. [83] Комитет по языкам программирования также поддерживал связь с ECMA и японским комитетом по стандарту COBOL. [82]
Однако Комитет по языкам программирования не был широко известен. Вице-президент Уильям Ринехулс пожаловался, что две трети сообщества COBOL не знают о существовании комитета. У него также не было средств для бесплатного доступа к публичным документам, таким как протоколы заседаний и предложения по изменениям. [84]
В 1974 году ANSI опубликовал пересмотренную версию (ANS) COBOL, содержащую новые функции, такие как организация файлов , DELETE
заявление [85] и модуль сегментации . [86] Удаленные функции включали NOTE
заявление, EXAMINE
заявление (которое было заменено на INSPECT
) и определяемый разработчиком модуль произвольного доступа (который был заменен новыми модулями последовательного и относительного ввода-вывода). Это составило 44 изменения, которые сделали существующие положения несовместимыми с новым стандартом. [87] Автора отчета планировалось исключить из COBOL, но он был восстановлен до публикации стандарта. [88] [89] Позднее, в 1978 году, ISO приняла обновленный стандарт. [80]
КОБОЛ-85
[ редактировать ]В июне 1978 года начались работы по пересмотру COBOL-74. Предлагаемый стандарт (обычно называемый COBOL-80) существенно отличался от предыдущего, вызывая опасения по поводу несовместимости и затрат на преобразование. В январе 1981 года Джозеф Т. Брофи, старший вице-президент Travelers Insurance, пригрозил подать в суд на комитет по стандартизации, поскольку он не был совместим с COBOL-74 снизу вверх. Г-н Брофи назвал предыдущие преобразования их 40-миллионной кодовой базы «непродуктивными» и «полной тратой наших программных ресурсов». [90] Позже в том же году Ассоциация управления обработкой данных (DPMA) заявила, что она «категорически против» нового стандарта, сославшись на «непомерно высокие» затраты на преобразование и улучшения, которые «навязывались пользователю». [91] [92]
В течение первого периода общественного рассмотрения комитет получил 2200 ответов, из которых 1700 были письмами отрицательной формы. [93] Другие ответы представляли собой подробный анализ влияния COBOL-80 на их системы; Предполагалось, что затраты на преобразование составят не менее 50 центов за строку кода. Менее дюжины ответов высказались в пользу предложенного стандарта. [94]
ISO TC97-SC5 установлен в 1979 году международной экспертной группой COBOL по инициативе Вима Эббинхейсена . В состав группы входили эксперты COBOL из многих стран, включая США. Его целью было достижение взаимопонимания и уважения между ANSI и остальным миром в отношении необходимости новых функций COBOL. Спустя три года ISO изменила статус группы на официальную рабочую группу: WG 4 COBOL . Группа взяла на себя основную ответственность за разработку стандарта COBOL, по которому ANSI внес большую часть предложений.
В 1983 году DPMA отозвало свое несогласие со стандартом, сославшись на реакцию комитета на обеспокоенность общественности. В том же году исследование Национального бюро стандартов пришло к выводу, что предлагаемый стандарт не создаст особых проблем. [92] [95] Год спустя DEC выпустила VAX/VMS COBOL-80 и отметила, что преобразование программ COBOL-74 не вызывает особых проблем. Новый EVALUATE
заявление и встроенный PERFORM
были особенно хорошо приняты и повысили производительность благодаря упрощенному потоку управления и отладке . [96]
Вторая публичная проверка получила еще 1000 (в основном отрицательных) откликов, тогда как последняя получила всего 25, и к этому времени многие опасения были решены. [92]
В 1985 году рабочая группа ISO 4 приняла тогдашнюю версию предложенного стандарта ANSI, внесла несколько изменений и установила ее в качестве нового стандарта ISO COBOL 85. Он был опубликован в конце 1985 года.
Шестьдесят функций были изменены или устарели, а 115 [97] были добавлены, например: [98] [99]
- Ограничители области действия (
END-IF
,END-PERFORM
,END-READ
, и т. д.) - Вложенные подпрограммы
CONTINUE
, оператор отсутствия операцииEVALUATE
, оператор переключенияINITIALIZE
, оператор, который может устанавливать для групп данных значения по умолчанию.- В соответствии
PERFORM
тела цикла – раньше тела цикла нужно было указывать в отдельной процедуре. - Модификация ссылки, обеспечивающая доступ к подстрокам
- Коды состояния ввода-вывода.
Новый стандарт был принят всеми национальными органами по стандартизации, включая ANSI. [80]
Две поправки последовали в 1989 и 1993 годах. Первая поправка вводила внутренние функции, а вторая вносила исправления. [80]
COBOL 2002 и объектно-ориентированный COBOL
[ редактировать ]В 1997 году Gartner Group подсчитала, что существует в общей сложности 200 миллиардов строк COBOL, на которых выполняется 80% всех бизнес-программ. [с] [100]
В начале 1990-х годов началась работа по добавлению объектно-ориентированного подхода в следующую полную версию COBOL. Объектно-ориентированные возможности были взяты из C++ и Smalltalk . [3] [4]
По первоначальной оценке, эта версия должна была быть завершена к 1997 году, а проект комитета ISO (CD) был доступен к 1997 году. Некоторые поставщики (включая Micro Focus , Fujitsu и IBM ) представили объектно-ориентированный синтаксис на основе черновиков полной версии. Окончательно утвержденный стандарт ISO был одобрен и опубликован в конце 2002 года. [101]
Fujitsu/GTSoftware, [102] Micro Focus представила объектно-ориентированные компиляторы COBOL, ориентированные на .NET Framework .
Было много других новых функций, многие из которых были в CODASYL COBOL Journal of Development с 1978 года и упустили возможность быть включенными в COBOL-85. [103] Эти другие функции включали: [104] [105]
- Код свободной формы
- Пользовательские функции
- Рекурсия
- локали Обработка на основе
- Поддержка расширенных наборов символов, таких как Unicode.
- Типы данных с плавающей запятой и двоичные типы данных (до этого двоичные элементы усекались на основе base-10 их объявления) спецификации
- Портативные арифметические результаты
- Битовые и логические типы данных
- Указатели и синтаксис для получения и освобождения памяти.
- The
SCREEN SECTION
для текстовых пользовательских интерфейсов - The
VALIDATE
средство - Улучшена совместимость с другими языками программирования и средами разработки, такими как .NET и Java .
три исправления : два в 2006 году и одно в 2009 году. К стандарту было опубликовано [106]
КОБОЛ 2014
[ редактировать ]В период с 2003 по 2009 год было выпущено три технических отчета, описывающих финализацию объектов , обработку XML и классы сбора для COBOL. [106]
COBOL 2002 страдал от плохой поддержки: ни один компилятор полностью не поддерживал стандарт. Micro Focus обнаружила, что это произошло из-за отсутствия спроса пользователей на новые функции и отмены набора тестов NIST , который использовался для проверки соответствия компилятора. Процесс стандартизации также оказался медленным и недостаточно обеспеченным ресурсами. [107]
COBOL 2014 включает следующие изменения: [108]
- Переносимые арифметические результаты заменены IEEE 754. типами данных
- Основные функции стали необязательными, например,
VALIDATE
средство, средство записи отчетов и средство обработки экрана - Перегрузка метода
- Таблицы динамической емкости (функция исключена из проекта COBOL 2002) [109]
КОБОЛ 2023
[ редактировать ]В стандарт COBOL 2023 добавлено несколько новых функций:
- асинхронного обмена сообщениями с использованием Синтаксис
SEND
иRECEIVE
заявления [110] - Средство обработки транзакций с
COMMIT
иROLLBACK
[110] XOR
логический оператор [110]- The
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 сообщила, что 80% мирового бизнеса работает на COBOL с более чем 200 миллиардами строк кода. [с] и еще 5 миллиардов строк пишутся ежегодно. [114]
Ближе к концу 20-го века проблема 2000 года (Y2K) была в центре внимания значительных усилий по программированию на COBOL, иногда со стороны тех же программистов, которые проектировали системы десятилетия назад. Особый уровень усилий, необходимый для исправления кода COBOL, объясняется большим количеством бизнес-ориентированного COBOL, поскольку бизнес-приложения активно используют даты, а также поля данных фиксированной длины. [115] Некоторые исследования приписывают Cobol «24% затрат на ремонт программного обеспечения 2000 года». [116] После того, как эти программы были очищены от 2000 года, исследование 2003 года показало, что многие из них остались в использовании. [117] Авторы заявили, что данные опроса предполагают «постепенное снижение важности COBOL в разработке приложений в течение [последующих] 10 лет, если только... не будет реализована интеграция с другими языками и технологиями». [118]
В 2006 и 2012 годах опросы Computerworld (352 читателей) показали, что более 60% организаций используют COBOL (больше, чем C++ и Visual Basic .NET ), и что половина из них использует COBOL для большей части своего внутреннего программного обеспечения. [10] [119] 36% менеджеров заявили, что планируют перейти с COBOL, а 25% заявили, что сделали бы это, если бы не затраты на переписывание устаревшего кода. Альтернативно, некоторые компании перенесли свои программы COBOL с мэйнфреймов на более дешевое и быстрое оборудование. [10]
Показания перед Палатой представителей в 2016 году показали, что COBOL до сих пор используется многими федеральными агентствами. [120] В 2017 году агентство Reuters сообщило, что 43% банковских систем по-прежнему используют COBOL, при этом используется более 220 миллиардов строк кода COBOL. [121]
К 2019 году число программистов COBOL быстро сокращалось из-за выхода на пенсию, что привело к надвигающемуся дефициту навыков в деловых и государственных организациях, которые до сих пор используют мэйнфреймы для обработки больших объемов транзакций. Попытки переписать системы на новые языки оказались дорогостоящими и проблематичными, как и аутсорсинг обслуживания кода, поэтому приветствуются предложения по обучению большего количества людей COBOL. [122]
Во время пандемии COVID-19 и последовавшего за ней роста безработицы несколько штатов США сообщили о нехватке квалифицированных программистов COBOL для поддержки устаревших систем, используемых для управления пособиями по безработице. Многие из этих систем до пандемии находились в процессе перевода на более современные языки программирования, но этот процесс был приостановлен. [123] США Точно так же Налоговая служба поспешила обновить свой индивидуальный мастер-файл на основе COBOL , чтобы выплатить десятки миллионов платежей, предусмотренных Законом о помощи, чрезвычайной помощи и экономической безопасности в связи с коронавирусом . [124]
Функции
[ редактировать ]Синтаксис
[ редактировать ]COBOL имеет синтаксис, похожий на английский, который используется для описания практически всего в программе. Например, условие может быть выражено как x IS GREATER THAN y
или более кратко как x GREATER y
или x > y
. Более сложные условия можно сократить, удалив повторяющиеся условия и переменные. Например, a > b AND a > c OR a = d
можно сократить до a > b AND c OR = d
. Для поддержки этого синтаксиса в COBOL имеется более 300 ключевых слов . [125] [д] Некоторые ключевые слова представляют собой простые альтернативные или множественные варианты написания одного и того же слова, что обеспечивает более грамматически подходящие утверждения и предложения; например, IN
и OF
ключевые слова могут использоваться взаимозаменяемо, как и TIME
и TIMES
, и VALUE
и VALUES
.
Каждая программа COBOL состоит из четырех основных лексических элементов : слов, литералов, строк символов-изображений (см . раздел PICTURE ) и разделителей. Слова включают зарезервированные слова и определяемые пользователем идентификаторы. Они имеют длину до 31 символа и могут включать буквы, цифры, дефисы и символы подчеркивания. Литералы включают цифры (например, 12
) и строки (например, 'Hello!'
). [127] Разделителями являются пробел, а также запятые и точки с запятой, за которыми следует пробел. [128]
Программа COBOL разделена на четыре части: часть идентификации, часть среды, часть данных и часть процедур. Раздел идентификации определяет имя и тип исходного элемента, а также определяет классы и интерфейсы. Раздел среды определяет любые функции программы, которые зависят от системы, в которой она выполняется, например файлы и наборы символов . Разделение данных используется для объявления переменных и параметров . программы Раздел процедур содержит операторы . Каждый раздел подразделяется на разделы, состоящие из параграфов.
Метаязык
[ редактировать ]Синтаксис COBOL обычно описывается уникальным метаязыком с использованием фигурных скобок, скобок, черт и подчеркивания. Метаязык был разработан для исходных спецификаций COBOL. Хотя форма Бэкуса-Наура в то время существовала, комитет о ней не слышал. [129]
Элемент | Появление | Функция |
---|---|---|
Все столицы | ПРИМЕР | Зарезервированное слово |
Подчеркивание | ПРИМЕР | Зарезервированное слово является обязательным |
Брекеты | { } | Можно выбрать только один вариант |
Кронштейны | [] | Можно выбрать ноль или один вариант |
Эллипсис | ... | Предыдущий элемент может повторяться |
Бары | {| |} | Можно выбрать один или несколько вариантов. Любой вариант можно выбрать только один раз. |
[| |] | Можно выбрать ноль или более вариантов. Любой вариант можно выбрать только один раз. |
В качестве примера рассмотрим следующее описание 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"
Формат кода
[ редактировать ]Пик популярности COBOL совпал с эпохой перфомашин и перфокарт . Сама программа записывалась на перфокарты, затем считывалась и компилировалась, а данные, вводимые в программу, иногда также находились на картах. [130]
COBOL может быть написан в двух форматах: фиксированном (по умолчанию) и свободном. В фиксированном формате код должен быть выровнен, чтобы соответствовать определенным областям (пережиток использования перфокарт). До 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
COBOL не предоставляет возможности скрыть методы. Однако данные класса можно скрыть, объявив его без PROPERTY
предложение, которое не оставляет внешнему коду возможности доступа к нему. [134] Перегрузка методов была добавлена в COBOL 2014. [135]
Отдел окружающей среды
[ редактировать ]Раздел среды содержит раздел конфигурации и раздел ввода-вывода. Раздел конфигурации используется для указания переменных функций, таких как знаки валюты, локали и наборы символов. Раздел ввода-вывода содержит информацию, связанную с файлом.
Файлы
[ редактировать ]COBOL поддерживает три формата файлов или организации : последовательный, индексированный и относительный. В последовательных файлах записи являются смежными и должны проходить последовательно , аналогично связанному списку . Индексированные файлы имеют один или несколько индексов, которые позволяют осуществлять произвольный доступ к записям и сортировать их. Каждая запись должна иметь уникальный ключ , но другие, альтернативные ключи записей не обязательно должны быть уникальными. Реализации индексированных файлов различаются у разных поставщиков, хотя общие реализации, такие как C-ISAM и VSAM , основаны на IBM ISAM . Другими реализациями являются службы управления записями на OpenVMS и Enscribe на HPE NonStop (Tandem). Относительные файлы, как и индексированные файлы, имеют уникальный ключ записи, но не имеют альтернативных ключей. Ключом относительной записи является ее порядковый номер; например, 10-я запись имеет ключ 10. Это означает, что создание записи с ключом 5 может потребовать создания (пустых) предыдущих записей. Относительные файлы также допускают как последовательный, так и произвольный доступ. [136]
Распространенным нестандартным расширением является построчная организация, используемая для обработки текстовых файлов. Записи в файле заканчиваются новой строкой и могут иметь разную длину. [137]
Отдел данных
[ редактировать ]Раздел данных разделен на шесть разделов, в которых объявляются различные элементы: раздел файла для записей файлов; раздел рабочей памяти для статических переменных ; раздел локального хранилища для автоматических переменных ; раздел связи для параметров и возвращаемого значения; раздел отчета и раздел экрана для текстовых пользовательских интерфейсов .
Агрегированные данные
[ редактировать ]Элементы данных в COBOL объявляются иерархически с использованием номеров уровней, которые указывают, является ли элемент данных частью другого. Предмет с более высоким номером уровня подчиняется предмету с более низким уровнем. Элементы данных верхнего уровня с номером уровня 1 называются записями . Элементы, имеющие подчиненные совокупные данные, называются элементами группы ; те, которые этого не делают, называются элементарными элементами . Номера уровней, используемые для описания стандартных элементов данных, находятся в диапазоне от 1 до 49. [138] [139]
01 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. Например, следующий код объявляет два элемента данных уровня 77: property-name
и sales-region
, которые представляют собой негрупповые элементы данных, независимые (не подчиненные) любым другим элементам данных:
77 property-name PIC X(80).
77 sales-region PIC 9(5).
Номер уровня 88 объявляет имя условия (так называемый уровень 88), которое истинно, когда его родительский элемент данных содержит одно из значений, указанных в его VALUE
пункт. [142] Например, следующий код определяет два 88-уровневых элемента имени условия, которые имеют значение true или false в зависимости от текущего значения символьных данных 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
|
Данные хранятся в виде 0 и 1 в виде двоичного числа. |
Индекс | USAGE INDEX
|
Используется для ссылки на элементы таблицы. |
Национальный | PIC N(30)
|
Аналогично буквенно-цифровому, но использует расширенный набор символов, например UTF-8 . |
Числовой | PIC 9(5)V9(2)
|
Содержит ровно 7 цифр (7=5+2). 'V' находит неявное десятичное число в числе с фиксированной точкой. |
Объект | USAGE OBJECT REFERENCE
|
Может ссылаться либо на объект, либо на NULL .
|
Указатель | USAGE POINTER
|
Типовая безопасность в COBOL является переменной. Числовые данные преобразуются между различными представлениями и размерами автоматически, а буквенно-цифровые данные могут быть помещены в любой элемент данных, который может храниться в виде строки, включая числовые и групповые данные. [144] Напротив, ссылки на объекты и указатели могут быть назначены только из элементов одного и того же типа, а их значения могут быть ограничены определенным типом. [145]
пункт ИЗОБРАЖЕНИЕ
[ редактировать ]А PICTURE
(или 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"
|
пункт ИСПОЛЬЗОВАНИЕ
[ редактировать ]В этом разделе отсутствует информация о COMPUTATIONAL-5. ( апрель 2021 г. ) |
The 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
.
Использование средства Report Writer может значительно различаться; некоторые организации используют его широко, а некоторые не используют вообще. [149] Кроме того, реализации Report Writer различались по качеству: те, что были на нижнем уровне, иногда использовали чрезмерный объем памяти во время выполнения. [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
'ed может выполнить 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, таких как компилятор TinyCOBOL с открытым исходным кодом, два 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 END END END», и на самом деле именно это выдают некоторые компиляторы COBOL. Но другие компиляторы, такие как IBM COBOL, будут создавать код, который печатает «1 2 3 END END END END ...» и так далее, печатая «END» снова и снова в бесконечном цикле. Поскольку пространство для хранения адресов продолжения резервного копирования ограничено, резервные копии перезаписываются в ходе рекурсивных вызовов, и все, что можно восстановить, — это вернуться к DISPLAY 'END'
. [153]
Заявления
[ редактировать ]В COBOL 2014 47 операторов (также называемых глаголами ), [154] которые можно сгруппировать в следующие широкие категории: поток управления, ввод-вывод, манипулирование данными и средство записи отчетов. Заявления составителя отчета представлены в разделе, посвященном составителю отчета .
Поток управления
[ редактировать ] COBOL Условные операторы IF
и EVALUATE
. EVALUATE
представляет собой оператор, похожий на переключатель , с дополнительной возможностью оценки нескольких значений и условий. Это можно использовать для реализации таблиц решений . Например, для управления токарным станком с ЧПУ можно использовать следующее :
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
The PERFORM
Оператор используется для определения циклов, которые выполняются до тех пор, пока условие не станет истинным (а не пока истинно, что более распространено в других языках). Он также используется для вызова процедур или диапазонов процедур ( см. в разделе «Процедуры» ). более подробную информацию CALL
и INVOKE
вызывать подпрограммы и методы соответственно. Имя подпрограммы/метода содержится в строке, которая может быть литералом или элементом данных. [155] Параметры можно передавать по ссылке , по содержимому (когда копия передается по ссылке) или по значению (но только при прототипа ). наличии [156]
CANCEL
выгружает подпрограммы из памяти. GO TO
заставляет программу перейти к указанной процедуре.
The GOBACK
оператор является оператором возврата , а оператор STOP
оператор останавливает программу. EXIT
Оператор имеет шесть различных форматов: его можно использовать как оператор возврата, оператор прерывания , оператор продолжения , маркер конца или для выхода из процедуры. [157]
Исключения устанавливаются RAISE
и перехватывается с помощью обработчика или декларативного метода , определенного в DECLARATIVES
часть процедурного разделения. Декларативы — это разделы, начинающиеся с USE
оператор, определяющий ошибки, которые необходимо обработать. Исключениями могут быть имена или объекты. RESUME
используется в декларативной форме для перехода к инструкции после той, которая вызвала исключение, или к процедуре вне DECLARATIVES
. В отличие от других языков, неперехваченные исключения не могут завершить работу программы, и программа может продолжать работать без изменений.
ввод/вывод
[ редактировать ]Файловый ввод-вывод обрабатывается самоописывающим OPEN
, CLOSE
, READ
, и WRITE
заявления, а также еще три: REWRITE
, который обновляет запись; START
, который выбирает последующие записи для доступа, находя запись с определенным ключом; и UNLOCK
, который снимает блокировку с последней доступной записи.
Взаимодействие с пользователем осуществляется с помощью ACCEPT
и DISPLAY
.
Манипулирование данными
[ редактировать ]Следующие глаголы манипулируют данными:
INITIALIZE
, который устанавливает для элементов данных значения по умолчанию.MOVE
, который присваивает значения элементам данных; MOVE CORRESPONDING с одинаковыми именами назначает соответствующие поля .SET
, который имеет 15 форматов: он может изменять индексы, назначать ссылки на объекты и изменять емкость таблиц, а также выполнять другие функции. [158]ADD
,SUBTRACT
,MULTIPLY
,DIVIDE
, иCOMPUTE
, которые обрабатывают арифметику (сCOMPUTE
присвоение результата формулы переменной).ALLOCATE
иFREE
, которые обрабатывают динамическую память .VALIDATE
, который проверяет и распределяет данные, как указано в описании элемента в разделе данных.STRING
иUNSTRING
, которые объединяют и разделяют строки соответственно.INSPECT
, который подсчитывает или заменяет экземпляры указанных подстрок внутри строки.SEARCH
, который ищет в таблице первую запись, удовлетворяющую условию.
Файлы и таблицы сортируются с помощью SORT
и MERGE
глагол объединяет и сортирует файлы. RELEASE
глагол предоставляет записи для сортировки и RETURN
извлекает отсортированные записи по порядку.
Прекращение действия
[ редактировать ]Некоторые высказывания, например IF
и READ
, могут сами содержать утверждения. Такие операторы могут быть завершены двумя способами: точкой ( неявное завершение ), которая завершает все содержащиеся незавершенные операторы, или признаком конца области, который завершает ближайший соответствующий открытый оператор.
*> 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
.
Другая ошибка является результатом проблемы с висячим else , когда два 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] но он был признан устаревшим и удален в 2002 году. в стандарте COBOL 1985 года [162]
The ALTER
Это утверждение было плохо воспринято, поскольку оно подрывало «локальность контекста» и затрудняло понимание общей логики программы. [163] Как писал автор учебника Дэниел Д. Маккракен в 1976 году, когда «тот, кто никогда раньше не видел программу, должен ознакомиться с ней как можно быстрее, иногда в условиях критического дефицита времени, потому что программа не удалась… вид ПЕРЕЙТИ К утверждение в отдельном абзаце, сигнализирующее о существовании неизвестного количества операторов ALTER в неизвестных местах по всей программе, вселяет страх в сердце самого смелого программиста». [163]
Привет, мир
[ редактировать ]« Привет, мир!» программа на КОБОЛе:
IDENTIFICATION DIVISION.
PROGRAM-ID. hello-world.
PROCEDURE DIVISION.
DISPLAY "Hello, world!"
.
Когда теперь знаменитый «Hello, World!» Пример программы на языке программирования C был впервые опубликован в 1978 году. Аналогичный пример программы COBOL для мэйнфреймов был бы отправлен через JCL , скорее всего, с использованием устройства чтения перфокарт и перфокарт на 80 столбцов. Листинг ниже с пустым полем DATA DIVISION был протестирован с использованием Linux и эмулятора System/370 Hercules под управлением MVS 3.8J. JCL, написанный в июле 2015 года, основан на учебных пособиях и примерах Hercules, размещенных Джеем Мозли. [164] В соответствии с программированием COBOL той эпохи, HELLO, WORLD отображается заглавными буквами.
//COBUCLG JOB (001),'COBOL BASE TEST', 00010000
// CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) 00020000
//BASETEST EXEC COBUCLG 00030000
//COB.SYSIN DD * 00040000
00000* 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-х годах принятие парадигмы структурированного программирования становилось все более распространенным. Эдсгер Дейкстра , выдающийся ученый-компьютерщик, написал письмо редактору журнала Communications of ACM , опубликованного в 1975 году, под названием «Как мы говорим правду, которая может навредить?», в котором он критиковал COBOL и несколько других современных языков; отметив, что «использование COBOL калечит разум». [165]
В опубликованном несогласии с замечаниями Дейкстры учёный-компьютерщик Говард Э. Томпкинс заявил, что неструктурированный COBOL, как правило, «пишется программистами, которые никогда не имели возможности хорошо преподавать структурированный COBOL», утверждая, что проблема заключалась в первую очередь в обучении. [166]
Одной из причин спагетти-кода было GO TO
заявление. Попытки удалить GO TO
однако из кода COBOL приводили к запутанности программ и снижению качества кода. [167] GO TO
были в значительной степени заменены PERFORM
заявление и процедуры, которые способствовали модульному программированию [167] и предоставил легкий доступ к мощным средствам зацикливания. Однако, PERFORM
можно было использовать только с процедурами, поэтому тела циклов не располагались там, где они использовались, что затрудняло понимание программ. [168]
Программы COBOL были печально известны своей монолитностью и отсутствием модульности. [169] Код COBOL мог быть модульным только с помощью процедур, которые оказались неадекватными для больших систем. Было невозможно ограничить доступ к данным, то есть процедура могла получить доступ к любому элементу данных и изменить его. Более того, не было возможности передать параметры в процедуру, и это упущение Жан Самме считал самой большой ошибкой комитета. [170]
Еще одна сложность связана с возможностью PERFORM THRU
определенная последовательность процедур. Это означало, что управление могло перейти к любой процедуре и вернуться из нее, создавая запутанный поток управления и позволяя программисту нарушить правило «один вход — один выход» . [171]
Ситуация улучшилась по мере того, как в COBOL появилось больше функций. В COBOL-74 добавлены подпрограммы, дающие программистам возможность контролировать данные, к которым может получить доступ каждая часть программы. Затем в COBOL-85 были добавлены вложенные подпрограммы, что позволило программистам скрывать подпрограммы. [172] Дальнейший контроль над данными и кодом появился в 2002 году, когда были включены объектно-ориентированное программирование, определяемые пользователем функции и типы данных, определяемые пользователем.
Тем не менее, многие важные устаревшие программы COBOL используют неструктурированный код, который стал практически неподдерживаемым. Модифицировать даже простой участок кода может быть слишком рискованно и затратно, поскольку он может быть использован неизвестным образом из неизвестных мест. [173]
Проблемы совместимости
[ редактировать ]COBOL задумывался как легко переносимый, «общий» язык. Однако к 2001 году было создано около 300 диалектов. [174] Одним из источников диалектов был сам стандарт: стандарт 1974 года состоял из одного обязательного ядра и одиннадцати функциональных модулей, каждый из которых содержал два или три уровня поддержки. Это допускало 104 976 возможных вариантов. [175]
COBOL-85 не был полностью совместим с более ранними версиями, и его разработка вызвала споры. Джозеф Т. Брофи, ИТ-директор компании Travelers Insurance , возглавил попытку информировать пользователей COBOL о больших затратах на перепрограммирование, связанных с внедрением нового стандарта. [176] В результате комитет ANSI COBOL получил более 2200 писем от общественности, в основном отрицательных, с требованием внести изменения. С другой стороны, считалось, что переход на COBOL-85 повысит производительность в последующие годы, тем самым оправдывая затраты на переход. [177]
Подробный синтаксис
[ редактировать ]Слабый, многословный и дряблый язык, используемый программистами для выполнения скучных бессмысленных действий на мэйнфреймах динозавров. [...] Само его название редко произносится без ритуального выражения отвращения или ужаса.
Файл жаргона 4.4.8. [178]
Синтаксис COBOL часто критикуют за его многословие. Сторонники говорят, что это было сделано для того, чтобы сделать код самодокументируемым , упрощая обслуживание программы. [179] COBOL также был задуман как простой для изучения и использования программистами. [180] при этом он по-прежнему доступен для чтения нетехническому персоналу, например менеджерам. [181] [182] [183] [184]
Стремление к читабельности привело к использованию похожего на английский синтаксиса и структурных элементов, таких как существительные, глаголы, предложения, разделы и подразделения. Однако к 1984 году сопровождающие программ COBOL с трудом справлялись с «непонятным» кодом. [183] и основные изменения в COBOL-85 были призваны облегчить обслуживание. [93]
Жан Саммет, член комитета ближнего круга, отметила, что «не было предпринято особых попыток угодить профессиональным программистам, на самом деле люди, чей основной интерес — программирование, как правило, очень недовольны COBOL», что она объяснила многословным синтаксисом COBOL. [185]
Изоляция от сообщества информатики
[ редактировать ]Сообщество COBOL всегда было изолировано от сообщества компьютерных наук. Ни один ученый-компьютерщик не участвовал в разработке COBOL: все члены комитета были представителями торговли или правительства. Ученые-компьютерщики в то время больше интересовались такими областями, как численный анализ, физика и системное программирование, чем коммерческими проблемами обработки файлов, которые решала разработка COBOL. [186] Жан Саммет объяснил непопулярность COBOL первоначальной «снобской реакцией» из-за его неэлегантности, отсутствия влиятельных ученых-компьютерщиков, участвующих в процессе проектирования, и презрения к обработке бизнес-данных. [187] Спецификация COBOL использовала уникальную «нотацию» или метаязык для определения синтаксиса, а не новую форму Бэкуса-Наура , о которой комитет не знал. Это вызвало «жесткую» критику. [188] [189] [70]
Академический мир склонен считать COBOL многословным, неуклюжим и неэлегантным и пытается его игнорировать, хотя в мире, вероятно, больше программ COBOL и программистов, чем для FORTRAN, ALGOL и PL/I вместе взятых. По большей части только школы с непосредственной профессиональной целью проводят обучение COBOL.
Ричард Конвей и Дэвид Грис , 1973 год. [190]
Позже COBOL страдал от нехватки материалов, освещающих его; вводные книги появились только в 1963 году (в 1966 году Ричард Д. Ирвин опубликовал учебник по COBOL для колледжа). [191] было в два раза больше книг по FORTRAN и в четыре раза больше по BASIC, чем по COBOL К 1985 году в Библиотеке Конгресса . [129] Профессора университетов преподавали более современные, современные языки и методы вместо COBOL, который, как говорили, имел характер «профессиональной школы». [192] Дональд Нельсон, председатель комитета CODASYL COBOL, сказал в 1984 году, что «ученые ... ненавидят COBOL» и что выпускникам компьютерных наук «внушают ненависть к COBOL». [193]
К середине 1980-х годов в бизнес-сообществе также наблюдалась значительная снисходительность к COBOL со стороны пользователей других языков, например FORTRAN или ассемблера , подразумевая, что COBOL можно использовать только для решения несложных задач. [194]
В 2003 году COBOL использовался в 80% учебных программ по информационным системам в США, столько же, сколько C++ и Java . [195] Десять лет спустя опрос, проведенный Micro Focus, показал, что 20% университетских преподавателей считают COBOL устаревшим или мертвым, а 55% считают, что их студенты считают COBOL устаревшим или мертвым. Тот же опрос также показал, что только 25% преподавателей включили программирование на COBOL в свою учебную программу, хотя 60% считали, что им следует его преподавать. [196]
Опасения по поводу процесса проектирования
[ редактировать ]Были высказаны сомнения в компетентности комитета по стандартам. Временно действующий член комитета Говард Бромберг заявил, что процесс разработки «незначительно контролируется» и что он «страдает от неоднородности кадров и… отсутствия талантов». [81] Жан Саммет и Джером Гарфанкель также отметили, что изменения, внесенные в одну редакцию стандарта, будут отменены в следующей, как из-за изменений в составе комитета по стандартизации, так и из-за объективных доказательств. [197]
Стандарты COBOL неоднократно страдали от задержек: COBOL-85 появился на пять лет позже, чем ожидалось. [198] COBOL 2002 опоздал на пять лет. [3] а COBOL 2014 опоздал на шесть лет. [101] [199] Чтобы бороться с задержками, комитет по стандартизации разрешил создание дополнительных дополнений, которые добавляли функции быстрее, чем ожидание следующей версии стандарта. Однако некоторые члены комитета выразили обеспокоенность по поводу несовместимости реализаций и частых модификаций стандарта. [200]
Влияние на другие языки
[ редактировать ]Структуры данных COBOL повлияли на последующие языки программирования. Его структура записей и файлов повлияла на PL/I и Pascal , а REDEFINES
Это предложение было предшественником вариантов записей Паскаля. Явные определения файловой структуры предшествовали развитию систем управления базами данных , а агрегированные данные были значительным шагом вперед по сравнению с массивами Фортрана. [129]
PICTURE
объявления данных были включены в PL/I с небольшими изменениями.
КОБОЛ COPY
объект, хотя и считается «примитивным», [201] повлиял на развитие директив include . [129]
Акцент на переносимости и стандартизации означал, что программы, написанные на COBOL, могли быть переносимыми и способствовали распространению языка на широкий спектр аппаратных платформ и операционных систем. [202] Кроме того, четко определенная структура подразделений ограничивает определение внешних ссылок на Отдел окружающей среды, что, в частности, упрощает изменение платформы. [203]
См. также
[ редактировать ]- Алфавитный список языков программирования
- БЛИС/КОБОЛ
- КОДАСИЛ
- Сравнение языков программирования
- Список поколений языков программирования § на основе COBOL
- Список компиляторов § Компиляторы COBOL
Примечания
[ редактировать ]- ^ Особое влияние оказало на объектно-ориентированные функции COBOL 2002. [3] [4] [5]
- ^ Надгробие в настоящее время находится в Музее компьютерной истории . [64]
- ^ Jump up to: а б Читателя следует предупредить, что, хотя исследование Gartner Group 1997 года повсеместно упоминается со знаменитой цитатой «200 миллиардов строк COBOL», сам отчет найти сложно. [204] Более того, некоторые предполагают [205] что «единственное участие Gartner в этих цифрах» было исследование 1995 года. [206] который «прогнозировал, что исправление ошибки 2000 года будет стоить 1 доллар за строку или 300 миллиардов долларов в общей сложности», что привело к неправильной интерпретации отчета.
- ^ Расширения, специфичные для конкретного поставщика, приводят к тому, что многие реализации имеют гораздо больше: одна реализация распознает более 1100 ключевых слов. [126]
Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Jump up to: а б Саммет, Жан Э. (март 2000 г.). «Настоящие создатели Кобола». Программное обеспечение IEEE . 17 (2): 30–32. дои : 10.1109/52.841602 . ISSN 1937-4194 .
Комитет ближнего действия усердно работал с июня 1959 года, но возникли большие трудности с тем, чтобы довольно большой комитет попытался создать язык программирования. В ноябре председатель комитета по малой дальности назначил шесть человек для разработки спецификаций на рассмотрение: Уильяма Селдена и Гертруду Тирни (IBM), Говарда Бромберга и Нормана Дисконта (RCA), а также Вернона Ривза и Джин Э. Саммет (Sylvania Electric Products). Мы работали в течение двух полных недель (включая несколько круглосуточных сессий) в ноябре 1959 года и отправили предложенные спецификации в полный состав Комитета ближнего действия, который принял почти все из них. После некоторого редактирования (тем же шестью людьми) мы в декабре сдали спецификации в качестве окончательного отчета в Исполнительный комитет, который принял их в январе 1960 года. После некоторого дальнейшего редактирования Государственная типография выпустила Кобол 60. [.. .] [Грейс Хоппер] не участвовала в его работе, за исключением общего руководства, которое она давала своим сотрудникам, которые были непосредственными членами комитета. Таким образом, хотя ее косвенное влияние было очень важным, к сожалению, часто повторяющиеся утверждения о том, что «Грейс Хоппер разработала Кобол», или «Грейс Хоппер была соразработчиком Кобола» или «Грейс Хоппер — мать Кобола», просто неверны.
- ^ Технический стандарт, язык COBOL (PDF) . X/Open Company Ltd., Великобритания, декабрь 1991 г. ISBN. 1-872630-09-Х .
- ^ Jump up to: а б с Сааде, Генри; Уоллес, Энн (октябрь 1995 г.). «КОБОЛ '97: Отчет о состоянии» . Журнал доктора Добба . Архивировано из оригинала 22 апреля 2014 года . Проверено 21 апреля 2014 г.
- ^ Jump up to: а б Арранга, Эдмунд К.; Койл, Фрэнк П. (февраль 1998 г.). Объектно-ориентированный КОБОЛ . Издательство Кембриджского университета . п. 15. ISBN 978-0132611404 .
Стиль объектно-ориентированного языка COBOL отражает влияние Smalltalk и C++.
- ^ Арранга, Эдмунд К.; Койл, Фрэнк П. (март 1997 г.). «Кобол: восприятие и реальность». Компьютер . 30 (3): 127. дои : 10.1109/2.573683 . ISSN 0018-9162 .
- ^ Имадзё, Тецудзи; и др. (сентябрь 2000 г.). COBOL Script: бизнес-ориентированный язык сценариев . Конференция по корпоративным распределенным объектным вычислениям . Макухари, Япония: IEEE. дои : 10.1109/EDOC.2000.882363 . ISBN 0769508650 .
- ^ Хо, Вин Хонг (7 мая 2007 г.). «Введение в EGL» (PDF) . Группа программного обеспечения IBM. Архивировано из оригинала (PDF) 13 января 2019 года . Проверено 12 января 2019 г.
- ^ Радин, Джордж (1978). Вексельблат, Ричард Л. (ред.). Ранняя история и характеристики PL/I . История языков программирования. Академическое издательство (опубликовано в 1981 г.). п. 572. дои : 10.1145/800025.1198410 . ISBN 0127450408 .
- ^ «Что такое PL/B — язык программирования для бизнеса?» . sysmaker.com . Инфопро, ООО . Проверено 22 апреля 2022 г.
... преобразование в альтернативный, расширенный COBOL или в ANSI COBOL очень сложно, если вообще возможно.
- ^ Jump up to: а б с Митчелл, Роберт Л. (4 октября 2006 г.). «Кобол: Еще не умер» . Компьютерный мир . Проверено 27 апреля 2014 г.
- ^ Митчелл, Роберт Л. (14 марта 2012 г.). «Утечка мозгов: куда дальше пойдут системы Cobol» . Компьютерный мир . Проверено 9 февраля 2015 г.
- ^ Энсменгер, Натан Л. (2009). Компьютерные мальчики берут верх: компьютеры, программисты и политика технических знаний . МТИ Пресс . п. 100. ИСБН 978-0262050937 . LCCN 2009052638 .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2023 .
- ^ Фергюсон, Эндрю. «История языков программирования» . cs.brown.edu . Проверено 12 марта 2018 г.
- ^ «Общий бизнес-ориентированный язык» .
- ^ Грёнфельдт, Том. «Covid ускоряет миграцию банковских мейнфреймов в облако» . Форбс .
- ^ Бейер 2009 , с. 282.
- ^ Гюрер, Дениз (1 июня 2002 г.). «Женщины-новаторы в компьютерных науках». SIGCSE Bull . 34 (2): 175–180. дои : 10.1145/543812.543853 . ISSN 0097-8418 . S2CID 2577644 .
- ^ Бейер 2009 , стр. 281–282.
- ^ Бархат 1978а , стр. 200.
- ^ Флахайв, Пол (24 мая 2019 г.). «Как COBOL все еще поддерживает глобальную экономику в 60 лет» . Техасское общественное радио . Архивировано из оригинала 24 мая 2019 года . Проверено 19 июля 2019 г.
(Грейс Хоппер) Код по прозвищу «Бабушка Кобол» был основан на некоторых из ее ранних работ. Она сказала, что, услышав слухи, один из ее сотрудников пошел и купил гранитное надгробие. «Он вырезал на нем слово COBOL. Затем он отправил его экспресс-почтой мистеру Филлипсу в Пентагон». По ее словам, розыгрыш над Чарльзом Филлипсом, руководителем проекта в министерстве обороны, привлек внимание сильных мира сего и стал поворотным моментом. COBOL впоследствии стал наиболее широко используемым и долговечным компьютерным языком в истории.
- ^ Бейер 2009 , с. 283.
- ^ Бейер 2009 , с. 284.
- ^ «Первые заседания конференции по языкам систем данных». IEEE Анналы истории вычислений . 7 (4): 316–325. 1985. дои : 10.1109/MAHC.1985.10047 . S2CID 35625728 .
- ^ Jump up to: а б с д и Саммет 2004 , стр. 104.
- ^ Бейер 2009 , с. 286.
- ^ Jump up to: а б Коннер 1984 , с. ID/9.
- ^ Саммет 1978а , стр. 201.
- ^ Jump up to: а б с д Бемер 1971 , с. 132.
- ^ Бейер 2009 , с. 288.
- ^ Саммет 1978а , стр. 203.
- ^ CODASYL 1969 , § I.2.1.1.
- ^ Саммет 1978a , стр. 204.
- ^ CODASYL 1969 , § I.1.2.
- ^ Бейер 2009 , с. 290.
- ^ Саммет, Жан (1978). «Ранняя история КОБОЛа». Уведомления ACM SIGPLAN . 13 (8): 121–161. дои : 10.1145/960118.808378 . S2CID 10743643 .
- ^ Саммет 1978а , стр. 217.
- ^ Адамс, Вики Портер (5 октября 1981 г.). «Капитан Грейс М. Хоппер: мать КОБОЛа» . Инфомир . Том. 3, нет. 20. с. 33. ISSN 0199-6649 .
- ^ Беттс, Митч (6 января 1992 г.). «Умирает Грейс Хоппер, мать Кобола» . Компьютерный мир . 26 (1): 14.
- ^ Лор, Стив (2008). Перейти: История специалистов по математике, игроков в бридж, инженеров, шахматных волшебников, ученых-индивидуалистов и иконоборцев — программистов, сотворивших революцию в области программного обеспечения . Основные книги . п. 52. ИСБН 978-0786730766 .
- ^ «Инженер-программист и со-разработчик Cobol» . Ирландские Таймс .
- ^ Jump up to: а б Бейер 2009 , с. 292.
- ^ Бемер 1971 , с. 131.
- ^ Бейер 2009 , с. 296.
- ^ Саммет 1978а , стр. 221.
- ^ Бейер 2009 , с. 291.
- ^ «Устная история капитана Грейс Хоппер» (PDF) . Музей истории компьютеров . Декабрь 1980 г. с. 37. Архивировано из оригинала (PDF) 25 декабря 2017 года . Проверено 28 июня 2014 г.
- ^ Саммет 1978а , стр. 218.
- ^ Маркотти 1978a , с. 268.
- ^ Бархат 1978a , стр. 205–206.
- ^ Jump up to: а б Саммет 1978a , Рисунок 8.
- ^ Бархат 1978a , стр. 230–231.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2001 , стр. 846.
- ^ Саммет 1978а , стр. 220.
- ^ Саммет 1978а , стр. 228.
- ^ Бархат 1978а , стр. 210.
- ^ Бемер 1971 , с. 132: Мы не можем найти ни одного человека, который бы признался, что придумал аббревиатуру «КОБОЛ» .
- ^ Саммет 1978a , с. 210: На следующий день название COBOL было окончательно согласовано как аббревиатура от COMmon Business Oriented Language. К сожалению, в моих заметках не указано, кто сделал это предложение .
- ^ Салливан, Патрисия (25 июня 2004 г.). «Пионер компьютеров Боб Бемер, 84 года» . Вашингтон Пост . п. В06 . Проверено 28 июня 2014 г.
- ^ «ОТЧЕТ О COBOL — Интервью с Бобом Бемером — отцом COBOL» . Архивировано из оригинала 2 апреля 2018 года.
- ^ «ОТЧЕТ О COBOL — Интервью с Бобом Бемером — отцом 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 , версия 15, январь 2009 г.; Корпорация IBM: Справочник по языку Enterprise COBOL для z/OS , версия 4, выпуск 1, SC23-8528-00, декабрь 2007 г.
- ^ Гарфанкель, Джером (11 ноября 1984 г.). «В защиту Кобола» . Компьютерный мир . 18 (24): ИД/19.
- ^ Пратт, Терренс В. (1975). Языки программирования: проектирование и реализация . Энглвуд Клиффс, Нью-Джерси: Прентис Холл. стр. 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). «Стандарты языков программирования» . В Ралстоне, Энтони; Рейли, Эдвин Д.; Хеммендингер, Дэвид (ред.). Энциклопедия информатики (4-е изд.). Уайли. стр. 1467. ИСБН 978-0470864128 .
- ^ Jump up to: а б Бейер 2009 , с. 301.
- ^ Jump up to: а б Браун 1976 , с. 49.
- ^ Браун 1976 , с. 52.
- ^ Тейлор, Алан (2 августа 1972 г.). «Немногие понимают, что ресурсы местных школ для DP растрачены впустую» . Компьютерный мир . 6 (31): 11.
- ^ Трианс, Дж. М. (1974). Программирование на COBOL: Курс двенадцати телевизионных лекций . Издательство Манчестерского университета. п. 87. ИСБН 978-0719005923 .
- ^ Кляйн 2010 , с. 16.
- ^ Бэрд, Джордж Н.; Оливер, Пол (май 1977 г.). «Стандарт 1974 года (X3.23–1974)». Стандарты языков программирования. Кому они нужны? (PDF) (Отчет). Департамент ВМФ . стр. 19–21. Архивировано (PDF) из оригинала 7 января 2014 года . Проверено 7 января 2014 г.
- ^ Каллетон, Джон Р. младший (23 июля 1975 г.). « Неравномерная доступность — проблема…» Computerworld . 9 (30): 17.
- ^ Симмонс, Уильямс Б. (18 июня 1975 г.). «Действительно ли автор отчетов Кобола промахивается?» . Компьютерный мир . 9 (25): 20.
- ^ Шор, Рита (26 января 1981 г.). «Пользователь угрожает судебным иском из-за Ansi Cobol-80» . Компьютерный мир . 15 (4): 1, 8.
- ^ Шор, Рита (26 октября 1981 г.). «DPMA выступает против проекта Кобола» . Компьютерный мир . 15 (43): 1–2.
- ^ Jump up to: а б с Галлант, Джон (16 сентября 1985 г.). «Пересмотренный стандарт Кобола может быть готов в конце 1985 года» . Компьютерный мир . 19 (37): 1, 8.
- ^ Jump up to: а б «Эксперт обращается к стандарту Cobol 85» . Компьютерный мир . 19 (37): 41, 48. 16 сентября 1985 г.
- ^ Пол, Лоис (15 марта 1982 г.). «Ответы на Кобол-80 исключительно отрицательные» . Компьютерный мир . 16 (11): 1, 5.
- ^ Пол, Лоис (25 апреля 1983 г.). «Исследование выявило мало проблем при переходе на Cobol-8X» . Компьютерный мир . 17 (17): 1, 6.
- ^ Гиллин, Пол (19 ноября 1984 г.). «Пользователи DEC получают преимущество при внедрении Cobol-80» . Компьютерный мир . 18 (47): 1, 6.
- ^ Корпоративные серверы ClearPath (апрель 2015 г.). «Справочное руководство по программированию COBOL ANSI-85» (PDF) . public.support.unisys.com . Унисис . Проверено 29 апреля 2022 г.
- ^ Гарфанкель 1987 , с. 150.
- ^ Рой, МК; Дастидар, Д. Призрак (1 июня 1989 г.). «Особенности КОБОЛ-85». Программирование на COBOL: проблемы и решения (2-е изд.). Макгроу-Хилл Образование. стр. 438–451. ISBN 978-0074603185 .
- ^ Робинсон, Брайан (9 июля 2009 г.). «Кобол остается старым резервом в агентствах, несмотря на свой возраст» . ФКВ . Медиа-группа государственного сектора. Архивировано из оригинала 27 апреля 2014 года . Проверено 26 апреля 2014 г.
- ^ Jump up to: а б «Стандарты КОБОЛ» . Микро Фокус. Архивировано из оригинала 31 марта 2004 года . Проверено 2 сентября 2014 г.
- ^ «NetCOBOL для .Net» . netcobol.com . GTSoftware. 2013. Архивировано из оригинала 8 июля 2014 года . Проверено 29 января 2014 г.
- ^ «Список функций Codasyl Cobol» . Компьютерный мир . 18 (37): ИД/28. 10 сентября 1984 года . Проверено 8 июня 2014 г.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2001 , Приложение F.
- ^ Кляйн 2010 , с. 21.
- ^ Jump up to: а б «JTC1/SC22/WG4 – КОБОЛ» . ИСО. 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/IEC JTC 1/SC 22/WG 4 2023 , § E.3.1.
- ^ Jump up to: а б с д и ISO/IEC JTC 1/SC 22/WG 4 2023 , § E.3.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.
- ^ Кизиор, Рональд Дж.; Карр, Дональд; Халперн, Пол. «Есть ли будущее у COBOL?» (PDF) . Материалы конференции по образованию в области информационных систем 2000 . 17 (126). Архивировано из оригинала (PDF) 17 августа 2016 года . Проверено 30 сентября 2012 г.
- ^ Уайт, Дуг (12 июля 1998 г.). «Часто задаваемые вопросы (FAQ) о проблеме 2000 года» . homepages.wmich.edu . Архивировано из оригинала 7 ноября 2021 года . Проверено 29 апреля 2022 г.
Таким образом, основной проблемой Y2K является проблема неверных результатов при проведении математических расчетов дат.
- ^ Каппельман, Леон А. (2000). «Некоторые стратегические благословения 2000 года» . Программное обеспечение IEEE . 17 (2): 42–46. дои : 10.1109/52.841605 .
- ^ Карр и Кизиор 2003 , с. 16.
- ^ Карр и Кизиор 2003 , с. 10.
- ^ «Утечка мозгов Кобола: Результаты опроса» . Компьютерный мир . 14 марта 2012 года . Проверено 27 апреля 2014 г.
- ^ Владелец, Дэвид А. (25 мая 2016 г.). «Федеральным агентствам необходимо решить проблему старения устаревших систем» (PDF) . Счетная палата правительства . п. 18. Архивировано из оригинала (PDF) 15 июня 2016 года . Проверено 19 июля 2019 г.
Несколько агентств, таких как Министерство сельского хозяйства (USDA), DHS, HHS, Министерство юстиции, Казначейство и VA, сообщили об использовании Common Business Oriented Language (COBOL) — языка программирования, разработанного в конце 1950-х и начале 1960-х годов — для программирования своего наследия. системы. Широко известно, что агентствам необходимо переходить на более современные и удобные в сопровождении языки, если это целесообразно и осуществимо.
- ^ «КОБОЛ-блюз» . Рейтер . Проверено 8 апреля 2020 г.
- ^ Теплицки, Фил (25 октября 2019 г.). «Устранение пробела в навыках программирования на COBOL» . Журнал IBM Systems, IBM Z. Архивировано из оригинала 13 апреля 2020 года . Проверено 11 июня 2020 г.
- ^ Ли, Алисия (8 апреля 2020 г.). «Срочно требуются люди, знающие полувековой компьютерный язык, чтобы штаты могли обрабатывать заявки на пособие по безработице» . CNN . Проверено 8 апреля 2020 г.
- ^ Лонг, Хизер; Штейн, Джефф; Рейн, Лиза; Ромм, Тони (17 апреля 2020 г.). «Проверке стимулов и другим мерам по оказанию помощи в связи с коронавирусом препятствуют устаревшие технологии и непростая политика правительства» . Вашингтон Пост . Проверено 19 апреля 2020 г.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.9.
- ^ «Таблица зарезервированных слов» . Micro Focus Visual COBOL 2.2 Справочник по языку COBOL . Микро Фокус . Проверено 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: а б с д Шнейдерман 1985 , с. 349.
- ^ Маккракен 1976 , стр. 2, 6–9.
- ^ Jump up to: а б ISO/IEC JTC 1/SC 22/WG 4 2001 , § F.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § D.18.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § D.18.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , стр. 108.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , стр. 896.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § D.2.1.
- ^ «Файловые организации» . Обработка файлов . Микро Фокус. 1998. Архивировано из оригинала 4 марта 2016 года . Проверено 27 июня 2014 г.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.5.1.2.
- ^ Катлер 2014 , Приложение А.
- ^ Хаббелл, Тейн (1999). Сэмс: Изучите COBOL за 24 часа . Издательство САМС . п. 40. ИСБН 978-0672314537 . LCCN 98087215 .
- ^ Маккракен и Голден 1988 , § 19.9.
- ^ Катлер 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/IEC JTC 1/SC 22/WG 4 2014 , стр. 855.
- ^ Jump up to: а б Маккракен 1976 , с. 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 . дои : 10.1145/381788.316163 . ISBN 1581131372 . Архивировано (PDF) из оригинала 24 декабря 2010 года.
- ^ Jump up to: а б с Верман, Нильс; Верховен, Эрнст-Ян (ноябрь 2006 г.). «Обнаружение минных полей Кобол» (PDF) . Программное обеспечение: практика и опыт . 36 (14). дои : 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 , § D.6.5.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/IEC JTC 1/SC 22/WG 4 2014 , стр. 899.
- ^ Jump up to: а б Маккракен и Голден 1988 , § 8.4.
- ^ Примеры поддержки компилятора для
ALTER
можно увидеть в следующем:- Тиффин, Брайан (18 сентября 2013 г.). «Сентябрь 2013» . ГНУ Кобол . Архивировано из оригинала 5 мая 2014 года . Проверено 5 января 2014 г.
- «Заявление ALTER» . Micro Focus Visual COBOL 2.2 для Visual Studio 2013 Справочник по языку COBOL . Микро Фокус . Проверено 5 января 2014 г.
- «Заявление ALTER (Ядро)» (PDF) . Справочное руководство COBOL85 . Фуджицу. Ноябрь 1996 г. с. 555. Архивировано из оригинала (PDF) 6 января 2014 года . Проверено 5 января 2014 г.
- «Заявление ALTER» . Справочник по языку Enterprise COBOL для z/OS . ИБМ. Июнь 2013 года . Проверено 5 января 2014 г.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2001 , § F.1.
- ^ Jump up to: а б Маккракен 1976 , с. 355.
- ^ Мозли, Джей (17 января 2015 г.). «Компилятор COBOL от MVT» . Проверено 19 июля 2015 г.
- ^ Дейкстра, Эдсгер В. (18 июня 1975 г.). «Как нам говорить правду, которая может ранить?» . Техасский университет в Остине. EWD498. Архивировано из оригинала 2 мая 2017 года . Проверено 29 августа 2007 г.
- ^ Томпкинс, HE (1983). «В защиту преподавания структурированного COBOL как информатики» . Уведомления ACM SIGPLAN . 18 (4): 86–94. дои : 10.1145/948176.948186 . S2CID 33803213 .
- ^ Jump up to: а б Риле 1992 , с. 125.
- ^ Шнейдерман 1985 , стр. 349–350.
- ^ Кофлан, Майкл (16 марта 2014 г.). Начало COBOL для программистов . Апресс. п. 4. ISBN 978-1430262534 . Проверено 13 августа 2014 г.
- ^ Саммет 1978b , стр. 258.
- ^ Риле 1992 , с. 126.
- ^ Риле 1992 , с. 127.
- ^ «COBOL и устаревший код как системный риск | голый капитализм» . 19 июля 2016 года . Проверено 23 июля 2016 г.
- ^ Ламмель, Ральф; Верхуф, Крис (ноябрь – декабрь 2001 г.). «Решение проблемы 500 языков» (PDF) . Программное обеспечение IEEE . 18 (6): 79. дои : 10.1109/52.965809 . hdl : 1871/9853 . Архивировано из оригинала (PDF) 19 августа 2014 года.
- ^ Хокинс, Ти Джей; Харанди, Монтана (апрель 1979 г.). «На пути к более портативному COBOL» . Компьютерный журнал . 22 (4): 290. doi : 10.1093/comjnl/22.4.290 .
- ^ Гарфанкель 1987 , с. 11.
- ^ Гарфанкель 1987 , с. 15.
- ^ Раймонд, Эрик С. (1 октября 2004 г.). «КОБОЛ» . Файл жаргона, версия 4.4.8 . Архивировано из оригинала 30 августа 2014 года . Проверено 13 декабря 2014 г.
- ^ Браун 1976 , с. 53.
- ^ CODASYL 1969 , § II.1.1.
- ^ Шнейдерман 1985 , с. 350.
- ^ Бархат 1961 , стр. 381.
- ^ Jump up to: а б Коннер 1984 , с. ID/10.
- ^ Маркотти 1978a , с. 263.
- ^ Коннер 1984 , с. ID/14.
- ^ Бархат 1961 , стр. 380.
- ^ Маркотти 1978a , с. 266.
- ^ Саммет 1978b , стр. 255.
- ^ Шнейдерман 1985 , стр. 348–349.
- ^ Конвей, Ричард; Грис, Дэвид (1973). Введение в программирование: структурированный подход с использованием PL/1 и PL/C . Кембридж, Массачусетс: Издательство Winthrop. п. 341. ИСБН 0-87626-405-4 .
- ^ «Логика и программирование COBOL, третье издание, 1974 г.» . Архивировано из оригинала 5 марта 2016 года . Проверено 25 февраля 2016 г. .
- ^ Шнейдерман 1985 , с. 351.
- ^ «Интервью: защитник Кобола» . Компьютерный мир . 18 (37): ИД/29 – ИД/32. 10 сентября 1984 года . Проверено 8 июня 2014 г.
- ^ Пратт, Терренс В.; Зелковиц, Марвин В. (1984). Языки программирования: проектирование и реализация (2-е изд.). Энглвуд Клиффс, Нью-Джерси: Прентис Холл. ISBN 0136780121 .
- ^ Карр и Кизиор 2003 , с. 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. дои : 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 г.
пересмотренная версия стандарта COBOL от июня 2008 г.
- ^ Бэбкок, Чарльз (14 июля 1986 г.). «Содраны стандартные дополнения Cobol» . Компьютерный мир . 20 (28): 1, 12.
- ^ Маркотти 1978b , с. 274.
- ^ Это можно увидеть в:
- «Визуальный КОБОЛ» . IBM PartnerWorld . ИБМ . 21 августа 2013 года. Архивировано из оригинала 12 июля 2014 года . Проверено 5 февраля 2014 г.
Micro Focus Visual COBOL обеспечивает разработку и развертывание COBOL следующего поколения для Linux x86-64, Linux для System z, AIX, HP/UX, Solaris и Windows.
- «Семейство компиляторов COBOL» . IBM.com . ИБМ . Архивировано из оригинала 23 февраля 2014 года . Проверено 5 февраля 2014 г.
- Тиффин, Брайан (4 января 2014 г.). «Какие платформы поддерживаются GNU Cobol?» . Архивировано из оригинала 14 декабря 2013 года . Проверено 5 февраля 2014 г.
- «Визуальный КОБОЛ» . IBM PartnerWorld . ИБМ . 21 августа 2013 года. Архивировано из оригинала 12 июля 2014 года . Проверено 5 февраля 2014 г.
- ^ Кофлан, Майкл (2002). «Введение в КОБОЛ» . Архивировано из оригинала 5 марта 2023 года.
- ^ «Исследования группы Gartner» . 1997-2001.state.gov . Офис управления программой 2000 года. 2000 . Проверено 23 апреля 2022 г.
- ^ Энгельманн, Виктор (8 апреля 2021 г.). «Проверка фактов по COBOL» . cobsolete.de . КОБСОЛЕТ . Проверено 23 апреля 2022 г.
- ^ «Что будет в будущем». ИТ-директор . Международная группа данных. 15 декабря 1995 г. - 1 января 1996 г. с. 82.
Источники
[ редактировать ]- Бемер, Боб (1971). «Взгляд на историю КОБОЛа» (PDF) . Компьютерный журнал Honeywell . 5 (3). Архивировано из оригинала (PDF) 22 января 2016 года . Проверено 28 июня 2014 г.
- Бейер, Курт (2009). Грейс Хоппер и изобретение информационного века . МТИ Пресс. ISBN 978-0262013109 . LCCN 2008044229 .
- Браун, Уильям Р. (1 декабря 1976 г.). «КОБОЛ». В Белзере, Джек; Хольцман, Альберт Г.; Кент, Аллен (ред.). Энциклопедия компьютерных наук и технологий: Том 5 . ЦРК Пресс . ISBN 978-0824722555 .
- Карр, Дональд Э.; Кизиор, Рональд Дж. (31 декабря 2003 г.). «Продолжающаяся актуальность COBOL в бизнесе и научных кругах: текущая ситуация и сравнение с исследованием 2000 года» (PDF) . Образовательный журнал по информационным системам . 1 (52). ISSN 1545-679X . S2CID 62485945 . Архивировано (PDF) из оригинала 5 марта 2023 года . Проверено 4 августа 2014 г.
- КОДАСИЛ (июль 1969 г.). CODASYL COBOL Журнал развития, 1968 г. Национальное бюро стандартов . ISSN 0591-0218 . LCCN 73601243 . ОЛ 14204153М .
- Коннер, Ричард Л. (14 мая 1984 г.). «Кобол, твой возраст виден» . Компьютерный мир . 18 (20): ИД/7 – ИД/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» . ИСО . Архивировано из оригинала (ZIP в формате PDF) 24 января 2002 года . Проверено 2 сентября 2014 г. (Ссылка ведет на проект N 0147)
- ISO/IEC JTC 1/SC 22/WG 4 (31 октября 2014 г.). INCITS/ISO/IEC 1989:2014 [2014] – Язык программирования COBOL . ИНЦИТЫ .
{{cite book}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ISO/IEC JTC 1/SC 22/WG 4 (январь 2023 г.). ISO/IEC 1989:2023 – Язык программирования COBOL . ИСО .
{{cite book}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - Кляйн, Уильям М. (4 октября 2010 г.). «История КОБОЛа» (PDF) . Архивировано из оригинала (PDF) 7 января 2014 года . Проверено 7 января 2014 г.
- Маркотти, Майкл (1978a). Вексельблат, Ричард Л. (ред.). Стенограмма сессии вопросов и ответов . История языков программирования. Академическое издательство (опубликовано в 1981 г.). п. 263. дои : 10.1145/800025.1198370 . ISBN 0127450408 .
- Маркотти, Майкл (1978b). Вексельблат, Ричард Л. (ред.). Полный текст всех представленных вопросов . История языков программирования. Академическое издательство (опубликовано в 1981 г.). п. 274. дои : 10.1145/800025.1198371 . ISBN 0127450408 .
- Маккракен, Дэниел Д. (1976). Упрощенное руководство по структурированному программированию на COBOL . Уайли. ISBN 0-471-58284-0 . LCCN 75044399 .
- Маккракен, Дэниел Д.; Голден, Дональд Г. (1988). Упрощенное руководство по структурированному программированию на COBOL (2-е изд.). Уайли. ISBN 978-0471610540 . LCCN 87034608 .
- Риле, Ричард Л. (август 1992 г.). «ИСПОЛНЕНИЕ считается вредным» . Коммуникации АКМ . 35 (8): 125–128. дои : 10.1145/135226.376106 . S2CID 18845698 .
- Саммет, Жан Э. (май 1961 г.). Метод объединения АЛГОЛА и КОБОЛа . Доклады, представленные на совместной западной компьютерной конференции IRE-AIEE-ACM 9–11 мая 1961 г. АКМ . стр. 379–387. дои : 10.1145/1460690.1460734 .
- Саммет, Жан Э. (1978a). Вексельблат, Ричард Л. (ред.). Ранняя история КОБОЛа . История языков программирования. Академическое издательство (опубликовано в 1981 г.). дои : 10.1145/800025.1198367 . ISBN 0127450408 .
- Саммет, Жан Э. (1978b). Вексельблат, Ричард Л. (ред.). Стенограмма выступления . История языков программирования. Академическое издательство (опубликовано в 1981 г.). дои : 10.1145/800025.1198368 . ISBN 0127450408 .
- Саммет, Жан Э. (23 июля 2004 г.). «КОБОЛ». В Рейли, Эдвин Д. (ред.). Краткая энциклопедия информатики . Уайли. ISBN 978-0470090954 . OCLC 249810423 .
- Шнейдерман, Б. (октябрь 1985 г.). «Связь между COBOL и информатикой». Анналы истории вычислительной техники . 7 (4): 348–352. дои : 10.1109/MAHC.1985.10041 . S2CID 1009406 .
Внешние ссылки
[ редактировать ]- COBOLStandard.info на Wayback Machine (архивировано 10 января 2017 г.)
- ISO/IEC JTC1/SC22/WG4 — COBOL на Wayback Machine (архивировано 22 августа 2016 г.)
- КОБОЛ в Керли
- Стандарт языка COBOL (1991; COBOL-85 с поправкой 1), от The Open Group
- КОБОЛ
- Языки программирования .NET
- программное обеспечение 1959 года
- Языки программирования на основе классов
- Внедрение компьютеров в 1959 году.
- Кроссплатформенное программное обеспечение
- Объектно-ориентированные языки программирования
- Процедурные языки программирования
- Языки программирования, созданные женщинами
- Языки программирования, созданные в 1959 году.
- Языки программирования со стандартом ISO
- Статически типизированные языки программирования
- Структурированные языки программирования