Как стать автором
Обновить

Знакомимся с COBOL — ч.1

Время на прочтение4 мин
Количество просмотров60K
Этой статьей я планирую начать целый цикл, который может быть со временем соберется в книгу. Информация про 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 и т.д. и т.п. Главное требование “классическое” это должен быть текстовые редактор, а не тексовый процессор (не помню что еще писали в достаточно старых книгах на эту тему ;-) ).

С компиляторами несколько сложнее, есть коммерческие, которые стоят безумных денег, есть студенческие версии коммерческих, есть версии старых компиляторов, есть даже несколько компиляторов с открытым кодом. Выбор остается за читателем, я лишь приведу список со своими комментариями.

www.opencobol.org OpenCOBOL (open-source, моя личная рекомендация, мультиплатформенный)
tiny-cobol.sourceforge.net TinyCobol (open-source, по сообщению автора 1 января 2011 года – прекратил развитие, да и до этого был не особо активен)
sourceforge.net/projects/cobolforgcc Cobol for GCC (open-source, преальфа, последние обновления 2009г.)
homepages.paradise.net.nz/jsoeberg COBOL 12 (freeware, 16-битный компилятор под DOS / Windows)
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.

Наберем в редакторе следующий код:

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. HELLOWORLD.
000300* --- Это пустая строчка. ---
000400 ENVIRONMENT DIVISION.
000500 DATA DIVISION.
000600 PROCEDURE DIVISION.
000700 BEGIN.
000800          DISPLAY “Hello World!”.
000900          STOP RUN.


Благополучно сохраняем это в файл с расширением .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. Собственно сами выражения.

И напоследок. Каждое выражение должно заканчиваться “точкой”.

Спасибо за внимание. Жду вопросов в комментариях, которые обязательно будут отвечены и включены либо в следующие, либо в правку этой статьи.



Воронцов “nerfur” Вячеслав. 2011.
Теги:
Хабы:
Всего голосов 47: ↑40 и ↓7+33
Комментарии39

Публикации

Истории

Ближайшие события

2 – 18 декабря
Yandex DataLens Festival 2024
МоскваОнлайн
11 – 13 декабря
Международная конференция по AI/ML «AI Journey»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань