2012-01-22 3 views
11

Почему COBOL должен быть отступом, например, иметь дополнительный интервал в каждом исходном файле?Почему COBOL должен быть отступом?

Рассмотрим этот код (обратите внимание на дополнительные пробелы):

IDENTIFICATION DIVISION. 
    PROGRAM-ID. HELLO-WORLD. 
    PROCEDURE DIVISION. 
     DISPLAY 'Hello, world'. 
     STOP RUN. 

Подобное форматирование можно увидеть в Fortran код:

program hello 
     print *, "Hello World!" 
    end program hello 

Но почему COBOL и Fortran нужен этот пробел? В чем причина?

+0

Код, скорее всего, Fortran 90 или новее, а не 77. –

ответ

19

Cobol больше не должен быть отступом. AFAIK, всесамый современный формат поддержки компиляторов бесплатный источник Cobol.

Первоначальная причина имела дело с перфокартами. Cobol сохранил первые 6 позиций для номера строки. Колонка 7 была продолжением/комментария/отладки/формы-фида. В области «A» или в столбцах 8-11 указаны некоторые специальные языковые артефакты, такие как уровни 01, названия разделов или абзацев и т. Д. Площадь «B» или столбцы 12 - 72 были для открытого кода. Столбцы 73 - 80 были для порядковых номеров ОС.

Два упомянутых вами языка, Cobol и Fortran, были написаны до того, как существовало автоматическое создание парсера. И у них не было реального уровня техники, чтобы опираться на хорошие и плохие идеи о том, как создать синтаксический исходный текст. Таким образом, некоторые вещи, такие как Area «A» для специальных заголовков разделов, упростили задачу ручного анализа парсеров. Современные языки, как правило, используют контекстные свободные грамматики для простого генерации парсера. Но это сообщение Cobol.

+3

Компилятор IBM Enterprise COBOL (мэйнфрейм) по-прежнему требует столбцов. – zarchasmpgmr

+0

Действительно, вы правы. SRCFORMAT (EXTEND) доступен только для IBM Cobol для AIX. –

+0

Я не вижу непосредственной связи между использованием перфокарт и правилами отступов. Вторая часть вашего ответа, похоже, дает более правдоподобную причину. – eriktous