Первая программа: Hello World по-COBOL-овски
Пишем и разбираем построчно свою первую полноценную программу на COBOL — старую добрую «Hello, world!».
DISPLAY — команда PROCEDURE DIVISION, которая выводит текст или значение переменной на экран.
Традиция первой программы на любом языке программирования одна и та же ещё с 1970-х: вывести на экран приветствие «Hello, world!». COBOL не исключение, хотя выглядит эта программа заметно масштабнее, чем на многих современных языках. Давайте напишем её и разберём по косточкам.
Полный код программы
Вот классическая программа, которая печатает приветствие:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
DISPLAY "Privet, mir!".
STOP RUN.Вывод:
Privet, mir!Всего восемь строк — и это уже полноценная, компилируемая и рабочая программа. Она короче большинства реальных COBOL-программ (в банковских системах отдельные программы разрастаются до тысяч строк), но структура у неё та же самая, что и у гигантов.
Разбор построчно
Пройдёмся по каждой строке и объясним, зачем она нужна:
IDENTIFICATION DIVISION.— открывает программу, обязательная первая строка.PROGRAM-ID. HELLO-WORLD.— даёт программе имяHELLO-WORLD. Именно под этим именем компилятор будет знать программу.ENVIRONMENT DIVISION.— присутствует, но пустой: этой программе не нужны ни файлы, ни специфичные настройки оборудования. Пустой блок здесь оставлен скорее для наглядности структуры — в реальном минимальном варианте его можно было бы убрать вовсе, как мы видели в прошлом уроке.DATA DIVISION.— тоже пустой: программе не нужны переменные, потому что мы выводим готовую строку текста, а не значение какой-то переменной.PROCEDURE DIVISION.— здесь начинается настоящая работа программы.DISPLAY "Privet, mir!".— команда вывода. Всё, что стоит в кавычках, печатается на экран ровно как есть. В конце — точка, как и положено в конце предложения COBOL.STOP RUN.— команда завершения программы. Без неё программа не поймёт, что работа закончена, и это обязательная последняя команда почти в каждой простой программе COBOL.
Важный нюанс: текст в кавычках мы написали латиницей (Privet, mir!), а не кириллицей. Это не прихоть — COBOL исторически создавался под окружения, где корректная поддержка кириллицы в текстовых литералах не гарантирована на всех компиляторах и терминалах. Поэтому в учебных и промышленных COBOL-программах, ориентированных на международную поддержку, часто используют транслит или английский текст.
А что если нужно вывести несколько строк?
Команду DISPLAY можно использовать сколько угодно раз подряд. Вот пример программы, которая печатает три строки — как будто это заголовок простого отчёта:
IDENTIFICATION DIVISION.
PROGRAM-ID. OTCHET-HEADER.
PROCEDURE DIVISION.
DISPLAY "=====================".
DISPLAY "OTCHET O PRODAZHAH".
DISPLAY "=====================".
STOP RUN.Вывод:
=====================
OTCHET O PRODAZHAH
=====================Заметь, что в этом примере мы вообще пропустили и ENVIRONMENT DIVISION, и DATA DIVISION — как мы выяснили в предыдущем уроке, они не обязательны, если программе они не нужны. Компилятор без проблем принимает программу, где после IDENTIFICATION DIVISION сразу идёт PROCEDURE DIVISION.
Частые ошибки при первом знакомстве с DISPLAY
- Забывают точку в конце DISPLAY — строка
DISPLAY "Privet, mir!"без завершающей точки может «слиться» со следующей командой для компилятора и вызвать ошибку. - Забывают STOP RUN — без явного завершения поведение программы становится непредсказуемым, в зависимости от компилятора и окружения. Хорошая привычка — всегда явно завершать программу.
- Не закрывают кавычки — если открыть кавычку перед текстом и забыть закрыть, компилятор ждёт продолжения строки и выдаёт ошибку в неожиданном месте, иногда далеко от настоящей опечатки.
- Путают одинарные и двойные кавычки — в разных диалектах COBOL допустимы оба варианта, но лучше выбрать один стиль (обычно двойные кавычки) и придерживаться его во всей программе для единообразия.
Итоги
- Минимальная рабочая программа с выводом текста состоит из IDENTIFICATION DIVISION с PROGRAM-ID и PROCEDURE DIVISION с командами DISPLAY и STOP RUN.
- Команда
DISPLAY "текст".печатает текст на экран, аSTOP RUN.корректно завершает программу. - ENVIRONMENT DIVISION и DATA DIVISION можно не писать вовсе, если программе не нужны файлы или переменные.
- DISPLAY можно вызывать многократно подряд, чтобы вывести несколько строк.