Четыре DIVISION программы COBOL
Разбираемся, из каких крупных блоков состоит любая программа на COBOL и зачем их именно четыре.
DIVISION (дивизион, «отдел») — крупный обязательный или необязательный блок программы COBOL, у которого есть своё чётко определённое назначение.
Представь, что ты собираешь мебель по инструкции из большой коробки. Там всегда есть отдельные листы: «список деталей», «инструменты, которые понадобятся», «схема сборки» и «что делать, если что-то не так». Никто не мешает деталям и болтам в одну кучу — так проще ориентироваться. COBOL устроен похоже: любая программа на нём делится на четыре именованных блока, и у каждого своя роль. Это и называется DIVISION.
Зачем нужна такая жёсткая структура
COBOL придумали в 1959 году для бизнес-задач: расчёт зарплат, банковские операции, учёт товаров на складе. Такие программы часто писали и поддерживали большие команды, иногда десятилетиями. Если бы у каждого программиста был свой стиль организации кода, читать чужую программу было бы мучением. Поэтому создатели языка решили: пусть структура будет одинаковой везде. Открываешь любую программу COBOL — и сразу знаешь, где искать имя программы, где настройки под конкретный компьютер, где описаны данные, а где — сама логика работы.
Это как единый ГОСТ на чертежи: инженер с одного завода может прочитать чертёж с другого завода, потому что все подписи и разделы стоят на привычных местах.
Четыре DIVISION и их роли
Вот все четыре блока в том порядке, в каком они всегда идут в программе:
| DIVISION | Что в ней описывают | Обязательна? |
| IDENTIFICATION DIVISION | Имя программы, автор, дата написания — «паспорт» программы | Да |
| ENVIRONMENT DIVISION | Настройки окружения: с каким компьютером и файлами работает программа | Нет (можно опустить, если не нужна) |
| DATA DIVISION | Описание всех переменных и структур данных, с которыми работает программа | Нет, но нужна почти всегда |
| PROCEDURE DIVISION | Сама логика: что программа делает шаг за шагом | Да |
Обрати внимание на порядок — он всегда именно такой и не может меняться. Сначала «кто я» (IDENTIFICATION), потом «где я работаю» (ENVIRONMENT), потом «с чем я работаю» (DATA) и только в конце «что я делаю» (PROCEDURE). Это логично: прежде чем действовать, нужно представиться и подготовить материалы.
Как это выглядит в коде
Вот скелет программы со всеми четырьмя DIVISION — пока без содержимого внутри, только заголовки:
IDENTIFICATION DIVISION.
PROGRAM-ID. PRIMER.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
STOP RUN.Здесь важна каждая деталь. Слово DIVISION всегда идёт после названия блока, а сам заголовок обязательно заканчивается точкой — в COBOL точка означает конец предложения, почти как в обычном тексте. Забыл точку — компилятор решит, что предложение продолжается, и выдаст ошибку в неожиданном месте.
Ты наверняка заметил странные отступы — программа начинается не с первого символа строки. Это не случайность и не красота ради красоты: у COBOL исторически есть жёсткие правила по колонкам (какая часть строки для номера строки, какая для кода, какая для комментариев). Мы разберём это подробно в отдельном уроке, а пока просто прими: отступ в 7 символов перед текстом кода — общепринятая традиция, которой стоит следовать с самого начала.
Мини-пример: зачем каждая часть нужна на практике
Представь программу, которая начисляет бонусы клиентам магазина. Как DIVISION будут использованы:
- IDENTIFICATION DIVISION — здесь напишут, что программа называется
BONUS-CALC, а автор — отдел ИТ магазина. - ENVIRONMENT DIVISION — здесь укажут, откуда программа читает файл с покупками клиентов и куда записывает результат.
- DATA DIVISION — здесь опишут переменные: сумму покупки, номер карты клиента, размер бонуса.
- PROCEDURE DIVISION — здесь напишут саму логику: «если сумма покупки больше 1000 рублей, начислить 5% бонусами».
Видишь, как естественно распределяются задачи? Ни одна часть не пытается делать работу другой.
Частые ошибки новичков
Начинающие чаще всего спотыкаются на нескольких вещах:
- Забывают точку после заголовка DIVISION или после
PROGRAM-ID. Имя— компилятор COBOL очень чувствителен к пунктуации. - Путают порядок блоков — например, пытаются описать данные до PROCEDURE, но после ENVIRONMENT, хотя должно быть строго DATA, а не наоборот.
- Думают, что все DIVISION обязательны — на самом деле ENVIRONMENT и DATA можно опустить, если программе они не нужны (например, простейшая программа без файлов и переменных). А вот IDENTIFICATION и PROCEDURE нужны всегда.
- Пишут код с первой колонки строки — из-за исторических правил колонок это может привести к ошибкам компиляции в некоторых компиляторах.
Итоги
- Любая программа COBOL состоит из четырёх DIVISION в строго фиксированном порядке: IDENTIFICATION → ENVIRONMENT → DATA → PROCEDURE.
- IDENTIFICATION DIVISION и PROGRAM-ID обязательны всегда — это «паспорт» программы.
- ENVIRONMENT DIVISION описывает окружение и файлы, DATA DIVISION — переменные, PROCEDURE DIVISION — саму логику.
- Каждый заголовок DIVISION заканчивается точкой — пунктуация в COBOL значима.