2 заметки с тегом

cobol

«Здравствуй, мир» на Коболе

Я как-то проверял сколько занимает минимальная программа на «Гоу», оказалось — 232КБ. Посмотрел как дела с этим у Кобола. «ОупенКобол» скомпилировал мой helloword в девятикилобайтный запускаемый файл, что неплохо — сишный вариант у меня занял всего на килобайт меньше.

Вот так выглядит моя первая программа на Коболе:

000100*Моя первая программа на Коболе
000200 IDENTIFICATION DIVISION.
000300 PROGRAM-ID. hw.
000400 AUTHOR. Evgeny Stepanischev
000500 PROCEDURE DIVISION.
000600      DISPLAY "Привет, мир!".
000700      STOP RUN.

Первые шесть символов каждой строки — её номер, как легко догадаться. В современном Коболе их можно опустить (OpenCobol поддерживает этот синтаксис с ключом «-free»). Дальше идёт специальный символ, один из четырёх, насколько я знаю. Пробел — значит дальше начало новой строки кода, «звёздочка» — комментарий, минус — продолжение предыдущей строки кода (строки не должны быть длинее 80 символов) и «D» — некий «debug», для чего он, я пока не знаю.

В старом Коболе очень жёсткий порядок всего и вся. Мало того, что секции программы должны быть описано в строгом порядке, так ещё и столбец тоже имеет значение! То есть Кобол строго следит за отступами. Например, мой код с DISPLAY и STOP RUN начинается с 12-го символа. Так надо. А c 73 символа до 80-й можно писать что угодно — проигнорируется.

Язык очень многословный и имеет целую тучу зарезервированных слов, некоторые из которых весьма доставляют:

bolk@Bolk ~/Projects/Cobol  $ cobc --list-reserved | wc -l
     530

bolk@Bolk ~/Projects/Cobol  $ cobc --list-reserved | egrep '[[:digit:]]' | egrep -v 'UTF|UCS|FLOAT'
COMP-1				(Y)
COMP-2				(Y)
COMP-3				(Y)
COMP-4				(Y)
COMP-5				(Y)
COMPUTATIONAL-1			(Y)
COMPUTATIONAL-2			(Y)
COMPUTATIONAL-3			(Y)
COMPUTATIONAL-4			(Y)
COMPUTATIONAL-5			(Y)
STANDARD-1			(Y)
STANDARD-2			(Y)
SUB-QUEUE-1			(N)
SUB-QUEUE-2			(N)
SUB-QUEUE-3			(N)

Как я буду учить это всё великолепие, пока не знаю, не уверен, что интерес к языку у меня настолько глубок. Впрочем, может оказаться, что бо́льшая часть из указанных 530 зарезервированных слов нужны в жизни очень редко. А ещё, бегло пробежавшись по документации, я нашёл большое количество синонимов. За примерами далеко ходить не надо, «COMP-N» и «COMPUTATIONAL-N» из вышеприведённого листинга — синонимы.

Как поставить Кобол на Мак

Пусть здесь полежит, чтобы я потом не искал.

Как поставить Кобол на Мак (при помощи «брю»):

curl http://www.sim-basis.de/open-cobol-1.1.tar.gz
tar xvfz open-cobol-1.1.tar.gz
cd open-cobol-1.1
brew install gmp
brew install berkeley-db

./configure --prefix=/usr/local/Cellar/open-cobol/1.1
make && make install
brew link open-cobol