Кобол (Часть 4.) – Если И Его Друзья…

Рассмотрев структуру программы на предыдущих «уроках» ( http://habrahabr.ru/blogs/atnikvariat/115813/ ), простые арифметические функции ( http://habrahabr.ru/blogs/atnikvariat/115821/ ) и описание переменных ( http://habrahabr.ru/blogs/atnikvariat/115849/ ) мы пойдём всё дальше и дальше! На этот раз мы познакомимся с прелестями условий (а также получим в конце дополнительный подарок за знания).

Итак, я думаю, все, кто хоть немного интересовался программированием, помнят, что, наверное, почти во всех языках есть такой оператор, как IF (Если), и, конечно же, он есть и в COBOL. Как это записывается? ЕСЛИ (необязательно, ЕЩЕ) КОНЕЦ-ЕСЛИ.

ВНИМАНИЕ.

Это важно: Каждое выражение в КОБОЛе заканчивается знаком «.

» (точка), вы это уже знаете, НО IF считается одним выражением, поэтому точка здесь ставится ТОЛЬКО после END-IF. Будь осторожен! Возможные условия: 1. Проверка типа данных в переменной: числовой (IS NUMERIC) — проверяет, содержит ли переменная число.

Алфавитный (IS ALPHABETIC) – проверяет, что переменная содержит ТОЛЬКО буквы и пробелы.

Алфавитный (заглавные буквы) и Алфавитный (строчные буквы) (IS ALPHABETIC-UPPER и ALPHABETIC-LOWER) — проверяет соответственно, что он содержит только заглавные буквы или только заглавные буквы и пробелы.

Он использовался и используется для проверки правильности введенных данных и соответствующей обработки обнаруженных ошибок.

Например, ЕСЛИ WS-A ЦИФРОВОЙ ПЕРЕМЕЩЕНИЕ WS-A В WS-B ЕЩЕ ДИСПЛЕЙ «Ошибка!» КОНЕЦ-ЕСЛИ.

2. Сравнение: Оператор (полная форма), Краткая форма, Значение БОЛЬШЕ, ЧЕМ ЕСТЬ > Больше, чем НЕ БОЛЬШЕ, ЧЕМ НЕТ > Не более МЕНЬШЕ, ЧЕМ ЕСТЬ < Less than НЕ МЕНЬШЕ, ЧЕМ НЕТ < Not less than РАВНО ЕСТЬ = Равно IS NOT EQUAL TO IS NOT = Не равно БОЛЬШЕ ИЛИ РАВНО ЕСТЬ > = Больше или равно МЕНЬШЕ ИЛИ РАВНО ЕСТЬ <= Less than or equal to И если со сравнением цифр все понятно, то со сравнением буквенных переменных следует уточнить.

COBOL подгоняет сравниваемые значения к одному и тому же размеру, добавляя пробелы в правый конец.

Затем посимвольное сравнение начинается с крайнего левого символа в соответствии с ASCII, EBCDIC (на мейнфреймах) или другой кодировкой, заданной компилятором.

ЕСЛИ ВВОД ТЕКСТА > «Оранжевый» ДИСПЛЕЙ «Оранжевый» ДИСПЛЕЙ ВВОД ТЕКСТА ЕЩЕ ДИСПЛЕЙ ВВОД ТЕКСТА ДИСПЛЕЙ «Оранжевый» КОНЕЦ-ЕСЛИ.

Если вы введете Apple, оно будет «меньше», чем Orange, но яблоко будет «крупнее».

3. Проверка знака числа: IS POSITIVE – положительное число; IS NEGATIVE – отрицательное число; IS ZERO – число равно нулю; НЕ ПОЗИТИВНО – число НЕ положительное (0 или отрицательное); НЕ ОТРИЦАТЕЛЬНО – число НЕ отрицательное (0 или положительное); НЕ НУЛЬ – число НЕ равно нулю.

Например: ПЕРЕМЕСТИТЬ 100 В WS-РЕЗУЛЬТАТ.

ОТОБРАЖЕНИЕ «WS-РЕЗУЛЬТАТ ЕСТЬ», WS-РЕЗУЛЬТАТ.

ЕСЛИ WS-РЕЗУЛЬТАТ НЕ НУЛЬ ОТОБРАЖЕНИЕ «WS-РЕЗУЛЬТАТ НЕ НУЛЬ!» КОНЕЦ-ЕСЛИ.

ЕСЛИ WS-РЕЗУЛЬТАТ НУЛЬ ОТОБРАЖЕНИЕ «WS-РЕЗУЛЬТАТ НОЛЬ!» КОНЕЦ-ЕСЛИ.

ЕСЛИ WS-РЕЗУЛЬТАТ НЕ ПОЛОЖИТЕЛЬНЫЙ ДИСПЛЕЙ «WS-РЕЗУЛЬТАТ НЕ ПОЛОЖИТЕЛЬНЫЙ!» КОНЕЦ-ЕСЛИ.

ЕСЛИ WS-РЕЗУЛЬТАТ НЕ ОТРИЦАТЕЛЬНЫЙ ДИСПЛЕЙ «WS-РЕЗУЛЬТАТ НЕ ОТРИЦАТЕЛЬНЫЙ!» КОНЕЦ-ЕСЛИ.

ЕСЛИ WS-РЕЗУЛЬТАТ ПОЛОЖИТЕЛЬНЫЙ ДИСПЛЕЙ «WS-РЕЗУЛЬТАТ ПОЛОЖИТЕЛЬНЫЙ!» КОНЕЦ-ЕСЛИ.

ЕСЛИ WS-РЕЗУЛЬТАТ ОТРИЦАТЕЛЬНЫЙ ОТОБРАЖЕНИЕ «WS-РЕЗУЛЬТАТ НЕ НУЛЬ!» КОНЕЦ-ЕСЛИ.

Вывод в этом случае будет выглядеть так: WS-РЕЗУЛЬТАТ 000100 WS-РЕЗУЛЬТАТ НЕ НУЛЬ! WS-РЕЗУЛЬТАТ НЕ ОТРИЦАТЕЛЬНЫЙ! WS-РЕЗУЛЬТАТ ПОЛОЖИТЕЛЬНЫЙ! 4. Использование переменной с условиями: В одном из предыдущих уроков мы упоминали переменную level 88. Теперь пришло время рассмотреть ее поближе.

Переменная этого типа не имеет описания; он инициализируется сразу после объявления и может быть только подуровнем другой переменной.

Он используется как своего рода аналог CASE из других языков программирования и хранит значение, с которым будет проверяться IF. Например: Описываем и инициализируем в DATA DIVISION. 01 НОМЕР-ПРОВЕРЬТЕ РИСУНОК S9. 88 NC-ОДИН ЗНАЧЕНИЕ 1. 88 НЗ-НУЛЕВОЕ ЗНАЧЕНИЕ 0. 88 НЗ-МИНУС ЗНАЧЕНИЕ -1. Мы используем его в ПРОЦЕДУРНОМ ОТДЕЛЕНИИ.

ПРИНЯТЬ НОМЕР-ПРОВЕРИТЬ.

ЕСЛИ NC-ONE ДИСПЛЕЙ «НОМЕР-ПРОВЕРКА ОДИН» КОНЕЦ-ЕСЛИ.

ЕСЛИ NC-МИНУС ДИСПЛЕЙ «НОМЕР-ПРОВЕРКА МИНУС» КОНЕЦ-ЕСЛИ.

ЕСЛИ NC-НОЛЬ ДИСПЛЕЙ «НОМЕР-ПРОВЕРКА НУЛЯ» КОНЕЦ-ЕСЛИ.

Как это работает: NC-ONE, NC-MINUS и NC-ZERO — это переменные, присвоенные NUMBER-CHECK, когда мы используем IF NC-ONE, компилятор фактически «подставляет» ЕСЛИ НОМЕР-ПРОВЕРКА = 1. Помимо ЦЕННОСТИ, ЦЕННОСТИ ЧЕРЕЗ можно использовать, и в этом случае при 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-РЕЗУЛЬТАТ = WS-B).

Жду вопросов и предложений в комментариях.

До следующей встречи! Впереди будет еще много интересного) Воронцов «нерфур» Вячеслав.

2011. Теги: #COBOL #cobol #программирование #oldschool #COBOL

Вместе с данным постом часто просматривают: