Язык программирования cobol история названия
Кобол
Грейс Хоппер, Вильям Селден, Гертруда Тирни, Говард Бромберг, Говард Дискаунт, Вернон Ривз, Жан Е. Саммет
OpenCOBOL, Micro Focus International
HP3000 COBOL/II, COBOL/2, IBM OS/VS COBOL, IBM COBOL/II, IBM COBOL SAA, IBM Enterprise COBOL, IBM COBOL/400, IBM ILE COBOL, Unix COBOL X/Open, Micro Focus COBOL, Microsoft COBOL, Ryan McFarland RM/COBOL, Ryan McFarland RM/COBOL-85, DOSVS COBOL, UNIVAC COBOL, Realia COBOL, Fujitsu COBOL, ICL COBOL, ACUCOBOL-GT, DEC VAX COBOL, Wang VS COBOL, Visual COBOL
FLOW-MATIC, COMTRAN, FACT
Кобо́л (COBOL, COmmon Business Oriented Language) — один из старейших языков программирования (первая версия в 1959), предназначенный, в первую очередь, для разработки бизнес-приложений.
В свежий стандарт языка 2002 года в Кобол добавлены средства объектно-ориентированного программирования и другие современные языковые конструкции. [1]
Содержание
История
Руководителем проекта по созданию Кобола была женщина — Грейс Хоппер (бабушка Кобола). Практически с самого своего рождения Кобол является ANSI-стандартизованным языком программирования.
Масштабы использования
В то же время, Кобол имел прекрасные для своего времени средства для работы со структурами данных и файлами, он стал первым языком, в котором появился тип данных «запись». [4] Это обеспечило ему долгую жизнь в бизнес-приложениях, по крайней мере, в США.
Dr. Dobb’s Journal (со ссылкой на The Gartner Group, Computerworld, Ovum и Micro Focus International) [5] приводит следующие факты. К 1997 году активно использовалось около 240 миллиардов строк кода на Коболе. Около 90 % финансовых транзакций в мире обрабатывается кодом на Коболе, и 75 % коммерческой обработки данных написано на Коболе. Общая стоимость используемого в настоящее время коболовского кода оценивается в 2 триллиона долларов США. До сих пор ежегодно пишутся миллиарды новых строк кода на Коболе.
Hello world
Примечания
Литература
Ссылки
Смотреть что такое «Кобол» в других словарях:
КОБОЛ — (COBOL сокр. от англ. Common Business Oriented Language), название языка программирования, применяемого при описании программ для решения учетно экономических и управленческих задач с помощью ЭВМ. Кобол обеспечивает наглядную и достаточно… … Большой Энциклопедический словарь
КОБОЛ — [англ. COBOL, сокр. Словарь иностранных слов русского языка
КОБОЛ — [от английского Co(mmon) общепринятый, B(usiness) деловой, O(riented) ориентированный, L(anguage) язык], язык программирования, ориентированный на решение преимущественно экономических задач. Разработан в 1958 60 (США). Обеспечивает компактную и… … Современная энциклопедия
КОБОЛ — (от английского Common Buisness Oriented Language), язык ПРОГРАММИРОВАНИЯ, разработанный в 1959 г. для обработки деловых данных. Впоследствии этот язык пересматривался и совершенствовался, и в настоящее время широко применяется … Научно-технический энциклопедический словарь
кобол — сущ., кол во синонимов: 1 • язык (247) Словарь синонимов ASIS. В.Н. Тришин. 2013 … Словарь синонимов
КОБОЛ — (COBOL) Сокращение от общепринятого делового языка. Этот язык обычно используется для написания компьютерных программ, предназначенных для обслуживания предпринимателей, например программ учета накладных и составления платежных ведомостей. Это… … Словарь бизнес-терминов
КОБОЛ — Язык программирования для экономических задач. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN Common Business Oriented LanguageCOBOL … Справочник технического переводчика
КОБОЛ — язык программирования управленческих задач англ.: COBOL, Common Business Oriented Language англ. Словарь: С. Фадеев. Словарь сокращений современного русского языка. С. Пб.: Политехника, 1997. 527 с … Словарь сокращений и аббревиатур
Кобол — [от английского Co(mmon) общепринятый, B(usiness) деловой, O(riented) ориентированный, L(anguage) язык], язык программирования, ориентированный на решение преимущественно экономических задач. Разработан в 1958 60 (США). Обеспечивает компактную и… … Иллюстрированный энциклопедический словарь
кобол — (COBOL, сокр. от англ. Common Business Oriented Language), название языка программирования, применяемого при описании программ для решения учётно экономических и управленческих задач с помощью ЭВМ. Кобол обеспечивает наглядную и достаточно… … Энциклопедический словарь
Что такое COBOL, и почему так много учреждений полагаются на него
Возможно Вы слышали о COBOL — 60-летнем языке программирования. Что именно это? И почему он все еще является стержнем финансового мира, несмотря на то, что мало кто все еще знает, как его использовать?
Происхождение COBOL
Грейс Хоппер была феноменом. Она получила докторскую степень по математике в Йельском университете, была профессором в Вассаре и покинула военно-морской флот США в звании контр-адмирала. Ее вклад в области вычислительной техники можно судить по количеству фондов и программ, которые были созданы. Национальный научно-исследовательский вычислительный центр энергетики назвал ее суперкомпьютер Cray XE6. Военно-морской флот также назвал свой ракетный эсминец, USS Hopper, в ее честь. Девиз корабля «Aude et Effice» («Дерзай и делай») вполне мог быть придуман Хоппер.
Стремясь создать язык программирования, Хоппер разработала первый компилятор. Это открыло двери для первых скомпилированных языков, таких как FLOW-MATIC. Это принесло ей место в Конференции по языкам систем данных (CODASYL) 1959 года.
Она также сыграла важную роль в спецификации и разработке общего бизнес-ориентированного языка (COBOL). Первая встреча состоялась 23 июня 1959 года, а ее доклад и спецификация языка COBOL последовали в апреле 1960 года.
Кобол был радикальным
Кобол содержал некоторые новаторские концепции. Возможно, наиболее значимым из них была способность работать на оборудовании, произведенном различными производителями, что было беспрецедентным в то время.
Язык был сложным и предоставлял почти английский словарь для работы программистов. Он был разработан для обработки огромных объемов данных и был исключительно математически точным.
Его словарь зарезервированных слов (слов, составляющих язык) приближается к 400. Программист связывает эти зарезервированные слова вместе, чтобы они имели синтаксический смысл и создавал программу.
Любой программист, который знаком с другими языками, скажет Вам, что 400 — это невероятное количество зарезервированных слов. Для сравнения, язык C имеет 32, а Python — 33.
Еще одна особенность COBOL — это строгое требование, чтобы определенные строки программы начинались в определенных столбцах. Сегодня у программистов больше свободы при форматировании COBOL, и им больше не нужно вводить все прописными буквами. Это делает работу с ним менее сложной. Вот пример программы:
КОБОЛ — это настоящий хит
Как бы неуклюже ни казалось сегодня, КОБОЛ был революционным. Он нашел пользу в финансовом секторе, федеральном правительстве и крупных корпорациях и организациях. Это было связано с его масштабируемостью, возможностями обработки пакетов и математической точностью. Он был установлен на мэйнфреймах по всему миру, укоренился и процветал.
Зависимость от систем, которые все еще работают на COBOL, удивительна. Reuters предоставила отчет за 2017 год со следующей статистикой:
Кобол это проблема
Программисты, которые знают COBOL, либо уходят на пенсию, думают об уходе на пенсию, либо мертвы. Мы постоянно теряем людей, которые обладают навыками для поддержания этих жизненно важных систем в рабочем состоянии. Новые, более молодые программисты не знают COBOL. Большинство также не хотят работать на системах, для которых Вам нужно поддерживать древний код или писать новый код.
Это такая проблема, что Билл Хиншоу, ветеран COBOL, был вынужден уйти на пенсию, чтобы основать COBOL Cowboys. Эта частная консалтинговая фирма обслуживает отчаявшихся корпоративных клиентов, которые нигде не могут найти подкованных на COBOL кодеров. «Молодым» в COBOL Cowboys уже за 50. Они считают, что 90 процентов бизнес-систем Fortune 500 работают на COBOL.
Конечно, частные предприятия, корпорации и банки — не единственные, кому нужно колоссальное количество финансовых данных. Федеральные, провинциальные и местные органы власти предъявляют одинаковые требования. Как и все остальные, они используют для этого мэйнфреймы и COBOL.
Почему бы не мигрировать и не обновиться
Обновление этих устаревших систем не так просто, как кажется. Системы являются жизненно важными, работающие 24/7, на которых вращаются финансовый, правительственный и деловой мир. Код старый, многослойный и, часто, плохо или полностью недокументированный. Перспектива сравнивалась с тем, чтобы снять пропеллеры с самолета и попытаться оснастить его реактивными двигателями — в воздухе.
Помимо риска, экономический аргумент для перехода на современные системы также является жестким. Деньги, которые были потрачены на поддержание работоспособности этих мэйнфреймов и приложений COBOL, поразительны. Должны ли учреждения выбрасывать все это и начинать заново, пока этот код COBOL все еще работает и функционирует? Миграция с COBOL не будет ни дешевой, ни быстрой.
Все меняется, но перспектива сделать что-то с этим вряд ли привлекательна. Тем не менее, единственный способ улучшить ситуацию — это провести контролируемую, осторожную миграцию на современные программные и аппаратные средства.
Для достижения этого без сбоев, потери данных и простоев потребуются современные знания и деньги, что составляет 50 процентов от этого уравнения. Другая половина — это знания и время COBOL.
Кобол
Грейс Хоппер, Вильям Селден, Гертруда Тирни, Говард Бромберг, Говард Дискаунт, Вернон Ривз, Жан Е. Саммет
OpenCOBOL, Micro Focus International
HP3000 COBOL/II, COBOL/2, IBM OS/VS COBOL, IBM COBOL/II, IBM COBOL SAA, IBM Enterprise COBOL, IBM COBOL/400, IBM ILE COBOL, Unix COBOL X/Open, Micro Focus COBOL, Microsoft COBOL, Ryan McFarland RM/COBOL, Ryan McFarland RM/COBOL-85, DOSVS COBOL, UNIVAC COBOL, Realia COBOL, Fujitsu COBOL, ICL COBOL, ACUCOBOL-GT, DEC VAX COBOL, Wang VS COBOL, Visual COBOL
FLOW-MATIC, COMTRAN, FACT
Кобо́л (COBOL, COmmon Business Oriented Language) — один из старейших языков программирования (первая версия в 1959), предназначенный, в первую очередь, для разработки бизнес-приложений.
В свежий стандарт языка 2002 года в Кобол добавлены средства объектно-ориентированного программирования и другие современные языковые конструкции. [1]
Содержание
История
Руководителем проекта по созданию Кобола была женщина — Грейс Хоппер (бабушка Кобола). Практически с самого своего рождения Кобол является ANSI-стандартизованным языком программирования.
Масштабы использования
В то же время, Кобол имел прекрасные для своего времени средства для работы со структурами данных и файлами, он стал первым языком, в котором появился тип данных «запись». [4] Это обеспечило ему долгую жизнь в бизнес-приложениях, по крайней мере, в США.
Dr. Dobb’s Journal (со ссылкой на The Gartner Group, Computerworld, Ovum и Micro Focus International) [5] приводит следующие факты. К 1997 году активно использовалось около 240 миллиардов строк кода на Коболе. Около 90 % финансовых транзакций в мире обрабатывается кодом на Коболе, и 75 % коммерческой обработки данных написано на Коболе. Общая стоимость используемого в настоящее время коболовского кода оценивается в 2 триллиона долларов США. До сих пор ежегодно пишутся миллиарды новых строк кода на Коболе.
Hello world
Примечания
Литература
Ссылки
Смотреть что такое «Кобол» в других словарях:
КОБОЛ — (COBOL сокр. от англ. Common Business Oriented Language), название языка программирования, применяемого при описании программ для решения учетно экономических и управленческих задач с помощью ЭВМ. Кобол обеспечивает наглядную и достаточно… … Большой Энциклопедический словарь
КОБОЛ — [англ. COBOL, сокр. Словарь иностранных слов русского языка
КОБОЛ — [от английского Co(mmon) общепринятый, B(usiness) деловой, O(riented) ориентированный, L(anguage) язык], язык программирования, ориентированный на решение преимущественно экономических задач. Разработан в 1958 60 (США). Обеспечивает компактную и… … Современная энциклопедия
КОБОЛ — (от английского Common Buisness Oriented Language), язык ПРОГРАММИРОВАНИЯ, разработанный в 1959 г. для обработки деловых данных. Впоследствии этот язык пересматривался и совершенствовался, и в настоящее время широко применяется … Научно-технический энциклопедический словарь
кобол — сущ., кол во синонимов: 1 • язык (247) Словарь синонимов ASIS. В.Н. Тришин. 2013 … Словарь синонимов
КОБОЛ — (COBOL) Сокращение от общепринятого делового языка. Этот язык обычно используется для написания компьютерных программ, предназначенных для обслуживания предпринимателей, например программ учета накладных и составления платежных ведомостей. Это… … Словарь бизнес-терминов
КОБОЛ — Язык программирования для экономических задач. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN Common Business Oriented LanguageCOBOL … Справочник технического переводчика
КОБОЛ — язык программирования управленческих задач англ.: COBOL, Common Business Oriented Language англ. Словарь: С. Фадеев. Словарь сокращений современного русского языка. С. Пб.: Политехника, 1997. 527 с … Словарь сокращений и аббревиатур
Кобол — [от английского Co(mmon) общепринятый, B(usiness) деловой, O(riented) ориентированный, L(anguage) язык], язык программирования, ориентированный на решение преимущественно экономических задач. Разработан в 1958 60 (США). Обеспечивает компактную и… … Иллюстрированный энциклопедический словарь
кобол — (COBOL, сокр. от англ. Common Business Oriented Language), название языка программирования, применяемого при описании программ для решения учётно экономических и управленческих задач с помощью ЭВМ. Кобол обеспечивает наглядную и достаточно… … Энциклопедический словарь
Алгоритмический язык программирования COBOL
Кобол (COBOL, COmmon Business Oriented Language) — один из старейших языков программирования (первая версия в 1959), предназначенный, в первую очередь, для разработки бизнес-приложений.
В свежий стандарт языка 2002 года в Кобол добавлены средства объектно-ориентированного программирования и другие современные языковые конструкции. В этом году язык COBOL и его верные программисты отметили юбилей. 50 лет назад, комитет, состоявший из представителей шести крупнейших, на то время, производителей компьютеров и трёх правительственных агентств, выбрал для нового языка имя — COBOL, от Common Business-Oriented Language.
Язык пережил многих своих создателей, и даже сейчас используется очень широко. К счастью, или к сожалению, в России он почти неизвестен, но в США, судя по статистике от Datamonitor до сих пор пишется до 5 миллионов строчек кода на Коболе ежегодно. Основная сфера применения — банковская сфера, телефонные операторы, правительственные агентства.
История
Руководителем проекта по созданию Кобола была женщина — Грейс Хоппер (бабушка Кобола). Практически с самого своего рождения Кобол является ANSI-стандартизованным языком программирования.
Год 1959: совещание в Пентагоне даёт начало компьютерному языку, который позднее станет известен как “Кобол” (COBOL) и будет основным средством бизнес-вычислений в последующие 40 лет.
“Кобол”, сокращённо от Common Business-Oriented Language (Общий бизнес-ориентированный язык программирования), был одним из первых компьютерных языков. И, наряду с “Фортраном”, он был одним из первых языков программирования, основанных на английской лексике.
“Кобол” обязан своим существованием Грейс Хоппер, одной из первых компьютерных программистов. Грейс делала свои первые программерские шаги в резерве ВМС США, набирая машинный код для компьютера Harvard Mark I в течение Второй Мировой Войны. В конце 1950-х она пришла к мысли, что языки ЭВМ можно было бы сделать похожими на человеческий язык, и тем самым более понятными, чем используемые тогда ассемблер и машинный код.
Масштабы использования
Кобол обычно критикуется за многословность и громоздкость, поскольку одной из целей создателей языка было максимально приблизить конструкции к английскому языку. (До сих пор Кобол считается языком программирования, на котором было написано больше всего строк кода). Так широко известно высказывание Дейкстры “Использование Кобола калечит ум. Его преподавание, следовательно, должно рассматриваться как уголовное преступление”.
В то же время, Кобол имел прекрасные для своего времени средства для работы со структурами данных и файлами, он стал первым языком, в котором появился тип данных “запись”.[4] Это обеспечило ему долгую жизнь в бизнес-приложениях, по крайней мере, в США.
Dr. Dobb’s Journal (со ссылкой на The Gartner Group, Computerworld, Ovum и Micro Focus Intern ational) приводит следующие факты. К 1997 году активно использовалось около 240 миллиардов строк кода на Коболе. Около 90 % финансовых транзакций в мире обрабатывается кодом на Коболе, и 75 % коммерческой обработки данных написано на Коболе. Общая стоимость используемого в настоящее время коболовского кода оценивается в 2 триллиона долларов США. До сих пор ежегодно пишутся миллиарды новых строк кода на Коболе.
DISPLAY «Hello, world.».
END PROGRAM HELLO-WORLD.
Вам стоит выучить COBOL
Начинающие программисты (а вполне возможно, что и их коллеги с опытом), должно быть, часто спрашивают себя, нужно ли им учить JAVA, или знания JavaScript, Python или Ruby будет вполне достаточно в современном мире. Учитывая спрос на программистов в нынешней экономике, многие находят достойную работу еще учась в университетах, и зачем тогда, спрашивается, представителю этой профессии заглядывать в такое далекое прошлое, как COBOL?
Согласно исследованию Gartner от 2001 года (в случае с данным конкретным языком это вполне можно назвать “недавно”), 85% мирового объема бизнес-информации обрабатывалось на языке COBOL, а к текущему моменту объем кода, написанный этим языком программирования, начинает снова увеличиваться. Компания Micro Focus, занимающаяся разработкой и продажей инструментов модернизации COBOL, заявляет, что 70% мирового бизнеса до сих пор активно использует этот язык.
И хотя очевидно, что многие из приложений, изначально написанных на COBOL будут переписаны, в Micro Focus уверены, что большая часть оригинального кода все-равно останется в ходу, а приложения будут использоваться еще долгие годы. Они безопасны, стабильны, а компании использующие их, не готовы от них просто так отказаться. Программный менеджер Micro Focus по имени Арунн Рамадосс (Arunn Ramadoss) говорит: “Ни один другой язык неспособен представлять бизнес-данные так точно, как это делает COBOL”.
И даже в дни запоздалого выхода на пенсию, инженеров, способных работать с этим языком, становится все меньше и меньше. Кто-то перестает работать, другие уходят на позиции связанные с менеджментом, а не разработкой.
По-правде говоря, такие вакансии уже начинают появляться, и чаще всего с пометкой “срочно требуется”.
“Дни, когда вы могли быть „исключительно Java-программистом“ или „только C-программистом“ ушли” — говорит Арунн: “Сегодня необходимо знать несколько языков и технологий, а так же то, как они могут быть интегрированы”.
Интеграция — это, пожалуй, самая важная мелочь для человека, решившегося взяться за COBOL. Природа языка, и природа систем его использующих очень плотно завязана на бизнес-логике и процессах. Поэтому наибольшим испытанием для разработчика и программиста будет не изучение самого языка, но понимание того, как он может быть использован в современной корпоративной среде.
В качестве примера Рамадосс говорит о бизнес-процессе перевода средств с одного банковского счета, на другой — эта процедура нисколько не изменилась с момента ее создания. Но то, как люди взаимодействуют со своими банковскими счетами и транзакциями, претерпела значительные, если не кардинальные, изменения. Сегодня все хотят получить доступ к счету с помощью ПК или мобильного телефона.
В свою очередь, для компаний, использующих приложение написанные на COBOL, самым трудным моментом будет сохранение и передача накопленного опыта и знаний о существующих бизнес-процессах новым разработчикам. Те программисты, которые уже знают этот язык и понимают то, как он интегрируется в современные технологии будут выгодно выделяться на фоне своих коллег, даже несмотря на то, что в принципе это не самая сложная, для изучения, технология (а значит многие могут относится к ней несколько легкомысленно ).
Так с чего же начать человеку, который заинтересовался в изучении этого старейшего языка программирования? Лучшим стартом будет веб-сайт cobol.com, где можно найти множество информации о том, как подступиться к этой технологии. Что касается литературы, то общепризнанным эталоном считается книга “The 21st Century COBOL Programmer” от авторов Нэнси Штэрн (Nancy Stern), Роберта Штэрна (Robert A. Stern) и Джеймса Лея (James P. Ley).
Знакомство с COBOL
Хватит введения, перейдем к самому изучаемому. COBOL – один из старейших языков программирования, расшифровывается его название как COmmon Business-Oriented Language, появившийся в 1959 году, благодаря “бабушке” Грейс Хоппер, и в основном применявшийся в различных финансовых и административных системах. Более подробно можно узнать его историю в ближайшем интернет-поисковике или (ну прям для совсем ленивых) — notes.sochi.org.ru/1333/ (рус. яз.) или en.wikipedia.org/ wiki/COBOL (eng.).
Для того, чтобы приступить к практическому изучению языка нам необходимо две вещи – редактор текстовый (1 шт.) и компилятор (1 шт.)
Если с редакторами все просто, тут подойдет даже Notepad и vi, emacs, nano и т.д. и т.п. Главное требование “классическое” это должен быть текстовые редактор, а не тексовый процессор (не помню что еще писали в достаточно старых книгах на эту тему 😉 ).
С компиляторами несколько сложнее, есть коммерческие, которые стоят безумных денег, есть студенческие версии коммерческих, есть версии старых компиляторов, есть даже несколько компиляторов с открытым кодом. Выбор остается за читателем, я лишь приведу список со своими комментариями.
Также есть богатый выбор древних компиляторов под DOS.
Лично я использую OpenCOBOL, что в какой то мере единственный реальный вариант, на данный момент.
Теперь, когда вы все установили и готовы ринуться в бой – начнем. Естесственно, с Hello World.
Наберем в редакторе следующий код:
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. HELLOWORLD.
000400 ENVIRONMENT DIVISION.
000500 DATA DIVISION.
000600 PROCEDURE DIVISION.
000800 DISPLAY “Hello World!”.
Теперь давайте разберем этот код.
Начнем с внешнего вида. Это “классический” код. Со всеми требованиями, что были и 50 лет назад. Почему его использую я:
1. Код в таком формате подойдет любому компилятору.
2. Это “олдскулл”, “крутатенюшка” и просто мне нравится.
3. Всегда лучше начинаться со стандартных требований, а потом уже смотреть на возможности компилятора и собственный вкус.
Строка COBOL программы состоит из 80 символов.
Символ 1-6: номер строки (необязателен)
Символ 7: “индикатор”
Символ 8 – 11: Зона А. В ней должны начинаться DIVISION’ы, SECTION’ы, имена и заголовки параграфов, а также индикаторы и номера “уровней” (это все рассмотрим позже).
Символ 12-72: Зона Б. Собственно здесь должны начинаться сами по себе выражения “кода”.
Символ 73-80: Зона комментария. Не обрабатывается компилятором и полностью предоставлена програмисту.
С горизонтальной плоскостью разобрались, перейдем к вертикали.
Каждая COBOL программа содержит 4 раздела – DIVISION, идут они в строгом порядке и содержат определенные элементы.
DIVISION ПЕРВЫЙ. Вдохновляющий
IDENTIFICATION DIVISION. — описывает программу и содержит такие параграфы, как
Содержимое этих параграфов представляет собой обычный комментарий и в принципе записать туда можно хоть “2011 год от Рождества Христова”.
DIVISION ВТОРОЙ. Мистический.
ENVIRONMENT DIVISION. — Описывает ту среду, как и следует из названия, в которой пишется программа. Состоит из двух секций.
CONFIG URATION SECTION. Которая включает в себя параграфы SOURCE-COMPUTER. и OBJECT-COMPUTER. и SPECIAL-NAMES. Первые два несут сугубо комментирующую функцию и описывают на каком компьютере, для какого компьютера программа написана.
SPECIAL-NAMES. представляет собой достаточно глубинную штуку, которая будет рассмотрена позже (или можете поискать пока на эту тему сами информацию).
INPUT-OUTPUT SECTION. Описывает, как следует из названия ввод-вывод, очень нужно, очень важно и очень скоро мы с этим уже встретимся. Включает в себя параграфы FILE-CONTROL. и I-O-CONTROL.
DIVISION ТРЕТИЙ. Законодательный.
DATA DIVISION. — Содержит описания всех переменных. Включает в себя 4 секции:
FILE SECTION. — описывает структуру файлов.
WORKING-STORAGE SECTION. — описывает переменные.
LOCAL-STORAGE SECTION. — описывает переменные, которые создаются и инициализируются каждый раз при выполнении (поподробней в следующие разы).
LINKAGE SECTION. — описывает данные, которые мы получаем при вызове других программ.
DIVISION ЧЕТВЕРТЫЙ. Рабочий.
PROCEDURE DIVISION. — Содержит “саму” программу, которая делится на пользовательские секции, параграфы, которые и содержат выражения. В нашем случае
BEGIN. — пользовательский параграф.
DISPLAY “Hello World!”.
STOP RUN. Собственно сами выражения.
И напоследок. Каждое выражение должно заканчиваться “точкой”.
Спасибо за внимание. Жду вопросов в комментариях, которые обязательно будут отвечены и включены либо в следующие, либо в правку этой статьи.
2. Знакомимся с COBOL
Ну что же, продолжим наше знакомство дальше, в первой статье мы узнали, из чего состоит COBOL программа, какие правила существуют по ее написанию и запустили нашу первую программу. Пора двигаться дальше, в этот раз мы начнем работать с переменными и совершать первые осмысленные действия с ними.
Итак, вернемся назад к нашей программе.
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. HELLOWORLD.
000400 ENVIRONMENT DIVISION.
000500 DATA DIVISION.
000600 PROCEDURE DIVISION.
000800 DISPLAY “Hello World!”.
Добавим в DATA DIVISION. новые строчки, а именно секцию WORKING-STORAGE SECTION. и парочку переменных WS-A и WS-B.
Выглядеть это будет так:
000500 DATA DIVISION.
000510 WORKING-STORAGE SECTION.
000520 01 WS-A PIC 999.
000530 01 WS-B PIC 9(3).
000540 01 WS-RESULT PIC9(6).
В PROCEDURE DIVISION. соответственно будут следующие строки:
000800 DISPLAY “Hello I’m your new calculator!”.
000900 DISPLAY “Please Enter first number from 0 to 999”.
001100 DISPLAY “Please Enter second number from 0 to 999”.
001500 DISPLAY “Your results are:”.
001600 ADD WS-A TO WS-B GIVING WS-RESULT.
001700 DISPLAY “Summ is: ”, WS-RESULT.
001800 SUBTRACT WS-A FROM WS-B GIVING WS-RESULT.
001900 DISPLAY “Subtract is: ”, WS-RESULT.
002000 MULTIPLY WS-A BY WS-B GIVING WS-RESULT.
002100 DISPLAY “Multiplication is: ”, WS-RESULT.
002200 DIVIDE WS-A BY WS-B GIVING WS-RESULT.
002300 DISPLAY “Divide is: ”, WS-RESULT.
Запускаем удачно собранный исполняемый файл и видим, например:
Hello I’m your new calculator!
Please Enter first number from 0 to 999
Please Enter second number from 0 to 999
Subtract is: 000200
Multiplication is: 030000
300 и 100 ввел я, остальное вывела программа. Результаты говорят сами за себя, а теперь рассмотрим новые строчки кода, которые мы ввели повнимательней.
Начнем с новинок в DATA DIVISION.
000510 WOR KING-STORAGE SECTION. — сообщает компилятору о начале секции, описывающей обычные переменные.
000520 01 WS-A PIC 999.
000530 01 WS-B PIC 9(3).
000540 01 WS-RESULT PIC 9(6).
С точки зрения смысловой нагрузки эти три строчки идентичны, они определяют три переменных с уровнем 01, следом идет имя переменной (WS-A, WS-B и WS-RESULT), далее идет оператор PIC (который также можно записывать в его более старой форме как PICTURE IS), который устанавливает формат и размер переменной. И вот тут начинается главный сюрприз для тех, кто знаком с другими языками. Размер и формат указывается не количеством выделяемых бит, а количеством максимальных символов.
В нашем случае мы описали две переменных, которые будут содержать 3-х ЗНАЧНОЕ число и одну переменную, которая будет содержать 6-ти ЗНАЧНОЕ число.
Поподробней об описании формата. 9 – говорит компилятору, что переменная будет числовая, количество символов указывает на количество разрядов, естесственно, что для больших чисел неудобно писать и считать что-нибудь а ля 999999999999999 и была сделана форма записи 9(15), то есть в скобках указывается количество раз, которые повторяется символ перед скобками.
Перейдем к PROCEDURE DIVISION
DISPLAY — как можно понять из программы и ее вывода занимается одной из самых полезных функций в мире. Выводит указанную переменную или текст на экран. Пользовательский текст должен быть заключен в двойные кавычки “”. Можно выводить несколько переменных или текстов, как видно в случае с
001700 DISPLAY “Summ is: ”, WS-RESULT.
главное не забыть запятую между ними.
Также в программе отметились 4 математических функции:
Сложение ADD WS-A TO WS-B GIVING WS-RESULT.
Вычитание SUBTRACT WS-A FROM WS-B GIVING WS-RESULT.
Умножение MULTIPLY WS-A BY WS-B GIVING WS-RESULT.
Деление DIVIDE WS-B BY WS-A GIVING WS-RESULT.
Построены они по одному принципу.
значение1 TO/FROM/BY значение2 GIVING переменная.
В качестве значений могут выступать как переменные, так и числа напрямую, например,
ADD 10 TO 20 GIVING WS-RESULT.
Прибавят 10 к 20 и запишут результат (30) в WS-RESULT.
В случае, если GIVING и последующее имя переменной опускается, то результат запишется в переменную идущую ПОСЛЕ TO, FROM, BY – в нашем случае это будет WS-B (но WS-A в случае с DIVIDE).
Маленькое, но важное примечание, есть и немного другие формы записи, например:
ADD 1 2 3 TO WS-B – соответственно вначале сложит 1+2+3, а потом приплюсует это к значению WS-B и запишет результат в WS-B.
Можно опустить и TO – ADD 1 WS-A 2 WS-B сложит все эти значения и запишет результат в WS-B. Несколько переменных можно указать и после TO (к каждой из переменных после TO будут прибавлены значения до TO и результат записан в соответствующую переменную) и после GIVING, тогда в каждую из них будет записан результат. Аналогично можно оперировать и с SUBTRAC T.
НО в случае с MULTIPLY и DIVIDE указание нескольких переменных возможно только после GIVING (и то это нужно уточнять для каждого компилятора отдельно).
Помимо этого у DIVIDE есть и вторая форма записи.
DIVIDE WS-A INTO WS-B GIVING WS-C со сменой BY на INTO меняется и порядок переменных, какую именно форму использовать остается выбор за пользователем. Укажу лишь, что:
DIVIDE WS-A INTO WS-B это WS-B / WS-A = WS-B
DIVIDE WS-B BY WS-A GIVING WS-RESULT
это WS-B / WS-A = WS-RESULT
ЭТО ВАЖНО! Вариант с BY НЕ БУДЕТ работать без GIVING. Программа просто не скомпилируется из-за ошибки.
Ну и напоследок маленький “подарок” — наверняка читатель уже задался вопросом “а как же присвоить значение переменной?”. С помощью MOVE
или MOVE WS-A TO WS-B
или даже MOVE 10 TO WS-A WS-B
ЭТО ВАЖНО! MOVE принимает несколько переменных только на “выходе”, т.е. после TO.
3. Знакомимся с COBOL
В предышущей лекции мы не указали несколько важных ключевых слов для DIVIDE.
Используя REMAINDER мы указываем переменную в которую запишется ОСТАТОК от деления.
Для любых математических операций:
Также, добавляя ROUNDED после операции мы достигаем того, что результат будет округляться, а не просто “отбрасываться” лишний хвост.
ADD WS-A TO WS-B GIVING WS-RESULT ROUNDED.
А теперь продолжим познавать новое. Исполняя обещание развеять удивление о странном выводе значений переменных мы разберем в этот раз PICTURE IS (он же PIC) и форматы переменных.
И снова мы возвращаемся в DATA DIVISION.
Рассмотрим еще разок строчку с описанием переменной:
01 – уровень переменной;
WS-B – имя переменной;
PIC – ключевое слово, указывающее, что далее идет описание формата переменной, старой формой является PICTURE IS.
9(3) – тип символов в переменной “9” и их количество “3”.
Пользователю для обычных переменных доступны уровни с 01 по 49 включительно и 77. Уровень переменной описывает ее иерархию в группе переменных, чем выше номер, тем ниже переменная в “лестнице”. Например
05 CUSTOMER-NAME PIC X(10).
05 CUSTOMER-ADDRESS PIC X(30).
Уровень 77 объявляет переменную, как ЭЛЕМЕНТАРНУЮ, то есть у нее не может быть под-переменных.
Уровень 88 объявляет переменную, как conditional, причем в достаточно изощренной и богатой функционально форме, о них подробнее в следующий раз.
Есть и некоторые другие уровни, которые введены либо производителями компиляторов, либо сейчас нам не нужны.
Имя переменной может состоять из цифр, букв и “-”, но не должно с “-” начинаться.
Имя переменной должно содержать не больше 30 символов.
ОПИСАНИЕ ФОРМАТА ПЕРЕМЕННОЙ.
Рассмотрим какие описательные символы существуют для переменных в COBOL.
Они делятся на две группы: “обычные” и “редактирующие”.
V – знак, отделяющий целую часть от десятичной (может применяться только ОДИН раз в каждой переменной).
S – знак “±”, должен быть самым первым символом в формате переменной (может применяться только ОДИН раз в каждой переменной).
X – один буквенно-цифровой знак, т.е. цифра, буква, пробел, спец. символы.
A – один буквенный знак или пробел.
Редактирующие символы – благодаря им описываются переменные, которые не будут участвовать в расчетах, но позволяют тонко настроить вид, в котором переменная будет выведена на экран/печать:
Z – заменяет 9’ки с той разницей, что все начальные нули убираются.
$ — “валютный знак”, указанный для компилятора, по умолчанию, в основном знак доллара, используется ТОЛЬКО как ПЕРВЫЙ символ в описании. Может использоваться только один раз. Его значение устанавливается в ENVIRONMENT DIVISION. с помощью
* — аналог Z, но начальные нули заменяются на *.
— (минус) – может указываться как первым, так и самым последним символом, но только один раз. Если число отрицательное, то будет выведен минус, иначе пустое место.
+ (плюс) – аналог “-” (минуса), НО в случае с положительным числом будет выведен “+”, а в случае с отрицательным выводится “-”.
. (точка) – знак “десятичной точки”. На ее месте будет выведена именно “точка”.
, (запятая) – знак “запятой”. Может быть несколько в переменной.
/ (слэш) – знак “слэш”. Может быть несколько. Выводит “слэш”, популярен в датах.
0 (ноль) — “ноль”. Просто на этом месте будет выведен 0.
B (от blank, пустой) — “пробел”.
Но главное, как вы можете понять все эти символы комбинируются и позволяют получать очень гибкие формы и виды. Правило здесь фактически только одно – числовые переменные не должны превышать 18 символов, буквенно-цифровые – 160 символов. Но тут опять же многое зависит от компилятора и его параметров.
ВКУСНЫЕ ДОПОЛНЕНИЯ или ЕСТЬ ЖИЗНЬ ПОСЛЕ PIC’а!
Помимо этого, при описании переменной после ее формата могут быть добавлены дополнительные “опции”:
BLANK WHEN ZERO – если переменная равно 0, то вместо нее будет выведено пустое место, а не нули.
VALUE “значение” — сразу присваивает переменной определенное значение.
Существуют и другие, но упоминать о них сейчас было бы бесполезно.
Итак, теперь давайте просто пощупаем все их в разных видах.
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. VARIABLES-TEST.
000400 ENVIRONMENT DIVISION.
000500 DATA DIVISION.
000600 WORKING-STORAGE SECTION.
000700 01 HUMAN-CONTAINER.
000800 05 HUMAN-NAME PIC A(30).
000900 05 HUMAN-ADDRESS PIC X(160).
001000 77 SQUARE-METERS PIC 9(18).
001100 77 SQUARE-PRICE PIC 9(15)V9(2).
001150 77 FLAT-PRICE PIC 9(15)V9(2).
001200 77 TAX-PERCENT PIC 9(2).
001300 77 TAX-SUMM PIC 9(15)V9(2).
001350 77 NEGATIVE-VALUE PIC S9(10)V9(6).
001500 77 SQUARE-METERS-OUT PIC Z(17)9.
001600 77 SQUARE-PRICE-OUT PIC Z(14)9.Z(2).
001650 77 FLAT-PRICE-OUT-1 PIC Z(3),Z(3),Z(3),Z(3).9(2).
001660 77 FLAT-PRICE-OUT-2 PIC Z(3)BZ(3)BZ(3)BZ(3).9(2).
001700 77 TAX-PERCENT-OUT PIC Z(2).
001800 77 TAX-SUMM-OUT PIC Z(14)9.9(2).
001900 77 NEGATIVE-VALUE-OUT-1 PIC +Z(10).9(6).
002200 PROCEDURE DIVISION.
002400 DISPLAY «Please enter Name: «.
002500 ACCEPT HUMAN-NAME.
002550 DISPLAY «Please enter Address: «.
002600 ACCEPT HUMAN-ADDRESS.
002700 DISPLAY «Please enter square meters of flat: «.
002800 ACCEPT SQUARE-METERS.
002900 DISPLAY «Please enter square meter’s price: «.
003000 ACCEPT SQUARE-PRICE.
003100 DISPLAY «Please enter percent of tax: «.
003200 ACCEPT TAX-PERCENT.
003300 DISPLAY «Enter any really big NEGATIVE value: «.
003400 ACCEPT NEGATIVE-VALUE.
003700 DISPLAY HUMAN-NAME.
003800 DISPLAY HUMAN-ADDRESS.
003900 DISPLAY «SQUARE-METERS: «, SQUARE-METERS.
004000 MOVE SQUARE-METERS TO SQUARE-METERS-OUT.
004100 DISPLAY «SQUARE-METERS-OUT: «, SQUARE-METERS-OUT.
004200 DISPLAY «SQUARE-PRICE: «, SQUARE-PRICE.
004300 MOVE SQUARE-PRICE TO SQUARE-PRICE-OUT.
004400 DISPLAY «SQUARE-PRICE-OUT: «, SQUARE-PRICE-OUT.
004500 MULTIPLY SQUARE-METERS BY SQUARE-PRICE GIVING FLAT-PRICE.
004600 DISPLAY «FLAT-PRICE: «, FLAT-PRICE.
004700 MOVE FLAT-PRICE TO FLAT-PRICE-OUT-1 FLAT-PRICE-OUT-2.
004800 DISPLAY «FLAT-PRICE-OUT-1: «, FLAT-PRICE-OUT-1.
004850 DISPLAY «FLAT-PRICE-OUT-2: «, FLAT-PRICE-OUT-2.
004900 DISPLAY «TAX-PERCENT: «, TAX-PERCENT.
005000 MOVE TAX-PERCENT TO TAX-PERCENT-OUT.
005100 DISPLAY «TAX-PERCENT-OUT: «, TAX-PERCENT-OUT.
005200 DISPLAY «TAX-SUMM: «, TAX-SUMM.
005300 MOVE TAX-SUMM TO TAX-SUMM-OUT.
005400 DISPLAY «TAX-SUMM-OUT: «, TAX-SUMM-OUT.
005500 DISPLAY «NEGATIVE-VALUE: «, NEGATIVE-VALUE.
005600 MOVE NEGATIVE-VALUE TO NEGATIVE-VALUE-OUT-1 NEGATIVE-VALUE-OUT-2.
005700 DISPLAY «NEGATIVE-VALUE-OUT-1: «, NEGATIVE-VALUE-OUT-1.
005800 DISPLAY «NEGATIVE-VALUE-OUT-2: «, NEGATIVE-VALUE-OUT-2.
И что же мы получаем в итоге.
Please enter Address:
Please enter square meters of flat:
Please enter square meter’s price:
Please enter percent of tax:
Enter any really big NEGATIVE value:
FLAT-PRICE-OUT-2: 54 301 412.00
Как видите вывод переменных “форматированных” и сырых отличается и настраивается.
Естесственно это не просто ваше право, а обязанность поиграться с переменными, посмотреть как они будут себя вести.
А между прочим, если вы внимательно смотрели вывод своей программы, то могли заметить очень неприятную “мелочь” — значения, которые не влезли в переменную, если у вас этого не произошло, то попробуйте поэкспериментировать.
4. COBOL – IF и его друзья
В этот раз мы познакомимся с вкусностями условий (а также получим дополнительный маленький подарок для знаний в конце).
Итак, я думаю все, кто хоть немного интересовался программированием помнят, что есть наверное во всех практически ЯП – такой оператор как IF (Если), есть он конечно же и в COBOL.
ВНИМАНИЕ. Это Важно:
Каждое выражение в COBOL заканчивается знаком “.” (точка), это вы уже знаете, НО IF рассматривается как одно выражение, поэтому точка здесь ставится ТОЛЬКО после END-IF.
Возможные варианты условий:
1. Проверка на тип данных в переменной:
числовая (IS NUMERIC) — проверяется, что в переменной содержится число.
Буквенная (IS ALPHABETIC) – проверяется, что в переменной содержатся ТОЛЬКО буквы и пробелы.
Буквенная (заглавные буквы) и буквенная (прописные буквы) (IS ALPHABETIC-UPPER и ALPHABETIC-LOWER) – проверяется соответственно, что содержатся только заглавные или только прописные буквы и пробелы.
Применялось и применяется для проверки на правильность введенных данных и соответствующей обработки выявленных ошибок.
2. Сравнение:
Оператор (полная форма записи), Сокращенная форма записи, Смысл
IS GREATER THAN IS > Больше, чем
IS NOT GREATER THAN IS NOT > Не больше, чем
IS LESS THAN IS = Больше или равно, чем
IS LESS THAN OR EQUAL TO IS
IF TEXT-INPUT IS > “Orange”
Если вы введете Apple то оно будет “меньше”, чем Orange, а вот apple, будет “больше”.
3. Проверка на знак числа:
IS POSITIVE – число положительное;
IS NEGATIVE – число отрицательное;
IS ZERO – число равно нулю;
IS NOT POSITIVE – число НЕ положительное (0 или отрицательное);
IS NOT NEGATIVE – число НЕ отрицательное (0 или положительное);
IS NOT ZERO – число НЕ равно нулю.
MOVE 100 TO WS-RESULT.
DISPLAY “WS-RESULT IS ”, WS-RESULT.
IF WS-RESULT IS NOT ZERO
DISPLAY “WS-RESULT IS NOT ZERO!”
IF WS-RESULT IS ZERO
DISPLAY “WS-RESULT IS ZERO!”
IF WS-RESULT IS NOT POSITIVE
DISPLAY “WS-RESULT IS NOT POSITIVE!”
IF WS-RESULT IS NOT NEGATIVE
DISPLAY “WS-RESULT IS NOT NEGATIVE!”
IF WS-RESULT IS POSITIVE
DISPLAY “WS-RESULT IS POSITIVE!”
IF WS-RESULT IS NEGATIVE
DISPLAY “WS-RESULT IS NOT ZERO!”
Вывод в этом случае будет выглядеть как:
WS-RESULT IS 000100
WS-RESULT IS NOT ZERO!
WS-RESULT IS NOT NEGATIVE!
WS-RESULT IS POSITIVE!
4. Использование переменной с условиями:
В одном из предыдущих уроков мы упоминали уровень переменной 88. Теперь пришло время разобраться с ней поближе. Переменная такого типа не имеет описания, она инициализируется сразу при объявлении и может быть только подуровнем другой переменной. Используется она как некий аналог CASE из других языков программирования и хранит в себе значение с которым будет сверяться IF. Например:
Описываем и инициализируем в DATA DIVISION.
01 NUMBER-CHECK PIC S9.
Используем в PROCEDURE DIVISION.
DISPLAY “NUMBER-CHECK IS ONE”
DISPLAY “NUMBER-CHECK IS MINUS”
DISPLAY “NUMBER-CHECK IS ZERO”
NC-ONE, NC-MINUS и NC-ZERO – переменные закрепленные за NUMBER-CHECK, когда мы используем IF NC-ONE, то фактически компилятор “подставляет”
Помимо перечисленного IF поддерживает NOT, AND и OR, например, IF NOT WS-A = WS-B или IF ((WS-A = WS-B) AND (WS-A = WS-RESULT)) OR (WS-RESULT = WS-B).