Четыре 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 значима.
Проверьте себя
1. В каком порядке всегда идут DIVISION в программе COBOL?
AIDENTIFICATION, ENVIRONMENT, DATA, PROCEDURE
BPROCEDURE, DATA, ENVIRONMENT, IDENTIFICATION
CDATA, IDENTIFICATION, PROCEDURE, ENVIRONMENT
DПорядок не важен, компилятор сам разберётся
2. Какие два DIVISION обязательны в любой программе COBOL?
AENVIRONMENT и DATA
BIDENTIFICATION и PROCEDURE
CDATA и PROCEDURE
DВсе четыре DIVISION обязательны без исключений