Имеется четыре типа операторов: повелительные, условные, операторы, управляющие компиляцией, и операторы с ограничи­телем области действия.

Имеется три типа предложений: повелительные, условные и предложения, управляющие компиляцией.

  1. Условные операторы, предложения и фразы

    1. Определение условного оператора

Условный оператор указывает, что должно быть определено значение истинности условия и что последующие действия объект­ной программы зависят от этого значения истинности.

Условным оператором является один из следующих:

  1. оператор EVALUATE (ОЦЕНИТЬ), IF (ЕСЛИ), SEARCH (ИСКАТЬ) или RETURN (ВЕРНУТЬ);

  2. оператор READ (ЧИТАТЬ) с фразой AT END (В КОНЦЕ), NOT AT END (НЕ В КОНЦЕ), INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) или NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА);

  3. оператор WRITE (ПИСАТЬ) с фразой INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА), END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ) или NOT END-OF-PAGE (НЕ В КОНЦЕ СТРАНИЦЫ);

  4. операторы DELETE (УДАЛИТЬ), REWRITE (ОБНО­ВИТЬ) и START (ПОДВЕСТИ) с фразой INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) или NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА);

арифметические операторы ADD (СЛОЖИТЬ), COMPUTE (ВЫЧИСЛИТЬ), DIVIDE (РАЗДЕЛИТЬ), MULTIPLY (УМНО­ЖИТЬ), SUBTRACT (ОТНЯТЬ) с фразой ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) или NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛ­НЕНИЯ)

  1. ;оператор RECEIVE (ПОЛУЧИТЬ) с фразой NO DATA (НЕТ ДАННЫХ) или WITH DATA (ЕСТЬ ДАННЫЕ);

  2. оператор STRING (СОБРАТЬ) или UNSTRING (РАЗОБ­РАТЬ) с фразой ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) или NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ);

  3. оператор CALL (ВЫЗВАТЬ) с фразой ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ), ON EXCEPTION (ПРИ ОШИБКЕ) или NOT ON EXCEPTION (БЕЗ ОШИБКИ).

  1. On р е д е л е н и е условной фразы

Условная фраза указывает действие, которое должно быть вы­полнено при определении значения истинности условия в резуль­тате выполнения условного оператора.

Условной фразой является одна из следующих:

  1. фраза AT END (В КОНЦЕ) или NOT AT END (НЕВ КОНЦЕ) в операторе READ (ЧИТАТЬ);

  2. фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) или NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) в операторах DELETE (УДАЛИТЬ), READ (ЧИТАТЬ), REWRITE (ОБНОВИТЬ), START (ПОДВЕСТИ) или WRITE (ПИСАТЬ);

  3. фраза END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ) или NOT END-OF-PAGE (НЕ В КОНЦЕ СТРАНИЦЫ) в операторе WRITE (ПИСАТЬ);

  4. фраза SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) или NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) в операторах ADD (СЛОЖИТЬ), COMPUTE (ВЫЧИСЛИТЬ), DIVIDE (РАЗДЕ­ЛИТЬ), MULTIPLY (УМНОЖИТЬ) или SUBTRACT (ОТНЯТЬ);

  5. фраза NO DATA (НЕТ ДАННЫХ) или WITH DATA (ЕСТЬ ДАННЫЕ) в операторе RECEIVE (ПОЛУЧИТЬ);

  6. фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) или NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ) в операторе STRING (СОБРАТЬ) или UNSTRING (РАЗОБРАТЬ);

  7. фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ), ON EXCEPTION (ПРИ ОШИБКЕ) или NOT ON EXCEPTION (БЕЗ ОШИБКИ) в операторе CALL (ВЫЗВАТЬ).

  1. О п р е д е л е н и е условного предложения

Условное предложение является условным оператором, возмож­но, с предшествующим повелительным оператором, заканчиваю­щимся разделителем точкой.

  1. Операторы и предложения, управляющие компиляцией

    1. О п р е д е л е ни е оператора, управляюще­го компиляцией

Оператор, управляющий компиляцией, состоит из глагола, уп­равляющего компиляцией, и операндов. Глаголами, управляющими 6* 1.63компиляцией, являются COPY (КОПИРОВАТЬ), REPLACE (ЗА­МЕНИТЬ) и USE (ИСПОЛЬЗОВАТЬ) (ч. 12, пп. 2, 3; ч. 7, п. 4.6; ч. 8, п. 4.8; ч. 9, п. 4.8; ч. 13, п. 4.8; ч. 15, п. 3.2). Оператор, уп­равляющий компиляцией, приводит к выполнению определенного действия во время компиляции.

  1. Определение предложения, управляю­щего компиляцией

Предложение, управляющее компиляцией, состоит из единст­венного оператора, управляющего компиляцией, заканчивающего­ся разделителем точкой.

  1. Повелительные операторы и повелительные предложения

    1. Определение повелительного операто- р а

Повелительный оператор начинается с повелительного глагола и указывает безусловное действие, которое должно выполняться в- объектной программе, или является условным оператором, ограни­ченным явным ограничителем области действия (оператором с ог­раничителем области действия).

Повелительный оператор может состоять из последовательнос­ти повелительных операторов, каждый из которых может быть от­делен от следующего разделителем. Повелительные глаголы сле­

дующие:

ACCEPT

(ПРИНЯТЬ)

(1) ADD

(СЛОЖИТЬ)

ALTER

(ИЗМЕНИТЬ)

(7) CALL

(ВЫЗВАТЬ)

CANCEL

(ОСВОБОДИТЬ)

CLOSE

(ЗАКРЫТЬ)

(1) COMPUTE

(ВЫЧИСЛИТЬ)

CONTINUE

(ПРОДОЛЖИТЬ)

(2) DELETE

(УДАЛИТЬ)

DISABLE

(ЗАПРЕТИТЬ)

DISPLAY

(ВЫДАТЬ)

(1) DIVIDE

(РАЗДЕЛИТЬ)

ENABLE

(РАЗРЕШИТЬ)

EXIT

(ВЫЙТИ)

GENERATE

(ГЕНЕРИРОВАТЬ)

GO TO

(ПЕРЕЙТИ)

INITIALIZE

(ИНИЦИИРОВАТЬ)

INITIATE

(НАЧАТЬ)

INSPECT

(ПРОСМОТРЕТЬ)

MERGE

(СЛИТЬ)

MOVE

(ПОМЕСТИТЬ)

(1) MULTIPLY

(УМНОЖИТЬ)

OPEN

(ОТКРЫТЬ)

PERFORM

(ВЫПОЛНИТЬ)

PURGE

(ОЧИСТИТЬ)

(5) READ

(ЧИТАТЬ)

(4) RECEIVE

(ПОЛУЧИТЬ)

RELEASE

(ПЕРЕДАТЬ)

(2) REWRITE

(ОБНОВИТЬ)

SEND

(ПОСЛАТЬ)

SET

(УСТАНОВИТЬ)

SORT

(СОРТИРОВАТЬ)

(2) START

(ПОДВЕСТИ)

STOP

(ОСТАНОВИТЬ)

(3) STRING

(СОБРАТЬ) ;

(1) SUBTRACT

(ОТНЯТЬ)

SUPPRESS

(ПОДАВИТЬ)

TERMINATE

(ЗАКОНЧИТЬ)

(3) UNSTRING

(РАЗОБРАТЬ)

(6) WRITE

(ПИСАТЬ)

Цифры в скобках

обозначают следующие варианты форматов

операторов:

  1. —без необязательных фраз ON SIZE ERROR (ПРИ ПЕРЕ­ПОЛНЕНИИ) и NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕ­НИЯ);

  2. — без необязательных фраз INVALID KEY (ПРИ ОШИБ­КЕ КЛЮЧА) и NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА);

  3. — без необязательных фраз ON OVERFLOW (ПРИ ПЕРЕ­ПОЛНЕНИИ) и NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ);

  4. — без необязательных фраз NO DATA (НЕТ ДАННЫХ) и WITH DATA (ЕСТЬ ДАННЫЕ);

  5. — без необязательных фраз AT END (В КОНЦЕ) и NOT AT END (НЕ В КОНЦЕ), INVALID KEY (ПРИ ОШИБКЕ КЛЮ­ЧА), NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА);

  6. —без необязательных фраз INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА), END- OF-PAGE (В КОНЦЕ СТРАНИЦЫ), NOT AT END-OF-PAGE (НЕ В КОНЦЕ СТРАНИЦЫ);

  7. — без необязательных фраз ON OVERFLOW (ПРИ ПЕРЕ­ПОЛНЕНИИ), ON EXCEPTION (ПРИ ОШИБКЕ) и NOT ON EXCEPTION (БЕЗ ОШИБКИ).

В общем формате операторов «повелительный-оператор» нуж­но понимать как последовательность следующих друг за другом повелительных операторов, которая должна оканчиваться точкой или любой фразой оператора, содержащего этот «повелительный^ оператор».

    1. Определение повелительного предло­жения

  1. Повелительное предложение — это повелительный оператор, заканчивающийся разделителем точка.Операторы с ограничителем области действия

Оператором с ограничителем области действия является опера­тор, включающий явный ограничитель области действия (см. л. 4.4.4 настоящей части).

  1. О б л а с т ь действия операторов

Ограничители области действия определяют область действия конкретных операторов раздела процедур. Операторы, включаю­щие явные ограничители области действия, называются операто­рами с ограничителем области действия (см. пп. 4.4.4, 6.4.2.4 настоящей части). Область действия операторов, содержащихся в других операторах (вложенные операторы), может быть также неявно ограниченной.

Когда операторы вложены в другие операторы, в которых мо­гут быть необязательные условные фразы, каждая необязательная условная фраза рассматривается, как если бы она была следую­щей фразой ближайшего предыдущего незавершенного операто­ра, с которым эта фраза могла бы быть связана, но с которым ни одна такая фраза еще не связана. Незавершенный оператор — это оператор, не имеющий заведомо явного или неявного завершения (см. п. 4.4.4 настоящей части).

  1. ФОРМАТ ПРЕДСТАВЛЕНИЯ

    1. Общее описание

Формат представления, который обеспечивает стандартный спо­соб представления исходной Кобол-программы и библиотечного текста Кобола, описывается в терминах позиций литер в строке входной-выходной среды. Каждая реализация должна опреде­лять, что понимается под строкой и позицией литер. Согласно этим определениям каждый Кобол-компилятор воспринимает исходную программу, записанную в этом формате представления, и создает выходную распечатку исходной программы в формате представле­ния.

Правила простановки пробелов, приведенные при рассмотрении формата представления, имеют преимущество по отношению ко всем другим правилам для простановки пробелов.

Разделы исходной программы должны быть упорядочены сле­дующим образом: раздел идентификации, раздел оборудования, раздел данных, раздел процедур. Каждый раздел должен быть за­писан в соответствии с правилами для формата представления.

  1. Описание формата представления

Формат представления для строки изображен ниже.

Отметка L

Отметка С

Отметка А

Отметка

В

Отметка R

12 3 4 5 6

7

8 9 10 11

12 13...







Поле поряд-

Поле-ин-

Поле А

Поле В

кового но- дикатора

мера

Отметка L находится левее самой левой позиции литеры в строке.

Отметка С находится между шестой и седьмой позициями ли­тер в строке.

Отметка А находится между седьмой и восьмой позициями ли­тер в строке.

Отметка В находится между одиннадцатой и двенадцатой по­зициями литер в строке.

Отметка R находится справа от самой правой позиции литеры в строке.

Поле порядкового номера занимает шесть позиций литер (1—6) и расположено между отметками L и С.

Поле индикатора занимает одну позицию литеры, начиная от отметки С.

Поле А занимает четыре позиции литеры, начиная от от­метки А.

Поле В занимает конечное число позиций литер, оговоренное реализацией, начиная от отметки В.

  1. П о р я д к о в ы е номера

Поле порядкового номера может быть использовано для обо­значения строк исходной программы. Порядковый номер опреде­ляется пользователем и может состоять из любых литер из набора литер машины. Допускается дублирование порядковых номеров и появление их не в последовательном порядке.

  1. П р о д о л ж е н и е строк

Каждое предложение, статья или фраза, требующие более од­ной строки, могут быть продолжены посредством помещения в по­ле В следующей строки (строк). Эти последующие строки называ­ются строками продолжения. Строка, подлежащая продолжению, называется продолжаемой строкой. Каждое слово, литерал или строка литер шаблона может быть расчленена таким образом, что ее часть попадает в строку продолжения.

Дефис в поле индикатора строки указывает, что первая литера, отличная от пробела в поле В данной строки, является преемни­ком последней литеры (отличной от пробела) предыдущей строки без какого бы то ни было пробела между ними. Однако, если про­должаемая строка содержит нечисловой литерал без заключающей кавычки, то первой отличной от пробела литерой в поле В строки продолжения должен быть знак кавычки и продолжение начинает­ся литерой, непосредственно следующей за знаком кавычки. Все пробелы в конце продолжаемой строки считаются частью литера­ла. Поле А строки продолжения должно быть заполнено пробела­ми.

Если в поле индикатора строки дефис отсутствует, то считается, нто за последней литерой предыдущей строки следует пробел.

'Обе литеры, составляющие разделитель «= = », должны распо­лагаться в одной строке.

  1. С т р о к а пробелов

Строка пробелов — строка, в которой от отметки С до отметки R включительно находятся пробелы. Строка пробелов допустима в любом месте исходной программы (см. п. 7.2.2 настоящей части).

  1. С т р о к и комментария

Строка комментария — строка, содержащая литеру * или / в поле индикатора строк. Строка комментария допустима в любом месте исходной программы после заголовка раздела идентифика­ции и в любом месте библиотечного текста Кобола. В поле Айв поле В этой строки может быть включена любая комбинация литер из набора литер машины. Звездочка или дробная черта и литеры в поле А и В воспроизводятся при распечатке, но служат только для документации и не проверяются на синтаксическую правиль­ность. Литера / в поле индикатора строки вызывает печать ком­ментария на следующей странице распечатки исходной программы; звездочка в поле индикатора строки вызывает печать комментария на следующей доступной строке распечатки.