Имеется четыре типа операторов: повелительные, условные, операторы, управляющие компиляцией, и операторы с ограничителем области действия.
Имеется три типа предложений: повелительные, условные и предложения, управляющие компиляцией.
Условные операторы, предложения и фразы
Определение условного оператора
Условный оператор указывает, что должно быть определено значение истинности условия и что последующие действия объектной программы зависят от этого значения истинности.
Условным оператором является один из следующих:
оператор EVALUATE (ОЦЕНИТЬ), IF (ЕСЛИ), SEARCH (ИСКАТЬ) или RETURN (ВЕРНУТЬ);
оператор READ (ЧИТАТЬ) с фразой AT END (В КОНЦЕ), NOT AT END (НЕ В КОНЦЕ), INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) или NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА);
оператор WRITE (ПИСАТЬ) с фразой INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА), END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ) или NOT END-OF-PAGE (НЕ В КОНЦЕ СТРАНИЦЫ);
операторы DELETE (УДАЛИТЬ), REWRITE (ОБНОВИТЬ) и START (ПОДВЕСТИ) с фразой INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) или NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА);
арифметические операторы ADD (СЛОЖИТЬ), COMPUTE (ВЫЧИСЛИТЬ), DIVIDE (РАЗДЕЛИТЬ), MULTIPLY (УМНОЖИТЬ), SUBTRACT (ОТНЯТЬ) с фразой ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) или NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ)
;оператор RECEIVE (ПОЛУЧИТЬ) с фразой NO DATA (НЕТ ДАННЫХ) или WITH DATA (ЕСТЬ ДАННЫЕ);
оператор STRING (СОБРАТЬ) или UNSTRING (РАЗОБРАТЬ) с фразой ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) или NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ);
оператор CALL (ВЫЗВАТЬ) с фразой ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ), ON EXCEPTION (ПРИ ОШИБКЕ) или NOT ON EXCEPTION (БЕЗ ОШИБКИ).
On р е д е л е н и е условной фразы
Условная фраза указывает действие, которое должно быть выполнено при определении значения истинности условия в результате выполнения условного оператора.
Условной фразой является одна из следующих:
фраза AT END (В КОНЦЕ) или NOT AT END (НЕВ КОНЦЕ) в операторе READ (ЧИТАТЬ);
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) или NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) в операторах DELETE (УДАЛИТЬ), READ (ЧИТАТЬ), REWRITE (ОБНОВИТЬ), START (ПОДВЕСТИ) или WRITE (ПИСАТЬ);
фраза END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ) или NOT END-OF-PAGE (НЕ В КОНЦЕ СТРАНИЦЫ) в операторе WRITE (ПИСАТЬ);
фраза SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) или NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) в операторах ADD (СЛОЖИТЬ), COMPUTE (ВЫЧИСЛИТЬ), DIVIDE (РАЗДЕЛИТЬ), MULTIPLY (УМНОЖИТЬ) или SUBTRACT (ОТНЯТЬ);
фраза NO DATA (НЕТ ДАННЫХ) или WITH DATA (ЕСТЬ ДАННЫЕ) в операторе RECEIVE (ПОЛУЧИТЬ);
фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) или NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ) в операторе STRING (СОБРАТЬ) или UNSTRING (РАЗОБРАТЬ);
фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ), ON EXCEPTION (ПРИ ОШИБКЕ) или NOT ON EXCEPTION (БЕЗ ОШИБКИ) в операторе CALL (ВЫЗВАТЬ).
О п р е д е л е н и е условного предложения
Условное предложение является условным оператором, возможно, с предшествующим повелительным оператором, заканчивающимся разделителем точкой.
Операторы и предложения, управляющие компиляцией
О п р е д е л е ни е оператора, управляющего компиляцией
Оператор, управляющий компиляцией, состоит из глагола, управляющего компиляцией, и операндов. Глаголами, управляющими 6* 1.63компиляцией, являются COPY (КОПИРОВАТЬ), REPLACE (ЗАМЕНИТЬ) и USE (ИСПОЛЬЗОВАТЬ) (ч. 12, пп. 2, 3; ч. 7, п. 4.6; ч. 8, п. 4.8; ч. 9, п. 4.8; ч. 13, п. 4.8; ч. 15, п. 3.2). Оператор, управляющий компиляцией, приводит к выполнению определенного действия во время компиляции.
Определение предложения, управляющего компиляцией
Предложение, управляющее компиляцией, состоит из единственного оператора, управляющего компиляцией, заканчивающегося разделителем точкой.
Повелительные операторы и повелительные предложения
Определение повелительного операто- р а
Повелительный оператор начинается с повелительного глагола и указывает безусловное действие, которое должно выполняться в- объектной программе, или является условным оператором, ограниченным явным ограничителем области действия (оператором с ограничителем области действия).
Повелительный оператор может состоять из последовательности повелительных операторов, каждый из которых может быть отделен от следующего разделителем. Повелительные глаголы сле
дующие:
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 |
(ПИСАТЬ) |
Цифры в скобках |
обозначают следующие варианты форматов |
операторов:
—без необязательных фраз ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) и NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ);
— без необязательных фраз INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) и NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА);
— без необязательных фраз ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) и NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ);
— без необязательных фраз NO DATA (НЕТ ДАННЫХ) и WITH DATA (ЕСТЬ ДАННЫЕ);
— без необязательных фраз AT END (В КОНЦЕ) и NOT AT END (НЕ В КОНЦЕ), INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА);
—без необязательных фраз INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА), END- OF-PAGE (В КОНЦЕ СТРАНИЦЫ), NOT AT END-OF-PAGE (НЕ В КОНЦЕ СТРАНИЦЫ);
— без необязательных фраз ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ), ON EXCEPTION (ПРИ ОШИБКЕ) и NOT ON EXCEPTION (БЕЗ ОШИБКИ).
В общем формате операторов «повелительный-оператор» нужно понимать как последовательность следующих друг за другом повелительных операторов, которая должна оканчиваться точкой или любой фразой оператора, содержащего этот «повелительный^ оператор».
Определение повелительного предложения
Повелительное предложение — это повелительный оператор, заканчивающийся разделителем точка.Операторы с ограничителем области действия
Оператором с ограничителем области действия является оператор, включающий явный ограничитель области действия (см. л. 4.4.4 настоящей части).
О б л а с т ь действия операторов
Ограничители области действия определяют область действия конкретных операторов раздела процедур. Операторы, включающие явные ограничители области действия, называются операторами с ограничителем области действия (см. пп. 4.4.4, 6.4.2.4 настоящей части). Область действия операторов, содержащихся в других операторах (вложенные операторы), может быть также неявно ограниченной.
Когда операторы вложены в другие операторы, в которых могут быть необязательные условные фразы, каждая необязательная условная фраза рассматривается, как если бы она была следующей фразой ближайшего предыдущего незавершенного оператора, с которым эта фраза могла бы быть связана, но с которым ни одна такая фраза еще не связана. Незавершенный оператор — это оператор, не имеющий заведомо явного или неявного завершения (см. п. 4.4.4 настоящей части).
ФОРМАТ ПРЕДСТАВЛЕНИЯ
Общее описание
Формат представления, который обеспечивает стандартный способ представления исходной Кобол-программы и библиотечного текста Кобола, описывается в терминах позиций литер в строке входной-выходной среды. Каждая реализация должна определять, что понимается под строкой и позицией литер. Согласно этим определениям каждый Кобол-компилятор воспринимает исходную программу, записанную в этом формате представления, и создает выходную распечатку исходной программы в формате представления.
Правила простановки пробелов, приведенные при рассмотрении формата представления, имеют преимущество по отношению ко всем другим правилам для простановки пробелов.
Разделы исходной программы должны быть упорядочены следующим образом: раздел идентификации, раздел оборудования, раздел данных, раздел процедур. Каждый раздел должен быть записан в соответствии с правилами для формата представления.
Описание формата представления
Формат представления для строки изображен ниже.
Отметка L |
Отметка С |
Отметка А |
Отметка В |
Отметка R |
12 3 4 5 6 |
7 |
8 9 10 11 |
12 13... |
|
|
|
|
|
|
Поле поряд- |
Поле-ин- |
Поле А |
Поле В |
кового но- дикатора
мера
Отметка L находится левее самой левой позиции литеры в строке.
Отметка С находится между шестой и седьмой позициями литер в строке.
Отметка А находится между седьмой и восьмой позициями литер в строке.
Отметка В находится между одиннадцатой и двенадцатой позициями литер в строке.
Отметка R находится справа от самой правой позиции литеры в строке.
Поле порядкового номера занимает шесть позиций литер (1—6) и расположено между отметками L и С.
Поле индикатора занимает одну позицию литеры, начиная от отметки С.
Поле А занимает четыре позиции литеры, начиная от отметки А.
Поле В занимает конечное число позиций литер, оговоренное реализацией, начиная от отметки В.
П о р я д к о в ы е номера
Поле порядкового номера может быть использовано для обозначения строк исходной программы. Порядковый номер определяется пользователем и может состоять из любых литер из набора литер машины. Допускается дублирование порядковых номеров и появление их не в последовательном порядке.
П р о д о л ж е н и е строк
Каждое предложение, статья или фраза, требующие более одной строки, могут быть продолжены посредством помещения в поле В следующей строки (строк). Эти последующие строки называются строками продолжения. Строка, подлежащая продолжению, называется продолжаемой строкой. Каждое слово, литерал или строка литер шаблона может быть расчленена таким образом, что ее часть попадает в строку продолжения.
Дефис в поле индикатора строки указывает, что первая литера, отличная от пробела в поле В данной строки, является преемником последней литеры (отличной от пробела) предыдущей строки без какого бы то ни было пробела между ними. Однако, если продолжаемая строка содержит нечисловой литерал без заключающей кавычки, то первой отличной от пробела литерой в поле В строки продолжения должен быть знак кавычки и продолжение начинается литерой, непосредственно следующей за знаком кавычки. Все пробелы в конце продолжаемой строки считаются частью литерала. Поле А строки продолжения должно быть заполнено пробелами.
Если в поле индикатора строки дефис отсутствует, то считается, нто за последней литерой предыдущей строки следует пробел.
'Обе литеры, составляющие разделитель «= = », должны располагаться в одной строке.
С т р о к а пробелов
Строка пробелов — строка, в которой от отметки С до отметки R включительно находятся пробелы. Строка пробелов допустима в любом месте исходной программы (см. п. 7.2.2 настоящей части).
С т р о к и комментария
Строка комментария — строка, содержащая литеру * или / в поле индикатора строк. Строка комментария допустима в любом месте исходной программы после заголовка раздела идентификации и в любом месте библиотечного текста Кобола. В поле Айв поле В этой строки может быть включена любая комбинация литер из набора литер машины. Звездочка или дробная черта и литеры в поле А и В воспроизводятся при распечатке, но служат только для документации и не проверяются на синтаксическую правильность. Литера / в поле индикатора строки вызывает печать комментария на следующей странице распечатки исходной программы; звездочка в поле индикатора строки вызывает печать комментария на следующей доступной строке распечатки.