Лекция
Привет, мой друг, тебе интересно узнать все про алгоритмический язык программирования cobol, тогда с вдохновением прочти до конца. Для того чтобы лучше понимать что такое алгоритмический язык программирования 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-х она пришла к мысли, что языки ЭВМ можно было бы сделать похожими на человеческий язык, и тем самым более понятными, чем используемые тогда ассемблер и машинный код.
Кобол обычно критикуется за многословность и громоздкость, поскольку одной из целей создателей языка было максимально приблизить конструкции к английскому языку. (До сих пор Кобол считается языком программирования, на котором было написано больше всего строк кода). Так широко известно высказывание Дейкстры “Использование Кобола калечит ум. Его преподавание, следовательно, должно рассматриваться как уголовное преступление”.
В то же время, Кобол имел прекрасные для своего времени средства для работы со структурами данных и файлами, он стал первым языком, в котором появился тип данных “запись”. Это обеспечило ему долгую жизнь в бизнес-приложениях, по крайней мере, в США.
Dr. Dobb’s Journal (со ссылкой на The Gartner Group, Computerworld, Ovum и Micro Focus International) приводит следующие факты. К 1997 году активно использовалось около 240 миллиардов строк кода на Коболе. Около 90 % финансовых транзакций в мире обрабатывается кодом на Коболе, и 75 % коммерческой обработки данных написано на Коболе. Общая стоимость используемого в настоящее время коболовского кода оценивается в 2 триллиона долларов США. До сих пор ежегодно пишутся миллиарды новых строк кода на Коболе.
Начинающие программисты (а вполне возможно, что и их коллеги с опытом), должно быть, часто спрашивают себя, нужно ли им учить JAVA, или знания JavaScript, Python или Ruby будет вполне достаточно в современном мире. Учитывая спрос на программистов в нынешней экономике, многие находят достойную работу еще учась в университетах, и зачем тогда, спрашивается, представителю этой профессии заглядывать в такое далекое прошлое, как COBOL?
Согласно исследованию Gartner от 2001 года (в случае с данным конкретным языком это вполне можно назвать “недавно”), 85% мирового объема бизнес-информации обрабатывалось на языке COBOL, а к текущему моменту объем кода, написанный этим языком программирования, начинает снова увеличиваться. Компания Micro Focus, занимающаяся разработкой и продажей инструментов модернизации COBOL, заявляет, что 70% мирового бизнеса до сих пор активно использует этот язык.
И хотя очевидно, что многие из приложений, изначально написанных на COBOL будут переписаны, в Micro Focus уверены, что большая часть оригинального кода все-равно останется в ходу, а приложения будут использоваться еще долгие годы. Они безопасны, стабильны, а компании использующие их, не готовы от них просто так отказаться. Программный менеджер Micro Focus по имени Арунн Рамадосс (Arunn Ramadoss) говорит: “Ни один другой язык неспособен представлять бизнес-данные так точно, как это делает COBOL”.
И даже в дни запоздалого выхода на пенсию, инженеров, способных работать с этим языком, становится все меньше и меньше. Кто-то перестает работать, другие уходят на позиции связанные с менеджментом, а не разработкой.
Рамадосс считает, что крупнейшие мировые компании и агенства, в скором времени будут очень заинтересованы в молодых программистах, которые понимают COBOL, равно как и новые технологии, вроде .NET или HTML5, считая, что изучение этого языка программирования сослужит добрую службу всем студентам факультетов программирования, и их выпускникам, так как очень скоро на рынке появится достаточное количество интересных вакансий, связанных с COBOL. Не говоря о том, что этот язык программирования легок в изучении.
По-правде говоря, такие вакансии уже начинают появляться, и чаще всего с пометкой “срочно требуется”.
“Дни, когда вы могли быть „исключительно Java-программистом“ или „только C-программистом“ ушли” — говорит Арунн: “Сегодня необходимо знать несколько языков и технологий, а так же то, как они могут быть интегрированы”.
Интеграция — это, пожалуй, самая важная мелочь для человека, решившегося взяться за COBOL. Природа языка, и природа систем его использующих очень плотно завязана на бизнес-логике и процессах. Поэтому наибольшим испытанием для разработчика и программиста будет не изучение самого языка, но понимание того, как он может быть использован в современной корпоративной среде.
В качестве примера Рамадосс говорит о бизнес-процессе перевода средств с одного банковского счета, на другой — эта процедура нисколько не изменилась с момента ее создания. Но то, как люди взаимодействуют со своими банковскими счетами и транзакциями, претерпела значительные, если не кардинальные, изменения. Сегодня все хотят получить доступ к счету с помощью ПК или мобильного телефона.
В свою очередь, для компаний, использующих приложение написанные на COBOL, самым трудным моментом будет сохранение и передача накопленного опыта и знаний о существующих бизнес-процессах новым разработчикам. Те программисты, которые уже знают этот язык и понимают то, как он интегрируется в современные технологии будут выгодно выделяться на фоне своих коллег, даже несмотря на то, что в принципе это не самая сложная, для изучения, технология (а значит многие могут относится к ней несколько легкомысленно).
Так с чего же начать человеку, который заинтересовался в изучении этого старейшего языка программирования? Лучшим стартом будет веб-сайт cobol.com, где можно найти множество информации о том, как подступиться к этой технологии. Что касается литературы, то общепризнанным эталоном считается книга “The 21st Century COBOL Programmer” от авторов Нэнси Штэрн (Nancy Stern), Роберта Штэрна (Robert A. Stern) и Джеймса Лея (James P. Ley).
Этой статьей я планирую начать целый цикл, который может быть со временем соберется в книгу. Информация про COBOL на русском представлена фактически статьей в Википедии и двумя советскими ГОСТами. Вы можете спросить меня зачем я начинаю “раскапывать труп” и прочие аналогичные вопросы. Ответ прост – а просто так.Потому что я люблю COBOL, потому что он вовсе не мертвый, потому что он интересный, потому что это часть важной истории и он продолжит оставаться частью будущего. Потому что COBOL – это событие. И пусть его ругает Дейкстра и другие, это ничуть не умаляет его объемов и его влияния на ИТ в бизнес.
Хватит введения, перейдем к самому изучаемому. COBOL – один из старейших языков программирования, расшифровывается его название как COmmon Business-Oriented Language, появившийся в 1959 году, благодаря “бабушке” Грейс Хоппер, и в основном применявшийся в различных финансовых и административных системах. Более подробно можно узнать его историю в ближайшем интернет-поисковике или (ну прям для совсем ленивых) — notes.sochi.org.ru/1333/ (рус. яз.) или en.wikipedia.org/wiki/COBOL (eng.).
Для того, чтобы приступить к практическому изучению языка нам необходимо две вещи – редактор текстовый (1 шт.) и компилятор (1 шт.)
Если с редакторами все просто, тут подойдет даже Notepad и vi, emacs, nano и т.д. Об этом говорит сайт https://intellect.icu . и т.п. Главное требование “классическое” это должен быть текстовые редактор, а не тексовый процессор (не помню что еще писали в достаточно старых книгах на эту тему ;-) ).
С компиляторами несколько сложнее, есть коммерческие, которые стоят безумных денег, есть студенческие версии коммерческих, есть версии старых компиляторов, есть даже несколько компиляторов с открытым кодом. Выбор остается за читателем, я лишь приведу список со своими комментариями.
www.opencobol.org/ - OpenCOBOL (open-source, моя личная рекомендация, мультиплатформенный)
http://tiny-cobol.sourceforge.net/ - TinyCobol (open-source, по сообщению автора 1 января 2011 года – прекратил развитие, да и до этого был не особо активен)
http://sourceforge.net/projects/cobolforgcc/ - Cobol for GCC (open-source, преальфа, последние обновления 2009г.)
http://homepages.paradise.net.nz/jsoeberg/ - COBOL 12 (freeware, 16-битный компилятор под DOS / Windows)
http://cev.cemotel.cz/cobol/cb_en/mx_all.htm - Cevela MX COBOL (freeware, Windows)
www.microfocus.com/promotions/wwemvctd0510/default.aspx?page=form - Micro Focus Visual COBOL R2 (trial, windows)
www.thekompany.com/products/kobol/ - KOBOL (trial, linux, windows)
Также есть богатый выбор древних компиляторов под DOS.
Лично я использую OpenCOBOL, что в какой то мере единственный реальный вариант, на данный момент.
Теперь, когда вы все установили и готовы ринуться в бой – начнем. Естесственно, с Hello World.
Наберем в редакторе следующий код:
Благополучно сохраняем это в файл с расширением .cob (или .cbl) – это самые популярные, исторические и логические расширения.
Далее в терминале или командной строке набираем cobc -x <файл> и получаем исполняемый файл. Запускаем его и оооооп!
Hello World!
Теперь давайте разберем этот код.
Начнем с внешнего вида. Это “классический” код. Со всеми требованиями, что были и 50 лет назад. Почему его использую я:
1. Код в таком формате подойдет любому компилятору.
2. Это “олдскулл”, “крутатенюшка” и просто мне нравится.
3. Всегда лучше начинаться со стандартных требований, а потом уже смотреть на возможности компилятора и собственный вкус.
Строка COBOL программы состоит из 80 символов.
Символ 1-6: номер строки (необязателен)
Символ 7: “индикатор”
* — строка комментарий,
— — строка “продолжение”,
D- строка debug.
Символ 8 – 11: Зона А. В ней должны начинаться DIVISION'ы, SECTION'ы, имена и заголовки параграфов, а также индикаторы и номера “уровней” (это все рассмотрим позже).
Символ 12-72: Зона Б. Собственно здесь должны начинаться сами по себе выражения “кода”.
Символ 73-80: Зона комментария. Не обрабатывается компилятором и полностью предоставлена программисту.
С горизонтальной плоскостью разобрались, перейдем к вертикали.
Каждая COBOL программа содержит 4 раздела – DIVISION, идут они в строгом порядке и содержат определенные элементы.
DIVISION ПЕРВЫЙ. Вдохновляющий
IDENTIFICATION DIVISION. — описывает программу и содержит такие параграфы, как
PROGRAM-ID. Helloworld.
AUTHOR. Beginner.
INSTALLATION. MyLocalCobolComputer.
DATE-WRITTEN. 19/03/2011.
DATE-COMPILED. 19/03/2011.
SECURITY. Iwillnottellanybodythiscode.
Содержимое этих параграфов представляет собой обычный комментарий и в принципе записать туда можно хоть “2011 год от Рождества Христова”.
DIVISION ВТОРОЙ. Мистический.
ENVIRONMENT DIVISION. — Описывает ту среду, как и следует из названия, в которой пишется программа. Состоит из двух секций.
CONFIGURATION 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. Собственно сами выражения.
И напоследок. Каждое выражение должно заканчиваться “точкой”.
Спасибо за внимание. Жду вопросов в комментариях, которые обязательно будут отвечены и включены либо в следующие, либо в правку этой статьи.
В. Воронцов, 2011.
Ну что же, продолжим наше знакомство дальше, в первой статье мы узнали, из чего состоит COBOL программа, какие правила существуют по ее написанию и запустили нашу первую программу. Пора двигаться дальше, в этот раз мы начнем работать с переменными и совершать первые осмысленные действия с ними.
Итак, вернемся назад к нашей программе.
Добавим в DATA DIVISION. новые строчки, а именно секцию WORKING-STORAGE SECTION. и парочку переменных WS-A и WS-B.
Выглядеть это будет так:
В PROCEDURE DIVISION. соответственно будут следующие строки:
Уже традиционно сохраняем это в файл с расширением .cob и запускаем компилятор. (Мы ведь не забыли добавить недостающие части программы правда? ;-) )
Запускаем удачно собранный исполняемый файл и видим, например:
Hello I'm your new calculator!
Please Enter first number from 0 to 999
300
Please Enter second number from 0 to 999
100
------------------------------------
Your results are:
Summ is: 000400
Subtract is: 000200
Multiplication is: 030000
Divide is: 000003
300 и 100 ввел я, остальное вывела программа. Результаты говорят сами за себя, а теперь рассмотрим новые строчки кода, которые мы ввели повнимательней.
Начнем с новинок в DATA DIVISION.
000510 WORKING-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), то есть в скобках указывается количество раз, которые повторяется символ перед скобками.
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, тогда в каждую из них будет записан результат. Аналогично можно оперировать и с SUBTRACT.
НО в случае с 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 10 TO WS-A
или MOVE WS-A TO WS-B
или даже MOVE 10 TO WS-A WS-B
ЭТО ВАЖНО! MOVE принимает несколько переменных только на “выходе”, т.е. после TO.
В. Воронцов, 2011.
В предышущей лекции мы не указали несколько важных ключевых слов для DIVIDE.
DIVIDE WS-B BY WS-A GIVING WS-RESULT REMAINDER <переменная>.
Используя 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. Уровень переменной описывает ее иерархию в группе переменных, чем выше номер, тем ниже переменная в “лестнице”. Например
01 CUSTOMER-RECORD.
05 CUSTOMER-NAME PIC X(10).
05 CUSTOMER-ADDRESS PIC X(30).
Уровень 77 объявляет переменную, как ЭЛЕМЕНТАРНУЮ, то есть у нее не может быть под-переменных.
Уровень 88 объявляет переменную, как conditional, причем в достаточно изощренной и богатой функционально форме, о них подробнее в следующий раз.
Есть и некоторые другие уровни, которые введены либо производителями компиляторов, либо сейчас нам не нужны.
ИМЯ ПЕРЕМЕННОЙ.
Имя переменной может состоять из цифр, букв и “-”, но не должно с “-” начинаться.
Имя переменной должно содержать не больше 30 символов.
ОПИСАНИЕ ФОРМАТА ПЕРЕМЕННОЙ.
Рассмотрим какие описательные символы существуют для переменных в COBOL.
Они делятся на две группы: “обычные” и “редактирующие”.
В обычные входят
9 – одна цифра;
V – знак, отделяющий целую часть от десятичной (может применяться только ОДИН раз в каждой переменной).
S – знак “±”, должен быть самым первым символом в формате переменной (может применяться только ОДИН раз в каждой переменной).
X – один буквенно-цифровой знак, т.е. цифра, буква, пробел, спец. символы.
A – один буквенный знак или пробел.
Редактирующие символы – благодаря им описываются переменные, которые не будут участвовать в расчетах, но позволяют тонко настроить вид, в котором переменная будет выведена на экран/печать:
Z – заменяет 9'ки с той разницей, что все начальные нули убираются.
$ — “валютный знак”, указанный для компилятора, по умолчанию, в основном знак доллара, используется ТОЛЬКО как ПЕРВЫЙ символ в описании. Может использоваться только один раз. Его значение устанавливается в ENVIRONMENT DIVISION. с помощью
* — аналог Z, но начальные нули заменяются на *.
— (минус) – может указываться как первым, так и самым последним символом, но только один раз. Если число отрицательное, то будет выведен минус, иначе пустое место.
+ (плюс) – аналог “-” (минуса), НО в случае с положительным числом будет выведен “+”, а в случае с отрицательным выводится “-”.
. (точка) – знак “десятичной точки”. На ее месте будет выведена именно “точка”.
, (запятая) – знак “запятой”. Может быть несколько в переменной.
/ (слэш) – знак “слэш”. Может быть несколько. Выводит “слэш”, популярен в датах.
0 (ноль) — “ноль”. Просто на этом месте будет выведен 0.
B (от blank, пустой) — “пробел”.
Но главное, как вы можете понять все эти символы комбинируются и позволяют получать очень гибкие формы и виды. Правило здесь фактически только одно – числовые переменные не должны превышать 18 символов, буквенно-цифровые – 160 символов. Но тут опять же многое зависит от компилятора и его параметров.
ВКУСНЫЕ ДОПОЛНЕНИЯ или ЕСТЬ ЖИЗНЬ ПОСЛЕ PIC'а!
Помимо этого, при описании переменной после ее формата могут быть добавлены дополнительные “опции”:
BLANK WHEN ZERO – если переменная равно 0, то вместо нее будет выведено пустое место, а не нули.
VALUE “значение” — сразу присваивает переменной определенное значение.
Существуют и другие, но упоминать о них сейчас было бы бесполезно.
Итак, теперь давайте просто пощупаем все их в разных видах.
И что же мы получаем в итоге.
Please enter Name:
Slava
Please enter Address:
Moscow 15
Please enter square meters of flat:
44
Please enter square meter's price:
1234123
Please enter percent of tax:
20
Enter any really big NEGATIVE value:
-123123213213
---------------------------------------
Как видите вывод переменных “форматированных” и сырых отличается и настраивается.
Естесственно это не просто ваше право, а обязанность поиграться с переменными, посмотреть как они будут себя вести.
А между прочим, если вы внимательно смотрели вывод своей программы, то могли заметить очень неприятную “мелочь” — значения, которые не влезли в переменную, если у вас этого не произошло, то попробуйте поэкспериментировать.
В. Воронцов, 2011.
В этот раз мы познакомимся с вкусностями условий (а также получим дополнительный маленький подарок для знаний в конце).
Итак, я думаю все, кто хоть немного интересовался программированием помнят, что есть наверное во всех практически ЯП – такой оператор как IF (Если), есть он конечно же и в COBOL.
Как записывается?
IF <условие>
<действие1>
(по желанию ELSE )
END-IF.
ВНИМАНИЕ. Это Важно:
Каждое выражение в COBOL заканчивается знаком “.” (точка), это вы уже знаете, НО IF рассматривается как одно выражение, поэтому точка здесь ставится ТОЛЬКО после END-IF.
Будьте внимательны!
Возможные варианты условий:
числовая (IS NUMERIC) — проверяется, что в переменной содержится число.
Буквенная (IS ALPHABETIC) – проверяется, что в переменной содержатся ТОЛЬКО буквы и пробелы.
Буквенная (заглавные буквы) и буквенная (прописные буквы) (IS ALPHABETIC-UPPER и ALPHABETIC-LOWER) – проверяется соответственно, что содержатся только заглавные или только прописные буквы и пробелы.
Применялось и применяется для проверки на правильность введенных данных и соответствующей обработки выявленных ошибок.
Например,
Оператор (полная форма записи), Сокращенная форма записи, Смысл
И если со сравнением чисел все понятно, то сравнение буквенных переменных следует уточнить. COBOL подгоняет сравниваемые значения под один размер с помощью пробелов, добавляемых к правому концу. После чего начинается посимвольное сравнение с крайнего левого символа в соответствии с ASCII, EBCDIC (на мэйнфреймах) или другой указанной компилятору кодировкой.
Если вы введете Apple то оно будет “меньше”, чем Orange, а вот apple, будет “больше”.
В одном из предыдущих уроков мы упоминали уровень переменной 88. Теперь пришло время разобраться с ней поближе. Переменная такого типа не имеет описания, она инициализируется сразу при объявлении и может быть только подуровнем другой переменной. Используется она как некий аналог CASE из других языков программирования и хранит в себе значение с которым будет сверяться IF. Например:
Описываем и инициализируем в DATA DIVISION.
Как это работает:
NC-ONE, NC-MINUS и NC-ZERO – переменные закрепленные за NUMBER-CHECK, когда мы используем IF NC-ONE, то фактически компилятор “подставляет”
IF NUMBER-CHECK = 1.
Помимо VALUE может использоваться VALUES <значение-от> THRU <значение-до>, в таком случае при 88 NC-ONE VALUES 1 THRU 10, будет проверяться попадание значения хранящегося в NUMBER-CHECK в диапазон от 1 до 10.
Помимо перечисленного 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).
Я хотел бы услышать твое мнение про алгоритмический язык программирования cobol Надеюсь, что теперь ты понял что такое алгоритмический язык программирования cobol и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Языки и методы программирования. Теория трансляции
Ответы на вопросы для самопроверки пишите в комментариях, мы проверим, или же задавайте свой вопрос по данной теме.
Комментарии
Оставить комментарий
Языки и методы программирования. Теория трансляции
Термины: Языки и методы программирования. Теория трансляции