]]> ]]>
Править | Обсудить | История

COBOL

Русское название:
Кобол
Дата создания:
1959
Повлиял на:
Парадигма:
Типизация:
Реализации и версии (свернуть все | развернуть все):
Язык программирования

COBOL (от COmmon Business-Oriented Language) — один из старейших языков программирования, разработанный прежде всего для написания программ для экономической сферы.

Спецификация языка была создана в 1959 году. Создатели языка ставили своей целью сделать его машиннонезависимым и максимально приближенным к естественному английскому языку. Обе цели были успешно достигнуты; программы на COBOL считаются понятными даже неспециалистам, поскольку тексты на этом языке программирования не нуждаются в каких-либо специальных комментариях (самодокументирующиеся программы).

COBOL — язык очень старый и в свое время использовался крайне активно, поэтому существует множество реализаций и диалектов. Для языка был утвержден ряд стандартов: в 1968, 1974, 1985 и 2002 годах. Последний стандарт добавил в язык поддержку объектно-ориентированной парадигмы.

Язык позволяет эффективно работать с большим количеством данных, он насыщен разнообразными возможностями поиска, сортировки и распределения. К числу других плюсов COBOL обычно относят его структурированность. Довольно мощные компиляторы с этого языка разработаны для персональных компьютеров. Некоторые из них столь эффективны, что программу, отлаженную на персональном компьютере, нетрудно перенести на большие ЭВМ.

Перечисляя минусы, нельзя не вспомнить о том, что на Коболе можно запрограммировать лишь простейшие алгебраические вычисления. Для сложных инженерных расчетов этот язык не годится. Еще одна причина, которая в какой-то мере сдерживает развитие языка, — это наличие в США специально созданного отраслевого комитета, вырабатывающего стандарты, за соблюдением которых следит правительственная комиссия. Как это всегда бывает в подобных случаях, фирмы, занимающиеся разработкой программного обеспечения, не торопятся подгонять свои заготовки к жестким требованиям комиссии, отсутствует конкуренция версий, а в итоге проигрывает распространение языка.

Элементы синтаксиса:

Комментарий до конца строки * в седьмом столбце
Присваивание значения переменной MOVE value TO varname
Объявление переменной 77 varname PIC type

Примеры:

Hello, World!:

Пример для версий OpenCOBOL 1.0, TinyCOBOL 0.65.9
        IDENTIFICATION DIVISION.
        PROGRAM-ID. HELLO-WORLD.
 
        PROCEDURE DIVISION.
                DISPLAY 'Hello, World!'
                STOP RUN.

Факториал:

Пример для версий OpenCOBOL 1.0, TinyCOBOL 0.65.9

Используется итеративное определение факториала. Тип переменной, в которой хранится значение факториала — 9(15), т.е. число из 15 знаков. Команда MULTIPLY, вопреки интуитивному предположению, умножает первый аргумент на второй и помещает результат во второй аргумент. Команда DISPLAY добавляет перевод строки после аргумента, поэтому элементы вывода приходится приводить к строчному типу (методом сохранения их в строковые переменные соответствующего размера) и конкатенировать. Для умножения добавлена обработка возможного переполнения, хотя это необязательно.

Вывод программы зависит от компилятора: числа всегда выводятся фиксированной ширины (дополненные нулями спереди), в TinyCOBOL — ширины 18, в OpenCOBOL — 15.

	IDENTIFICATION DIVISION.
	PROGRAM-ID. SAMPLE.

	ENVIRONMENT DIVISION.

	DATA DIVISION.
	WORKING-STORAGE SECTION.

        77 fact pic 9(15) comp.
        77 n pic 99.
        77 i pic 99.
        77 ist pic XX.
        77 factst pic X(18).

	PROCEDURE DIVISION.
		move 16 to n
		move 0 to i
		move 1 to fact
		perform until i greater than n
			move i to ist
			move fact to factst
			display ist "! = " factst
			add 1 to i
			multiply i by fact
				on size error display "value too big"
			end-multiply
		end-perform.
		STOP RUN.

Числа Фибоначчи:

Пример для версий OpenCOBOL 1.0, TinyCOBOL 0.65.9

Используется итеративное вычисление чисел Фибоначчи. Сложение чисел Фибоначчи выполняется командой ADD, которая суммирует два аргумента и сохраняет результат в третий. Из-за того, что команда DISPLAY делает перевод строки после каждого вызова, найденные числа приходится сохранять в строку-результат, которая выводится уже после цикла. Для конкатенации нового числа с предыдущими используется команда STRING; для каждой переменной из тех, которые объединяются в строку, указывается опция DELIMITED BY: SIZE — используется вся переменная, SPACE — часть переменной до первого пробела. Из-за этого числа выводятся без пробелов после запятых:

001,001,002,003,005,008,013,021,034,055,089,144,233,377,610,987,...
	IDENTIFICATION DIVISION.
	PROGRAM-ID. SAMPLE.

	ENVIRONMENT DIVISION.

	DATA DIVISION.
	WORKING-STORAGE SECTION.

        77 fib1 pic 999.
        77 fib2 pic 999.
        77 fib3 pic 999.
        77 i pic 99.
        77 fibst pic XXX.
        77 res pic X(64).

	PROCEDURE DIVISION.
		move 0 to i
		move 0 to fib1
		move 1 to fib2
                move "" to res
		perform until i greater than 15
			add fib1 to fib2 giving fib3
			move fib2 to fib1
			move fib3 to fib2
			move fib1 to fibst
			string res   DELIMITED BY SPACE
                               fibst DELIMITED BY SIZE
                               ","   DELIMITED BY SIZE into res
			add 1 to i
		end-perform.
                display res "..."
		STOP RUN.

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам