Обозначение НТД, на который дана ссылка | Номер приложения |
ГОСТ 22558-77* | Приложение 1 |
______________
* На территории Российской Федерации документ не действует. Действует ГОСТ 22558-89 (настоящий стандарт). - Примечание изготовителя базы данных.
Ядро | ЯДР |
Последовательный ввод-вывод | ПОД |
Относительный ввод-вывод | ОТД |
Индексный ввод-вывод | ИПД |
Межпрограммные связи | МПС |
Сортировка-слияние | СРТ |
Обработка исходных текстов | ОИТ |
Генератор отчетов | ГОТ |
Коммуникации | КОМ |
Отладка | ОТЛ |
Сегментация | СЕГ |
Подмно- жества Кобола | Обязательные модули (обязательны в подмножествах) | Необязательные модули (не обязательны в подмножествах) | |||||||||
Ядро | Последо- ватель- ный ввод- вывод | Относи- тельный ввод- вывод | Индексный ввод- вывод | Межпрог- раммные связи | Сорти- ровка- слияние | Обра- ботка исходных текстов | Гене- ратор отчетов | Коммуни- кации | Отладка | Сегмен- тация | |
Макси- мальное | 2 ЯДР 1,2 | 2 ПОД 1,2 | 2 ОТД 0,2 | 2 ИПД 0,2 | 2 МПС 1,2 | 1 СРТ 0,1 | 2 ОИТ 0,2 | 1 ГОТ 0,1 | 2 КОМ 0,2 | 2 ОТЛ 0,2 | 2 СЕГ 0,2 |
Проме- жуточное | 1 ЯДР 1,2 | 1 ПОД 1,2 | 1 ОТД 0,2 | 1 ИПД 0,2 | 1 МПС 1,2 | 1 СРТ 0,1 | 1 ОИТ 0,2 | 1 КОМ 0,2 | 1 ОТЛ 0,2 | 1 СЕГ 0,2 | |
Мини- мальное | 1 ЯДР 1,2 | 1 ПОД 1,2 | Нуль (пустое подмно- жество) | Нуль (пустое подмн- жество) | 1 МПС 1,2 | Нуль (пустое подмно- жество) | Нуль (пустое подмно- жество) |
Элемент | Уровень 1 | Уровень 2 |
ПОНЯТИЯ ЯЗЫКА | ||
Набор литер | ||
Литеры, используемые для слов | ||
в английской нотации 0-9, A-Z, - (дефис) | x | x |
в русской нотации А-Я, D, F, G, I, J, L, N, Q, R, S, U, V, W, Y, Z, 0-9, - (дефис) | x | x |
Литеры, используемые для пунктуации " ( ) . , ; пробел | x | x |
Литеры, используемые для пунктуации : (двоеточие) | - | x |
Литеры, используемые для редактирования В + - . , Z (П) * 0 CR (КP) DВ (ДБ) / | x | x |
Литеры, используемые в арифметических операциях + - * / ** | - | x |
Литеры, используемые в отношениях = >= <=> < | x | x |
Литеры, используемые при индексировании + - | x | x |
Разрешена замена одной литерой | x | х |
Разрешена замена парами литер | + | + |
Разделители | ||
" ( ) . , ; пробел | x | x |
: (двоеточие) | - | x |
Строки-литер | ||
Слова Кобола | ||
Не более 30 литер | х | х |
Слова, определенные пользователем | ||
имя-алфавита | x | х |
имя-класса | х | х |
имя-условия | - | х |
имя-данного | x | х |
имя-индекса | x | х |
номер-уровня | х | x |
мнемоническое-имя | х | х |
имя-параграфа | x | x |
имя-программы | x | x |
имя-программного-модуля | + | + |
имя-секции | x | x |
символическая-литера | - | х |
Системные-имена | ||
имя-машины | х | х |
имя-реализации | x | х |
имя-языка | + | + |
Зарезервированные слова | ||
Обязательные слова | x | х |
Ключевые слова | x | х |
Слова специальные литеры | ||
Знаки арифметических операций + - * / ** | - | х |
Знаки арифметических операций при индексировании + - | x | x |
Литеры отношения = > < >= <= | x | x |
Необязательные слова | x | x |
Слова специального назначения | ||
Стандартные константы: | ||
ZERO (НУЛЬ), ZEROS, ZEROES (НУЛИ), SPACE (ПРОБЕЛ), SPACES (ПРОБЕЛЫ), HIGH-VALUE (НАИБОЛЬШЕЕ-ЗНАЧЕНИЕ), HIGH-VALUES (НАИБОЛЬШИЕ-ЗНАЧЕНИЯ), LOW-VALUE (НАИМЕНЬШЕЕ-ЗНАЧЕНИЕ), LOW-VALUES (НАИМЕНЬШИЕ-ЗНАЧЕНИЯ), QUOTE (КАВЫЧКА), QUOTES (КАВЫЧКИ) | x | х |
Стандартные константы: символическая-литера, ALL литерал (ВСЕ литерал), ALL стандартная-константа (ВСЕ стандартная-константа), ALL символическая-литера (ВСЕ символическая-литера) | - | х |
Литералы | ||
Числовые литералы: от 1 до 18 цифр | x | x |
Нечисловые литералы: от 1 до 160 литер | х | x |
PICTURE строка-литер (ШАБЛОН строка-литер) | x | x |
Статья-комментарий | + | + |
Однозначность ссылки | ||
Уточнение | ||
Уточнение недопустимо, имена должны быть однозначны при ссылке | х | - |
50 уточнителей | - | х |
Индексирование | ||
3 уровня индексов | x | - |
7 уровней индексов | - | х |
Индексирование литералом | х | x |
Индексирование именем-данного | х | х |
Индексирование именем индекса | х | х |
Относительное индексирование | x | х |
Модификация ссылки | - | x |
Формат представления | ||
Порядковый номер | x | x |
Продолжение строк | ||
Нечисловой литерал | x | x |
Слова Кобола, числовой литерал, строка-литер шаблона | - | x |
Строки пробелов (пустые строки) | x | x |
Строки комментария | ||
Строки комментария со звездочкой (*) | x | x |
Строки комментария с дробной чертой (/) | x | x |
Отладочная строка с литерой D (Т) в поле индикатора | x | x |
Структура исходной программы | ||
Раздел идентификации обязателен | x | x |
Раздел оборудования необязателен | x | x |
Раздел данных необязателен | x | x |
Раздел процедур необязателен | x | x |
Заголовок конца программы | - | x |
РАЗДЕЛ ИДЕНТИФИКАЦИИ | ||
Параграф PROGRAM-ID (ПРОГРАММА) | x | x |
имя-программы | x | x |
Параграф AUTHOR (АВТОР) | + | + |
Параграф INSTALLATION (ПРЕДПРИЯТИЕ) | + | + |
Параграф DATE-WRITTEN (ДАТА-НАПИСАНИЯ) | + | + |
Параграф DATE-COMPILED (ДАТА-ТРАНСЛЯЦИИ) | - | + |
Параграф SECURITY (ПОЛНОМОЧИЯ) | + | + |
РАЗДЕЛ ОБОРУДОВАНИЯ | ||
Секция конфигурации | ||
Параграф SOURCE-COMPUTER (ИСХОДНАЯ-МАШИНА) | x | х |
имя-машины | x | x |
фраза WITH DEBUGGING MODE (В РЕЖИME ОТЛАДКИ) | x | x |
Параграф OBJECT-COMPUTER (РАБОЧАЯ-МАШИНА) | х | х |
имя-машины | х | х |
фраза MEMORY SIZE (РАЗМЕР ПАМЯТИ) | + | + |
фраза PROGRAM COLLATING SEQUENCE (ПРОГРАММНЫЙ АЛФАВИТ) | x | x |
Параграф SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА) | х | х |
Фраза ALPHABET (АЛФАВИТ) | х | х |
вариант STANDARD-1 (СТАНДАРТ-А) | х | х |
вариант STANDARD-2 (СТАНДАРТ-М) | х | х |
вариант NATIVE (ВНУТРЕННИЙ) | х | х |
вариант имя-реализации | x | х |
вариант литерал | - | x |
Фраза CLASS (КЛАСС) | x | x |
Фраза CURRENCY SIGN (ВАЛЮТНЫЙ ЗНАК) | х | х |
Фраза DECIMAL-POINT (ДЕСЯТИЧНАЯ ТОЧКА) | x | x |
Фраза имя-реализации | x | x |
вариант IS мнемоническое-имя | x | x |
вариант ON STATUS IS имя-условия (ВКЛЮЧЕНО имя-условия) | x | x |
вариант OFF STATUS IS имя-условия (ВЫКЛЮЧЕНО имя-условия) | x | x |
Фраза SYMBOLIC CHARACTER (СИМВОЛИЧЕСКАЯ ЛИТЕРА) | - | x |
РАЗДЕЛ ДАННЫХ | ||
Секция рабочей памяти | ||
Статья-описания записи | x | x |
Статья описания уровня 77 | x | x |
Статья описания данного | ||
Фраза BLANK WHEN ZERO (ПРОБЕЛ КОГДА НУЛЬ) | x | x |
Фраза имя-данного | x | x |
Фраза FILLER (ЗАПОЛНИТЕЛЬ) | x | x |
Фраза JUSTIFIED (СДВИНУТО) | x | x |
Фраза номер-уровня | x | x |
от 01 до 49; одна или две цифры | x | x |
66 | - | x |
77 | x | x |
88 | - | x |
Фраза-OCCURS (ПОВТОРЯЕТСЯ) | x | x |
целое TIMES (целое РАЗ) | x | x |
фраза ASCENDING/DESCENDING KEY (ПО ВОЗРАСТАНИЮ/УБЫВАНИЮ КЛЮЧА) | - | x |
фраза INDEXED BY (ИНДЕКСИРУЕТСЯ) | x | x |
фраза-целое-1 ТО целое-2 TIMES DEPENDING ON (целое-1 ДО целое-2 РАЗ В ЗАВИСИМОСТИ ОТ) | - | х |
Фраза PICTURE (ШАБЛОН) | x | x |
строка-литер содержит не более 30 литер | x | x |
литеры данных: X 9 А | x | x |
операционные символы: S(3) V(T) P(M) | x | x |
литеры фиксированной вставки В + -. 0 CR (КР) DB (ДБ) / | x | x |
литеры замещения или плавающей вставки* + - Z (П) | x | x |
замена валютного знака | x | x |
замена десятичной точки | x | x |
Фраза REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ) | x | x |
не может быть вложенной | x | - |
может быть вложенной | - | х |
Фраза RENAMES (ПЕРЕИМЕНОВЫВАЕТ) | - | х |
Фраза SIGN (ЗНАК) | x | x |
Фраза SYNCHRONIZED (ВЫДЕЛЕНО) | x | x |
Фраза USAGE (об использовании) | x | x |
BINARY (ДВОИЧНОЕ) | x | x |
COMPUTATIONAL (ДЛЯ ВЫЧИСЛЕНИЙ) | x | x |
DISPLAY (ДЛЯ ВЫДАЧИ) | x | x |
INDEX (ДЛЯ ИНДЕКСА) | x | x |
PACKED-DECIMAL (ДЕСЯТИЧНОЕ) | x | x |
Фраза VALUE (ЗНАЧЕНИЕ) | x | x |
литерал | x | x |
несколько литералов | - | x |
литерал-1 THROUGH литерал-2 (литерал-1 ПО литерал-2) | - | x |
несколько диапазонов литералов | - | x |
РАЗДЕЛ ПРОЦЕДУР | ||
Арифметическое выражение | - | x |
Знаки бинарных арифметических операций + - * / ** | - | x |
Знаки унарных арифметических операций + - | - | x |
Условные выражения | x | x |
Простое условие | x | x |
Условие отношения | x | x |
Знаки операций отношения | ||
[NOT] GREATER THAN ([HE] БОЛЬШЕ) | x | x |
[NOT] > ([HE] >) | x | x |
[NOT] LESS THAN ([HE] МЕНЬШЕ) | x | x |
[NOT] < ([HE] td> | x | x |
[NOT] EQUAL TO ([NE] РАВНО) | x | x |
[NOT] = ([HE] =) | x | x |
GREATER THAN OR EQUAL TO (БОЛЬШЕ ИЛИ РАВНО) | x | x |
> = | x | x |
LESS THAN OR EQUAL TO (МЕНЬШЕ ИЛИ РАВНО) | x | x |
< = | x | x |
Сравнение числовых операндов | x | x |
Сравнение нечисловых операндов | x | x |
Сравнение имен индексов и (или) индексных данных | x | x |
Условие класса | x | x |
NUMERIC (ЧИСЛОВОЕ) | x | x |
ALPHABETIC (БУКВЕННОЕ) | x | x |
ALPHABETIC-LOWER (СТРОЧНЫЕ) | x | x |
ALPHABETIC-UPPER (ПРОПИСНЫЕ) | x | x |
имя-класса | x | x |
Условие имени-условия | - | x |
Условие знака | - | x |
Условие состояния переключателя | x | x |
Сложное условие | - | x |
Знаки логических операций AND (И) OR (ИЛИ) NOT (HE) | - | x |
Отрицание условия | - | x |
Комбинированное условие | - | x |
Условие в скобках | х | x |
Сокращенные комбинированные условия отношений | - | x |
Арифметические операторы | x | x |
Арифметические операнды имеют длину до 18 цифр | x | x |
Композиция операндов содержит не более 18 цифр | x | x |
Оператор ACCEPT (ПРИНЯТЬ) | x | x |
идентификатор | x | x |
только одна передача данных | x | - |
число передач данных не ограничивается | - | x |
фраза FROM, мнемоническое-имя (С мнемоническое-имя) | - | х |
фраза FROM DATE/DAY/DAY-OF-WEEK/TIME (ДАТУ/ДЕНЬ/ДЕНЬ/-НЕДЕЛИ/ВРЕМЯ) | - | x |
Оператор ADD (СЛОЖИТЬ) | x | x |
идентификатор/литерал | x | x |
несколько идентификаторов/литералов | x | x |
ТО идентификатор (С идентификатор) | x | x |
ТО несколько идентификаторов (С несколько идентификаторов) | x | x |
ТО идентификатор/литерал GIVING идентификатор (С идентификатор/литерал ПОЛУЧАЯ идентификатор | х | x |
ТО идентификатор/литерал GIVING несколько идентификаторов (С идентификатор/литерал ПОЛУЧАЯ несколько идентификаторов | x | x |
фраза ROUNDED (ОКРУГЛЯЯ) | x | x |
фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) | x | x |
фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) | x | x |
фраза END-ADD (КОНЕЦ-СЛОЖИТЬ) | x | x |
фраза CORRESPONDING (СООТВЕТСТВЕННО) | - | x |
Оператор ALTER (ИЗМЕНИТЬ) | + | + |
только одно имя-процедуры | + | - |
несколько имен-процедур | - | + |
Оператор COMPUTE (ВЫЧИСЛИТЬ) | - | x |
арифметическое выражение | - | x |
несколько идентификаторов | - | x |
фраза ROUNDED (ОКРУГЛЯЯ) | - | x |
фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) | - | x |
фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) | - | х |
фраза END-COMPUTE (КОНЕЦ-ВЫЧИСЛИТЬ) | - | x |
Оператор CONTINUE (ПРОДОЛЖИТЬ) | x | х |
Оператор DISPLAY (ВЫДАТЬ) | x | х |
только одна передача данных | x | - |
число передач данных не ограничено | - | x |
идентификатор/литерал | x | x |
несколько идентификаторов/литералов | х | x |
фраза UPON мнемоническое-имя (НА мнемоническое-имя) | - | х |
фраза WITH NO ADVANCING (БЕЗ ПРОДВИЖЕНИЯ) | - | x |
Оператор DIVIDE (РАЗДЕЛИТЬ) | - | x |
ВY идентификатор/литерал (НА идентификатор/литерал) | x | x |
INTO идентификатор/литерал (НА идентификатор/литерал) | х | x |
INTO несколько делимых (НА несколько делимых) | х | x |
GIVING идентификатор (ПОЛУЧАЯ идентификатор) | x | x |
GIVING несколько идентификаторов (ПОЛУЧАЯ несколько идентификаторов) | x | х |
фраза ROUNDED (ОКРУГЛЯЯ) | х | х |
фраза REMAINDER (ОСТАТОК) | - | х |
фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) | x | х |
фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) | х | х |
фраза END-DIVIDE (КОНЕЦ-РАЗДЕЛИТЬ) | х | х |
Оператор ENTER (ВОЙТИ) | + | + |
Оператор EVALUATE (ОЦЕНИТЬ) | - | х |
идентификатор/литерал | - | x |
арифметическое выражение | - | x |
условное выражение | - | х |
TRUE/FALSE (ИСТИНА/ЛОЖЬ) | - | х |
фраза ALSO (ТАКЖЕ) | - | х |
фраза WHEN (КОГДА) | - | x |
фраза ALSO (ТАКЖЕ) | - | x |
фраза WHEN OTHER (ИНАЧЕ) | - | х |
фраза END-EVALUATE (КОНЕЦ-ОЦЕНИТЬ) | - | х |
Оператор EXIT (ВЫЙТИ) | x | x |
Оператор GO TO (ПЕРЕЙТИ К) | х | х |
имя-процедуры обязательно | x | - |
имя-процедуры необязательно | - | + |
фраза DEPENDING ON (В ЗАВИСИМОСТИ ОТ) | х | х |
Оператор IF (ЕСЛИ) | х | х |
только повелительные операторы | х | - |
повелительные и (или) условные операторы | - | x |
вложенные операторы IF (ЕСЛИ) | х | х |
необязательное слово THEN (TO) | х | х |
фраза NEXT SENTENCE (СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ) | х | х |
фраза ELSE (ИНАЧЕ) | х | х |
фраза END-IF (КОНЕЦ-ЕСЛИ) | х | х |
Оператор INITIALIZE (ИНИЦИИРОВАТЬ) | - | x |
несколько идентификаторов | - | x |
фраза REPLACING (ЗАМЕНЯЯ) | - | x |
несколько REPLACING (ЗАМЕНЯЯ) | - | x |
Оператор INSPECT (ПРОСМОТРЕТЬ) | x | x |
на вхождение одной литеры | x | - |
на вхождение нескольких литер | - | x |
фраза TALLYING (СЧИТАЯ) | x | x |
фраза BEFORE/AFTER (ДО/ПОСЛЕ) | x | x |
несколько фраз BEFORE/AFTER (ДО/ПОСЛЕ) | - | x |
несколько фраз TALLYING (СЧИТАЯ) | - | x |
фраза REPLACING (ЗАМЕНЯЯ) | x | x |
фраза BEFORE/AFTER (ДО/ПОСЛЕ) | x | x |
несколько фраз BEFORE/AFTER (ДО/ПОСЛЕ) | - | x |
несколько фраз REPLACING (ЗАМЕНЯЯ) | - | x |
фразы TALLYING (СЧИТАЯ) и REPLACING (ЗАМЕНЯЯ) | x | x |
фраза CONVERTING (ПРЕВРАЩАЯ) | - | x |
Оператор MOVE (ПОМЕСТИТЬ) | x | x |
ТО идентификатор (В идентификатор) | x | х |
ТО несколько идентификаторов (В несколько идентификаторов) | x | x |
дередактирование цифровых редактируемых данных | - | x |
фраза CORRESPONDING (СООТВЕТСТВЕННО) | - | х |
Оператор MULTIPLY (УМНОЖИТЬ) | x | x |
BY идентификатор (НА идентификатор) | x | x |
BY несколько идентификаторов (НА несколько идентификаторов) | х | x |
GIVING идентификатор (ПОЛУЧАЯ идентификатор) | x | x |
GIVING несколько идентификаторов (ПОЛУЧАЯ несколько идентификаторов) | х | x |
фраза ROUNDED (ОКРУГЛЯЯ) | x | x |
фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) | x | x |
фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) | х | x |
фраза END-MULTIPLY (КОНЕЦ-УМНОЖИТЬ) | x | х |
Оператор PERFORM (ВЫПОЛНИТЬ) | x | х |
имя-процедуры необязательно | x | х |
фраза THROUGH имя-процедуры (ПО имя-процедуры) | x | x |
вариант повелительный-оператор | x | х |
фраза END-PERFORM (КОНЕЦ-ВЫПОЛНИТЬ) | x | x |
фраза TIMES (РАЗ) | х | х |
фраза UNTIL (ДО) | x | x |
фраза TEST BEFORE/AFTER (С ПРОВЕРКОЙ В НАЧАЛЕ/В КОНЦЕ) | - | x |
фраза VARYING (МЕНЯЯ) | - | x |
фраза TEST BEFORE/AFTER (С ПРОВЕРКОЙ В НАЧАЛЕ/В КОНЦЕ) | - | x |
фраза AFTER (ЗАТЕМ) | - | x |
допускаются по крайней мере 6 фраз AFTER (ЗАТЕМ) | - | x |
Оператор SEARCH (ИСКАТЬ) | - | x |
фраза VARYING (МЕНЯЯ) | - | x |
фраза AT END (В КОНЦЕ) | - | x |
фраза WHEN (КОГДА) | - | x |
несколько фраз WHEN (КОГДА) | - | x |
фраза END-SEARCH (КОНЕЦ-ИСКАТЬ) | - | x |
Оператор SEARCH ALL (ИСКАТЬ ОСОБО) | - | x |
фраза AT END (В КОНЦЕ) | - | x |
фраза WHEN (КОГДА) | - | x |
фраза END-SEARCH (КОНЕЦ-ИСКАТЬ) | - | x |
Оператор SET (УСТАНОВИТЬ) | x | x |
имя-индекса/идентификатор ТО (НА) | x | x |
имя-индекса UP BY/DOWN BY (имя-индекса ПРИБАВЛЯЯ/ВЫЧИТАЯ) | х | x |
мнемоническое-имя ТО ON/OFF (мнемоническое-имя НА ВКЛЮЧЕНО/ВЫКЛЮЧЕНО) | х | x |
имя-условия ТО TRUE (имя-условия НА ИСТИНА) | - | x |
Оператор STOP (ОСТАНОВИТЬ) | x | x |
RUN (РАБОТУ) | x | x |
литерал | + | + |
Оператор STRING (СОБРАТЬ) | - | x |
несколько DELIMITED BY (ОГРАНИЧИВАЯСЬ) | - | x |
фраза WITH POINTER (УКАЗАТЕЛЬ) | - | x |
фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) | - | x |
фраза NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ) | - | x |
фраза END-STRING (КОНЕЦ-СОБРАТЬ) | - | х |
Оператор SUBTRACT (ОТНЯТЬ) | х | x |
идентификатор/литерал | х | х |
несколько идентификаторов/литералов | x | х |
FROM идентификатор (ОТ идентификатор) | x | х |
FROM несколько идентификаторов (ОТ несколько идентификаторов) | x | х |
GIVING идентификатор (ПОЛУЧАЯ идентификатор) | x | х |
GIVING несколько идентификаторов (ПОЛУЧАЯ несколько идентификаторов) | х | x |
фраза ROUNDED (ОКРУГЛЯЯ) | х | х |
фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) | х | x |
фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) | х | x |
фраза END-SUBTRACT (КОНЕЦ-ОТНЯТЬ) | x | x |
фраза CORRESPONDING (СООТВЕТСТВЕННО) | - | х |
Оператор UNSTRING (РАЗОБРАТЬ) | - | х |
фраза DELIMITED BY (ОГРАНИЧИВАЯСЬ) | - | х |
фраза DELIMITER IN (ОГРАНИЧИТЕЛЬ В) | - | х |
фраза COUNT IN (СЧЕТ В) | - | х |
фраза WITH POINTER (УКАЗАТЕЛЬ) | - | х |
фраза TALLYING (СЧИТАЯ В) | - | х |
фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) | - | х |
фраза NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ) | - | х |
фраза END-UNSTRING (КОНЕЦ-РАЗОБРАТЬ) | - | х |
Элемент | Уровень 1 | Уровень 2 |
ПОНЯТИЯ ЯЗЫКА | ||
Слова, определенные пользователем | ||
имя-файла | x | x |
имя-записи | х | x |
Зарезервированные слова | ||
Специальный регистр LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) | - | x |
Состояние ввода-вывода | x | x |
РАЗДЕЛ ОБОРУДОВАНИЯ | ||
Секция ввода-вывода | ||
Параграф FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛАМИ) | x | x |
Статья управления файлом | x | x |
фраза SELECT (ДЛЯ) | x | х |
фраза OPTIONAL (НЕОБЯЗАТЕЛЬНОГО) | - | x |
только входной, входной-выходной и дополняемый | - | x |
фраза ACCESS MODE IS SEQUENTIAL (ДОСТУП ПОСЛЕДОВАТЕЛЬНЫЙ) | х | x |
фраза ASSIGN (НАЗНАЧИТЬ) | х | х |
имя-реализации | х | x |
литерал | x | x |
фраза FILE STATUS (СОСТОЯНИЕ ФАЙЛА) | х | х |
фраза ORGANIZATION IS SEQUENTIAL (ОРГАНИЗАЦИЯ ПОСЛЕДОВАТЕЛЬНАЯ) | х | х |
фраза PADDING CHARACTER (ЛИТЕРА ЗАПОЛНИТЕЛЬ) | - | x |
фраза RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ) | - | x |
фраза RESERVE (РЕЗЕРВИРОВАТЬ) | - | х |
Параграф I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ) | x | x |
фраза MULTIPLE FILE TAPE (НА ОДНОЙ КАТУШКЕ) | - | + |
фраза RERUN (ПЕРЕПРОГОН) | + | + |
фраза SAME AREA (ОБЩАЯ ОБЛАСТЬ) | x | x |
фраза SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ) | - | x |
РАЗДЕЛ ДАННЫХ | ||
Секция файлов | ||
Статья описания файла | x | x |
индикатор уровня FD (ОФ) | x | x |
фраза BLOCK CONTAINS (В БЛОКЕ) | x | х |
целое-1 RECORDS/CHARACTERS (целое-1 ЗАПИСЕЙ/ЛИТЕР) | x | x |
целое-1 ТО целое-2 RECORDS/CHARACTERS (целое-1 ДО целое-2 ЗАПИСЕЙ/ЛИТЕР) | - | x |
фраза CODE-SET (АЛФАВИТ) | x | x |
фраза DATA RECORDS (ЗАПИСИ ДАННЫХ) | + | + |
фраза LABEL RECORDS (МЕТКИ) | + | + |
фраза LINAGE (ВЕРСТКА) | - | х |
фраза FOOTING (КОНЦОВКА) | - | x |
фраза ТОР (ВЕРХНЕЕ ПОЛЕ) | - | x |
фраза BOTTOM (НИЖНЕЕ ПОЛЕ) | - | x |
фраза RECORD (В ЗАПИСИ) | x | x |
целое-1 CHARACTERS (целое-1 ЛИТЕР) | x | х |
фраза VARYING IN SIZE (ПЕРЕМЕННОЕ ЧИСЛО) | - | x |
FROM целое-2 ТО целое-3 CHARACTERS (ОТ целое-2 ДО целое-3 ЛИТЕР) | - | х |
фраза DEPENDING ON (В ЗАВИСИМОСТИ ОТ) | - | x |
целое-4 ТО целое-5 CHARACTERS (целое-4 ДО целое-5 ЛИТЕР) | х | x |
фраза VALUE (ЗНАЧЕНИЕ) | + | + |
имя-реализации литерал | + | + |
имя-реализации несколько литералов | + | + |
имя-реализации имя-данного | - | + |
имя-реализации несколько имен-данных | - | + |
Статья описания записи | x | х |
РАЗДЕЛ ПРОЦЕДУР | ||
Декларативные процедуры | x | x |
DECLARATIVES (ДЕКЛАРАТИВЫ) | х | x |
END DECLARATIVES (КОНЕЦ ДЕКЛАРАТИВ) | x | x |
Оператор CLOSE (ЗАКРЫТЬ) | x | х |
имя-файла | x | x |
несколько имен-файлов | x | x |
фраза REEL/UNIT (КАТУШКУ/ТОМ) | x | x |
фраза FOR REMOVAL (С УДАЛЕНИЕМ) | - | x |
фраза WITH NO REWIND/LOCK (БЕЗ ПЕРЕМОТКИ/С ЗАМКОМ) | - | x |
Оператор OPEN (ОТКРЫТЬ) | x | x |
имя-файла | x | х |
несколько имен-файлов | x | x |
фраза INPUT (ВХОДНОЙ) | x | х |
фраза WITH NO REWIND (БЕЗ ПЕРЕМОТКИ) | - | х |
фраза REVERSED (РЕВЕРСНО) | - | + |
фраза OUTPUT (ВЫХОДНОЙ) | x | x |
фраза WITH NO REWIND (БЕЗ ПЕРЕМОТКИ) | - | x |
фраза I-O (ВХОДНОЙ-ВЫХОДНОЙ) | x | x |
фраза EXTEND (ДОПОЛНЯЕМЫЙ) | - | x |
несколько INPUT (ВХОДНОЙ), OUTPUT (ВЫХОДНОЙ) и I-O (ВХОДНОЙ-ВЫХОДНОЙ) | x | x |
несколько EXTEND (ДОПОЛНЯЕМЫЙ) | - | x |
Оператор READ (ЧИТАТЬ) | x | x |
фраза NEXT (СЛЕДУЮЩУЮ) | - | x |
фраза INTO (В) | x | x |
фраза AT END (В КОНЦЕ) | x | x |
фраза NOT AT END (HE В КОНЦЕ) | x | x |
фраза END-READ (КОНЕЦ-ЧИТАТЬ) | x | x |
Оператор REWRITE (ОБНОВИТЬ) | x | x |
фраза FROM (ИЗ ПОЛЯ) | x | x |
Оператор USE (ИСПОЛЬЗОВАТЬ) | x | x |
фраза EXCEPTION/ERROR PROCEDURE (ПРОЦЕДУРЫ ОШИБКИ) | x | x |
ON имя-файла (ДЛЯ имя-файла) | x | x |
ON несколько-имен-файлов (ДЛЯ несколько имен-файлов) | - | x |
ON INPUT (ДЛЯ ВХОДНЫХ) | х | x |
ON OUTPUT (ДЛЯ ВЫХОДНЫХ) | x | х |
ON I-O (ДЛЯ ВХОДНЫХ-ВЫХОДНЫХ) | x | x |
ON EXTEND (ДЛЯ ДОПОЛНЯЕМЫХ) | - | x |
Оператор WRITE (ПИСАТЬ) | x | x |
фраза FROM (ИЗ ПОЛЯ) | x | x |
фраза BEFORE/AFTER ADVANCING (ДО/ПОСЛЕ ПРОДВИЖЕНИЯ) | x | x |
целое LINE/LINES (целое СТРОК) | x | x |
идентификатор LINE/LINES (идентификатор СТРОК) | x | x |
мнемоническое-имя | - | x |
PAGE (СТРАНИЦЫ) | х | x |
фраза AT END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ) | - | x |
фраза NOT AT END-OF-PAGE (HE В КОНЦЕ СТРАНИЦЫ) | - | x |
фраза END-WRITE (КОНЕЦ-ПИСАТЬ) | - | х |
Элемент | Уровень 1 | Уровень 2 |
ПОНЯТИЯ ЯЗЫКА | ||
Слова, определенные пользователем | ||
имя-файла | x | x |
имя-записи | x | x |
Состояние ввода-вывода | x | x |
РАЗДЕЛ ОБОРУДОВАНИЯ | ||
Секция ввода-вывода | ||
Параграф FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛАМИ) | x | x |
Статья управления файлом | x | x |
фраза SELECT (ДЛЯ) | x | x |
фраза OPTIONAL (НЕОБЯЗАТЕЛЬНОГО) | - | x |
только входной, входной-выходной и дополняемый файлы | - | x |
фраза ACCESS MODE (ДОСТУП) | x | x |
SEQUENTIAL (ПОСЛЕДОВАТЕЛЬНЫЙ) | x | x |
RANDOM (ПРОИЗВОЛЬНЫЙ) | x | x |
DYNAMIC (ДИНАМИЧЕСКИЙ) | x | x |
RELATIVE KEY (ОТНОСИТЕЛЬНЫЙ КЛЮЧ) | x | x |
фраза ASSIGN (НАЗНАЧИТЬ) | x | x |
имя-реализации | х | х |
литерал | x | x |
фраза FILE STATUS (СОСТОЯНИЕ ФАЙЛА) | х | х |
фраза ORGANIZATION RELATIVE (ОРГАНИЗАЦИЯ ОТНОСИТЕЛЬНАЯ) | х | х |
фраза RESERVE (РЕЗЕРВИРОВАТЬ) | - | x |
Параграф I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ) | x | x |
фраза RERUN (ПЕРЕПРОГОН) | + | + |
фраза SAME AREA (ОБЩАЯ ОБЛАСТЬ) | x | x |
фраза SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ) | - | x |
РАЗДЕЛ ДАННЫХ | ||
Секция файлов | ||
Статья описания файла | x | x |
индикатор уровня FD (ОФ) | x | x |
фраза BLOCK CONTAINS (В БЛОКЕ) | х | x |
целое-1 RECORD/CHARACTERS (целое-1 ЗАПИСЕЙ/ЛИТЕР) | x | x |
целое-1 ТО целое-2 RECORDS/CHARACTERS (целое-1 ДО целое-2 ЗАПИСЕЙ/ЛИТЕР) | - | x |
фраза DATA RECORDS (ЗАПИСИ ДАННЫХ) | + | + |
фраза LABEL RECORDS (МЕТКИ) | + | + |
фраза RECORD (В ЗАПИСИ) | x | x |
целое-1 CHARACTERS (целое-1 ЛИТЕР) | x | x |
фраза VARYING IN SIZE (ПЕРЕМЕННОЕ ЧИСЛО) | x | x |
FROM целое-2 ТО целое-3 CHARACTERS (ОТ целое-2 ДО целое-3 ЛИТЕР) | - | x |
фраза DEPENDING ON (В ЗАВИСИМОСТИ ОТ) | - | x |
целое-4 ТО целое-5 CHARACTERS (целое-4 ДО целое-5 ЛИТЕР) | x | x |
фраза VALUE (ЗНАЧЕНИЕ) | + | + |
имя-реализации литерал | + | + |
имя-реализации несколько литералов | + | + |
имя-реализиции имя-данного | - | + |
имя-реализации несколько имен-данных | - | + |
Статья описания записи | x | х |
РАЗДЕЛ ПРОЦЕДУР | ||
Декларативные процедуры | x | x |
DECLARATIVES (ДЕКЛАРАТИВЫ) | x | x |
END DECLARATIVES (КОНЕЦ ДЕКЛАРАТИВ) | х | x |
Оператор CLOSE (ЗАКРЫТЬ) | x | x |
имя-файла | х | x |
несколько имен-файлов | х | x |
фраза WITH LOCK (С ЗАМКОМ) | - | x |
Оператор DELETE (УДАЛИТЬ) | x | х |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | х | x |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | х | х |
фраза END-DELETE (КОНЕЦ-УДАЛИТЬ) | х | х |
Оператор OPEN (ОТКРЫТЬ) | х | x |
имя-файла | х | x |
несколько имен-файлов | х | х |
фраза INPUT (ВХОДНОЙ) | х | х |
фраза OUTPUT (ВЫХОДНОЙ) | х | х |
фраза I-О (ВХОДНОЙ-ВЫХОДНОЙ) | х | x |
фраза EXTEND (ДОПОЛНЯЕМЫЙ) | - | x |
несколько INPUT (ВХОДНОЙ), OUTPUT (ВЫХОДНОЙ) и I-O (ВХОДНОЙ-ВЫХОДНОЙ) | х | x |
несколько EXTEND (ДОПОЛНЯЕМЫЙ) | - | x |
Оператор READ (ЧИТАТЬ) | х | x |
фраза NEXT (СЛЕДУЮЩУЮ) | - | x |
фраза INTO (В) | x | x |
фраза AT END (В КОНЦЕ) | x | x |
фраза NOT AT END (HE В КОНЦЕ) | x | x |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | x | x |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | x | x |
фраза END-READ (КОНЕЦ-ЧИТАТЬ) | x | x |
Оператор REWRITE (ОБНОВИТЬ) | x | x |
фраза FROM (ИЗ ПОЛЯ) | x | x |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | x | x |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | x | x |
фраза END-REWRITE (КОНЕЦ-ОБНОВИТЬ) | x | x |
Оператор START (ПОДВЕСТИ) | - | x |
фраза KEY (КЛЮЧ) | - | x |
EQUAL TO (РАВНО) | - | x |
= | - | x |
GREATER THAN (БОЛЬШЕ) | - | x |
> | - | x |
NOT LESS THAN (HE МЕНЬШЕ) | - | x |
NOT < (HE td> | - | x |
GREATER THAN OR EQUAL TO (БОЛЬШЕ ИЛИ РАВНО) | - | x |
> = | - | x |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | - | x |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | - | x |
фраза END-START (КОНЕЦ-ПОДВЕСТИ) | - | x |
Оператор USE (ИСПОЛЬЗОВАТЬ) | x | x |
фраза EXCEPTION/ERROR PROCEDURE (ПРОЦЕДУРЫ ОШИБКИ) | х | х |
ON имя-файла (ДЛЯ имя-файла) | x | x |
ON несколько имен-файлов (ДЛЯ несколько имен-файлов) | - | х |
ON INPUT (ДЛЯ ВХОДНЫХ) | х | х |
ON OUTPUT (ДЛЯ ВЫХОДНЫХ) | x | х |
ON I-O (ДЛЯ ВХОДНЫХ-ВЫХОДНЫХ) | x | х |
ON EXTEND (ДЛЯ ДОПОЛНЯЕМЫХ) | - | х |
Оператор WRITE (ПИСАТЬ) | x | x |
фраза FROM (ИЗ ПОЛЯ) | x | x |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | x | х |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | x | x |
фраза END-WRITE (КОНЕЦ-ПИСАТЬ) | x | x |
Элемент | Уровень 1 | Уровень 2 |
ПОНЯТИЯ ЯЗЫКА | ||
Слова, определенные пользователем | ||
имя-файла | x | x |
имя-записи | x | x |
Состояние ввода-вывода | х | х |
РАЗДЕЛ ОБОРУДОВАНИЯ | ||
Секция ввода-вывода | ||
Параграф FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛАМИ) | x | x |
Статья управления файлом | x | x |
фраза SELECT (ДЛЯ) | x | x |
фраза OPTIONAL (НЕОБЯЗАТЕЛЬНОГО) | - | x |
только входные, входные-выходные и дополняемые файлы | - | x |
фраза ACCESS MODE (ДОСТУП) | x | x |
SEQUENTIAL (ПОСЛЕДОВАТЕЛЬНЫЙ) | x | x |
RANDOM (ПРОИЗВОЛЬНЫЙ) | x | x |
DYNAMIC (ДИНАМИЧЕСКИЙ) | - | x |
фраза ALTERNATE RECORD KEY (ДОПОЛНИТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ) | - | x |
фраза WITH DUPLICATES (С ДУБЛИРОВАНИЕМ) | - | x |
фраза ASSIGN (НАЗНАЧИТЬ) | x | x |
имя-реализации | x | x |
литерал | x | x |
фраза FILE STATUS (СОСТОЯНИЕ ФАЙЛА) | x | x |
фраза ORGANIZATION IS INDEXED (ОРГАНИЗАЦИЯ ИНДЕКСНАЯ) | x | x |
фраза RECORD KEY (КЛЮЧ ЗАПИСИ) | x | x |
фраза RESERVE (РЕЗЕРВИРОВАТЬ) | - | x |
Параграф I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ) | x | x |
фраза RERUN (ПЕРЕПРОГОН) | + | + |
фраза SAME AREA (ОБЩАЯ ОБЛАСТЬ) | x | x |
фраза SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ) | - | x |
РАЗДЕЛ ДАННЫХ | ||
Секция файлов | ||
Статья описания файла | x | x |
индикатор уровня FD (ОФ) | x | x |
фраза BLOCK CONTAINS (В БЛОКЕ) | x | x |
целое-1 RECORDS/CHARACTERS (целое-1 ЗАПИСЕЙ/ЛИТЕР) | x | x |
целое-1 ТО целое-2 RECORDS/CHARACTERS (целое-1 ДО целое-2 ЗАПИСЕЙ/ЛИТЕР) | - | x |
фраза DATA RECORDS (ЗАПИСИ ДАННЫХ) | + | + |
фраза LABEL RECORDS (МЕТКИ) | + | + |
фраза RECORD (В ЗАПИСИ) | x | x |
целое-1 CHARACTERS (целое-1 ЛИТЕР) | x | x |
фраза VARYING IN SIZE (ПЕРЕМЕННОЕ ЧИСЛО) | - | x |
FROM целое-2 ТО целое-3 CHARACTERS (ОТ целое-2 ДО целое-3 ЛИТЕР) | - | x |
фраза DEPENDING ON (В ЗАВИСИМОСТИ ОТ) | - | x |
целое-4 ТО целое-5 CHARACTERS (целое-4 ДО целое-5 ЛИТЕР) | x | x |
фраза VALUE (ЗНАЧЕНИЕ) | + | + |
имя-реализации литерал | + | + |
имя-реализации несколько литералов | + | + |
имя-реализации имя-данного | - | + |
имя-реализации несколько имен-данных | - | + |
Статья описания записи | x | x |
РАЗДЕЛ ПРОЦЕДУР | ||
Декларативные процедуры | х | x |
DECLARATIVES (ДЕКЛАРАТИВЫ) | х | x |
END DECLARATIVES (КОНЕЦ ДЕКЛАРАТИВ) | х | x |
Оператор CLOSE (ЗАКРЫТЬ) | х | x |
имя-файла | х | x |
несколько имен-файлов | х | x |
фраза WITH LOCK (С ЗАМКОМ) | - | x |
Оператор DELETE (УДАЛИТЬ) | х | x |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | х | x |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | х | х |
фраза END-DELETE (КОНЕЦ-УДАЛИТЬ) | х | x |
Оператор OPEN (ОТКРЫТЬ) | x | x |
имя-файла | x | x |
несколько имен-файлов | x | x |
фраза INPUT (ВХОДНОЙ) | x | x |
фраза OUTPUT (ВЫХОДНОЙ) | x | x |
фраза I-O (ВХОДНОЙ-ВЫХОДНОЙ) | x | x |
фраза EXTEND (ДОПОЛНЯЕМЫЙ) | x | x |
несколько INPUT (ВХОДНОЙ), OUTPUT (ВЫХОДНОЙ) и I-O (ВХОДНОЙ-ВЫХОДНОЙ) | x | x |
несколько EXTEND (ДОПОЛНЯЕМЫЙ) | - | x |
Оператор READ (ЧИТАТЬ) | x | x |
фраза NEXT (СЛЕДУЮЩУЮ) | - | x |
фраза INTO (В) | x | x |
фраза AT END (В КОНЦЕ) | x | x |
фраза NOT AT END (HE В КОНЦЕ) | x | x |
фраза KEY (КЛЮЧ) | - | x |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | х | x |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | х | х |
фраза END-READ (КОНЕЦ-ЧИТАТЬ) | х | x |
Оператор REWRITE (ОБНОВИТЬ) | x | x |
фраза FROM (ИЗ ПОЛЯ) | х | x |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | х | x |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | х | х |
фраза END-REWRITE (КОНЕЦ-ОБНОВИТЬ) | x | x |
Оператор START (ПОДВЕСТИ) | - | x |
фраза KEY (КЛЮЧ) | x | x |
EQUAL ТО (РАВНО) | - | x |
= | - | x |
GREATER THAN (БОЛЬШЕ) | - | x |
> | - | x |
NOT LESS THAN (HE МЕНЬШЕ) | - | x |
NOT < (HE td> | - | x |
GREATER THAN OR EQUAL TO (БОЛЬШЕ ИЛИ РАВНО) | - | x |
> = | - | x |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | - | x |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | - | x |
фраза END-START (КОНЕЦ-ПОДВЕСТИ) | - | x |
Оператор USE (ИСПОЛЬЗОВАТЬ) | x | x |
фраза EXCEPTION/ERROR PROCEDURE (ПРОЦЕДУРЫ ОШИБКИ) | x | x |
ON имя-файла (ДЛЯ имя-файла) | x | x |
ON несколько имен-файлов (ДЛЯ несколько имен-файлов) | - | x |
ON INPUT (ДЛЯ ВХОДНЫХ) | х | х |
ON OUTPUT (ДЛЯ ВЫХОДНЫХ) | х | х |
ON I-O (ДЛЯ ВХОДНЫХ-ВЫХОДНЫХ) | х | x |
ON EXTEND (ДЛЯ ДОПОЛНЯЕМЫХ) | х | x |
Оператор WRITE (ПИСАТЬ) | х | x |
фраза FROM (ИЗ ПОЛЯ) | х | x |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | х | x |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | х | x |
фраза END-WRITE (КОНЕЦ-ПИСАТЬ) | х | x |
Элемент | Уровень 1 | Уровень 2 |
ПОНЯТИЯ ЯЗЫКА | ||
Структура исходной программы | ||
Вложенные исходные программы | - | x |
РАЗДЕЛ ИДЕНТИФИКАЦИИ | ||
Параграф PROGRAM-ID (ПРОГРАММА) | ||
фраза COMMON (ОБЩАЯ) | - | x |
фраза INITIAL (НАЧАЛЬНАЯ) | - | x |
РАЗДЕЛ ДАННЫХ | ||
Секция файлов | ||
Статья описания файла (индикатор уровня FD (ОФ)) | ||
фраза EXTERNAL (ВНЕШНЕЕ) | - | x |
фраза GLOBAL (ГЛОБАЛЬНОЕ) | - | x |
Статья описания данного (номер уровня 01) | ||
фраза GLOBAL (ГЛОБАЛЬНОЕ) | - | x |
Секция рабочей памяти | ||
Статья описания данного (номер уровня 01) | ||
фраза EXTERNAL (ВНЕШНЕЕ) | - | x |
фраза GLOBAL (ГЛОБАЛЬНОЕ) | - | x |
Секция связи | x | x |
Статья описания записи | x | x |
Статья описания данного с уровнем 77 | x | x |
Секция отчетов | ||
Статья описания отчета (индикатор уровня RD (00)) | ||
фраза GLOBAL (ГЛОБАЛЬНОЕ) | - | x |
РАЗДЕЛ ПРОЦЕДУР | ||
Заголовок раздела процедур | ||
фраза USING (ИСПОЛЬЗУЯ) | x | x |
разрешается по крайней мере 5 операндов | x | - |
нет ограничения на число операндов | - | x |
Оператор CALL (ВЫЗВАТЬ) | x | x |
литерал | х | х |
идентификатор | - | х |
фраза USING (ИСПОЛЬЗУЯ) | x | x |
идентификатор | x | x |
разрешается по крайней мере 5 операндов | х | - |
нет ограничения на число операндов | - | x |
фраза BY REFERENCE (ССЫЛКУ) | - | х |
фраза BY CONTENT (ЗНАЧЕНИЕ) | - | x |
фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) | - | x |
фраза ON EXCEPTION (ПРИ ОШИБКЕ) | - | x |
фраза NOT ON EXCEPTION (БЕЗ ОШИБКИ) | - | x |
фраза END-CALL (КОНЕЦ-ВЫЗВАТЬ) (формат 1) | x | x |
фраза END-CALL (КОНЕЦ-ВЫЗВАТЬ) (формат 2) | - | x |
Оператор CANCEL (ОСВОБОДИТЬ) | - | x |
литерал | - | x |
идентификатор | - | x |
Оператор EXIT PROGRAM (ВЫЙТИ ИЗ ПРОГРАММЫ) | х | х |
Оператор USE (ИСПОЛЬЗОВАТЬ) | ||
фраза EXCEPTION/ERROR PROCEDURE (ПРОЦЕДУРЫ ОШИБКИ) | ||
фраза GLOBAL (ГЛОБАЛЬНО) | - | x |
Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) | ||
фраза GLOBAL (ГЛОБАЛЬНО) | - | x |
Элемент | Уровень 1 |
ПОНЯТИЯ ЯЗЫКА | |
Слова, определенные пользователем | |
имя-файла | x |
имя-записи | x |
РАЗДЕЛ ОБОРУДОВАНИЯ | |
Секция ввода-вывода | |
Параграф FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛАМИ) | x |
Статья управления файлом | x |
фраза SELECT (ДЛЯ) | x |
фраза ASSIGN (НАЗНАЧИТЬ) | x |
имя-реализации | x |
литерал | x |
Параграф I-O-CONTROL (УПРАВЛЕНИЕ ВВОДОМ-ВЫВОДОМ) | x |
фраза SAME SORT/SORT-MERGE AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ/СОРТИРОВКИ-СЛИЯНИЯ) | x |
фраза SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ) | x |
РАЗДЕЛ ДАННЫХ | |
Секция файлов | |
Статья описания сортируемого-сливаемого файла | x |
индикатор уровня SD (00) | x |
фраза DATA RECORDS (ЗАПИСИ ДАННЫХ) | + |
фраза RECORD (В ЗАПИСИ) | x |
целое-1 CHARACTERS (целое-1 ЛИТЕР) | x |
фраза VARYING IN SIZE (ПЕРЕМЕННОЕ ЧИСЛО) | x |
FROM целое-2 ТО целое-3 CHARACTERS (ОТ целое-2 ДО целое-3 ЛИТЕР) | x |
фраза DEPENDING ON (В ЗАВИСИМОСТИ ОТ) | x |
целое-4 ТО целое-5 CHARACTERS (целое-4 ДО целое-5 ЛИТЕР) | x |
Статья описания записи | x |
РАЗДЕЛ ПРОЦЕДУР | |
Оператор MERGE (СЛИТЬ) | x |
фраза ASCENDING/DESCENDING KEY (ПО ВОЗРАСТАНИЮ/УБЫВАНИЮ КЛЮЧА) | x |
фраза COLLATING SEQUENCE (АЛФАВИТ) | x |
фраза USING (ИСПОЛЬЗУЯ) | x |
фраза OUTPUT PROCEDURE (ПРОЦЕДУРА ВЫВОДА) | x |
имя-процедуры | x |
фраза GIVING (ПОЛУЧАЯ) | x |
Оператор RELEASE (ПЕРЕДАТЬ) | x |
фраза FROM (ИЗ ПОЛЯ) | x |
Оператор RETURN (ВЕРНУТЬ) | x |
фраза INTO (В) | x |
фраза AT END (В КОНЦЕ) | x |
фраза NOT AT END (HE В КОНЦЕ) | x |
фраза END-RETURN (КОНЕЦ-ВЕРНУТЬ) | x |
Оператор SORT (СОРТИРОВАТЬ) | x |
фраза ASCENDING/DESCENDING KEY (ПО ВОЗРАСТАНИЮ/УБЫВАНИЮ КЛЮЧА) | x |
фраза WITH DUPLICATES (С ДУБЛИРОВАНИЕМ) | x |
фраза COLLATING SEQUENCE (АЛФАВИТ) | х |
фраза INPUT PROCEDURE (ПРОЦЕДУРА ВВОДА) | x |
имя-процедуры | х |
фраза USING (ИСПОЛЬЗУЯ) | x |
фраза OUTPUT PROCEDURE (ПРОЦЕДУРА ВЫВОДА) | x |
имя-процедуры | x |
фраза GIVING (ПОЛУЧАЯ) | x |
Элемент | Уровень 1 | Уровень 2 |
ПОНЯТИЯ ЯЗЫКА | ||
Набор литер | ||
Литеры, используемые в пунктуации = | - | x |
Слова, определенные пользователем | ||
имя-библиотеки | - | x |
имя-текста | x | x |
ВСЕ РАЗДЕЛЫ | ||
Оператор COPY (КОПИРОВАТЬ) | x | x |
фраза OF/IN имя-библиотеки (ИЗ имя-библиотеки) | - | х |
фраза REPLACING (ЗАМЕНЯЯ) | - | x |
псевдотекст | - | x |
идентификатор | - | x |
литерал | - | x |
слово | - | х |
Оператор REPLACE (ЗАМЕНИТЬ) | - | x |
псевдотекст BY псевдотекст (псевдотекст НА псевдотекст) | - | x |
OFF (ОТКЛЮЧИТЬ) | - | x |
Элемент | Уровень 1 |
ПОНЯТИЯ ЯЗЫКА | |
Слова, определенные пользователем | |
имя-файла | x |
имя-отчета | x |
Зарезервированные слова | |
Специальные регистры | |
LINE-COUNTER (СЧЕТЧИК-СТРОК) | x |
PAGE-COUNTER (СЧЕТЧИК-СТРАНИЦ) | x |
РАЗДЕЛ ОБОРУДОВАНИЯ | |
Секция ввода-вывода | |
Параграф FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛАМИ) | x |
Статья управления файлом | x |
фраза SELECT (ДЛЯ) | x |
фраза OPTIONAL (НЕОБЯЗАТЕЛЬНОГО) | x |
только дополняемые файлы | x |
фраза ACCESS MODE IS SEQUENTIAL (ДОСТУП ПОСЛЕДОВАТЕЛЬНЫЙ) | x |
фраза ASSIGN (НАЗНАЧИТЬ) | x |
имя-реализации | x |
литерал | x |
фраза FILE STATUS (СОСТОЯНИЕ ФАЙЛА) | x |
фраза ORGANIZATION IS SEQUENTIAL (ОРГАНИЗАЦИЯ ПОСЛЕДОВАТЕЛЬНАЯ) | x |
фраза PADDING CHARACTER (ЛИТЕРА ЗАПОЛНИТЕЛЬ) | x |
фраза RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ) | x |
фраза RESERVE (РЕЗЕРВИРОВАТЬ) | x |
Параграф I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ) | x |
фраза MULTIPLE FILE TAPE (НА ОДНОЙ КАТУШКЕ) | + |
фраза SAME AREA (ОБЩАЯ ОБЛАСТЬ) | x |
РАЗДЕЛ ДАННЫХ | |
Секция файлов | |
Статья описания файла | x |
индикатор уровня FD (ОФ) | x |
фраза BLOCK CONTAINS (В БЛОКЕ) | x |
целое RECORDS/CHARECTERS (целое ЗАПИСЕЙ/ЛИТЕР) | x |
целое-1 ТО целое-2 RECORDS/CHARACTERS (целое-1 ДО целое-2 ЗАПИСЕЙ/ЛИТЕР) | x |
фраза CODE-SET (АЛФАВИТ) | x |
фраза LABEL RECORDS (МЕТКИ) | + |
фраза RECORD (В ЗАПИСИ) | x |
целое-1 CHARACTERS (целое-1 ЛИТЕР) | x |
целое-4 ТО целое-5 CHARACTERS (целое-4 ДО целое-5 ЛИТЕР) | х |
фраза REPORT (ОТЧЕТ) | x |
фраза VALUE OF (ЗНАЧЕНИЕ) | + |
имя-реализации литерал | + |
имя-реализации несколько литералов | + |
имя-реализации имя-данного | + |
имя-реализации несколько имен-данных | + |
Секция отчетов | |
Статья описания отчета | x |
индикатор уровня RD (00) | x |
фраза CODE (С КОДОМ) | x |
фраза CONTROL (УПРАВЛЕНИЕ) | x |
фраза PAGE (РАЗМЕР СТРАНИЦЫ) | x |
Статья описания группы отчета | x |
фраза BLANK WHEN ZERO (ПРОБЕЛ КОГДА НУЛЬ) | x |
фраза COLUMN NUMBER (НОМЕР СТОЛБЦА) | x |
фраза имя-данного | x |
фраза GROUP INDICATE (ОПРЕДЕЛЯЕТ ГРУППУ) | x |
фраза JUSTIFIED (СДВИНУТО) | x |
фраза номер-уровня | x |
от 01 до 49; представление одной или двумя цифрами | x |
фраза LINE NUMBER (НОМЕР СТРОКИ) | x |
фраза NEXT GROUP (СЛЕДУЮЩАЯ ГРУППА) | x |
фраза PICTURE (ШАБЛОН) | x |
фраза SIGN (ЗНАК) | x |
фраза SOURCE (ИСТОЧНИК) | x |
фраза SUM (СУММА) | x |
фраза TYPE (ТИП) | x |
фраза USAGE (об использовании) | x |
DISPLAY (ДЛЯ ВЫДАЧИ) | x |
фраза VALUE (ЗНАЧЕНИЕ) | x |
литерал | x |
РАЗДЕЛ ПРОЦЕДУР | |
Декларативные процедуры | x |
DECLARATIVES (ДЕКЛАРАТИВЫ) | х |
END DECLARATIVES (КОНЕЦ ДЕКЛАРАТИВ) | x |
Оператор CLOSE (ЗАКРЫТЬ) | x |
фраза REEL/UNIT (КАТУШКУ/ТОМ) | x |
фраза FOR REMOVAL (С УДАЛЕНИЕМ) | x |
фраза WITH NO REWIND (БЕЗ ПЕРЕМОТКИ) | x |
Оператор GENERATE (ГЕНЕРИРОВАТЬ) | x |
имя-данного | x |
имя-отчета | x |
Оператор INITIATE (НАЧАТЬ) | x |
Оператор OPEN (ОТКРЫТЬ) | x |
фраза OUTPUT (ВЫХОДНОЙ) | x |
фраза WITH NO REWIND (БЕЗ ПЕРЕМОТКИ) | x |
фраза EXTEND (ДОПОЛНЯЕМЫЙ) | x |
Оператор SUPPRESS (ПОДАВИТЬ) | x |
Оператор TERMINATE (ЗАКОНЧИТЬ) | x |
Оператор USE (ИСПОЛЬЗОВАТЬ) | x |
фраза EXCEPTION/ERROR PROCEDURE (ПРОЦЕДУРЫ ОШИБКИ) | x |
ON имя-файла (ДЛЯ имя-файла) | x |
ON несколько имен-файлов (ДЛЯ несколько имен-файлов) | x |
ON OUTPUT (ДЛЯ ВЫХОДНЫХ) | x |
ON EXTEND (ДЛЯ ДОПОЛНЯЕМЫХ) | x |
фраза BEFORE REPORTING (ДО ВЫДАЧИ) | x |
Элемент | Уровень 1 | Уровень 2 |
ПОНЯТИЯ ЯЗЫКА | ||
Слова, определенные пользователем имя-коммуникации | x | x |
РАЗДЕЛ ДАННЫХ | ||
Секция коммуникации | ||
Статья описания коммуникации | х | x |
индикатор уровня CD (ОК) | x | x |
фраза FOR INPUT (ДЛЯ ВВОДА) | x | x |
фраза INITIAL (НАЧАЛЬНОГО) | - | x |
фраза END KEY (КЛЮЧ КОНЦА) | x | x |
фраза MESSAGE COUNT (ЧИСЛО СООБЩЕНИЙ) | x | x |
фраза MESSAGE DATA (ДАТА СООБЩЕНИЯ) | x | x |
фраза MESSAGE TIME (ВРЕМЯ СООБЩЕНИЯ) | x | x |
фраза SYMBOLIC QUEUE (СИМВОЛИЧЕСКАЯ ОЧЕРЕДЬ) | x | x |
фраза SYMBOLIC SOURCE (СИМВОЛИЧЕСКИЙ ИСТОЧНИК) | x | x |
фраза SYMBOLIC SUB-QUEUE-1 (СИМВОЛИЧЕСКАЯ ПОДОЧЕРЕДЬ-1) | - | x |
фраза SYMBOLIC SUB-QUEUE-2 (СИМВОЛИЧЕСКАЯ ПОДОЧЕРЕДЬ-2) | - | х |
фраза SYMBOLIC-SUB-QUEUE-3 (СИМВОЛИЧЕСКАЯ ПОДОЧЕРЕДЬ-3) | - | x |
фраза STATUS KEY (КЛЮЧ СОСТОЯНИЯ) | x | x |
фраза TEXT LENGTH (ДЛИНА ТЕКСТА) | x | x |
несколько имен-данных | - | x |
фраза FOR OUTPUT (ДЛЯ ВЫВОДА) | x | x |
фраза DESTINATION COUNT (ЧИСЛО АДРЕСАТОВ) | x | x |
должен быть один | x | - |
может быть один или несколько | - | x |
фраза DESTINATION TABLE (ТАБЛИЦА АДРЕСАТОВ) | - | x |
фраза INDEXED BY (ИНДЕКСИРУЕТСЯ) | - | х |
фраза ERROR KEY (КЛЮЧ ОШИБКИ) | x | x |
фраза SYMBOLIC DESTINATION (СИМВОЛИЧЕСКИЙ АДРЕСАТ) | x | x |
фраза STATUS KEY (КЛЮЧ СОСТОЯНИЯ) | х | x |
фраза TEXT LENGTH (ДЛИНА ТЕКСТА) | х | x |
фраза I-O (ДЛЯ ВВОДА-ВЫВОДА) | х | x |
фраза INITIAL (НАЧАЛЬНОГО) | - | x |
фраза END KEY (КЛЮЧ КОНЦА) | х | x |
фраза MESSAGE DATE (ДАТА СООБЩЕНИЯ) | х | x |
фраза MESSAGE TIME (ВРЕМЯ СООБЩЕНИЯ) | х | x |
фраза STATUS KEY (КЛЮЧ СОСТОЯНИЯ) | x | х |
фраза SYMBOLIC TERMINAL (СИМВОЛИЧЕСКИЙ ТЕРМИНАЛ) | x | x |
фраза TEXT LENGTH (ДЛИНА ТЕКСТА) | x | x |
несколько имен-данных | - | х |
Статья описания записи | x | x |
РАЗДЕЛ ПРОЦЕДУР | ||
Оператор ACCEPT MESSAGE COUNT (ПРИНЯТЬ ЧИСЛО СООБЩЕНИЙ) | x | x |
Оператор DISABLE (ЗАПРЕТИТЬ) | - | x |
фраза INPUT (ВВОД) | - | x |
фраза TERMINAL (С ТЕРМИНАЛА) | - | x |
фраза I-O TERMINAL (ВВОД-ВЫВОД С ТЕРМИНАЛА) | - | x |
фраза OUTPUT (ВЫВОД) | - | x |
фраза WITH KEY (КЛЮЧ) | - | + |
Оператор ENABLE (РАЗРЕШИТЬ) | - | x |
фраза INPUT (ВВОД) | - | x |
фраза TERMINAL (С ТЕРМИНАЛА) | - | x |
фраза I-O TERMINAL (ВВОД-ВЫВОД С ТЕРМИНАЛА) | - | x |
фраза OUTPUT (ВЫВОД) | - | x |
фраза WITH KEY (КЛЮЧ) | - | x |
Оператор PURGE (ОЧИСТИТЬ) | - | x |
Оператор RECEIVE (ПОЛУЧИТЬ) | x | x |
фраза MESSAGE (СООБЩЕНИЕ) | x | x |
фраза SEGMENT (СЕГМЕНТ) | - | x |
фраза INTO идентификатор (В идентификатор) | x | x |
фраза NO DATA (НЕТ ДАННЫХ) | x | x |
фраза WITH DATA (ЕСТЬ ДАННЫЕ) | x | x |
фраза END-RECEIVE (КОНЕЦ-ПОЛУЧИТЬ) | ||
Оператор SEND (ПОСЛАТЬ) | x | x |
FROM идентификатор (ИЗ ПОЛЯ идентификатор) (часть сообщения) | - | x |
FROM идентификатор (ИЗ ПОЛЯ идентификатор) (полное сообщение) | x | x |
фраза WITH идентификатор (С идентификатор) | - | x |
фраза WITH ESI (С ИКС) | - | x |
фраза WITH EMI (С ИКЩ) | x | x |
фраза WITH EGI (С ИКГ) | x | x |
фраза BEFORE/AFTER ADVANCING (ДО/ПОСЛЕ ПРОДВИЖЕНИЯ) | х | x |
целое-1 LINE/LINES (целое-1 СТРОК) | х | х |
идентификатор LINE/LINES (идентификатор СТРОК) | x | x |
мнемоническое-имя | - | х |
PAGE (СТРАНИЦЫ) | x | x |
REPLACING LINE (ЗАМЕНЯЯ СТРОКУ) | - | x |
Элемент | Уровень 1 | Уровень 2 |
ПОНЯТИЯ ЯЗЫКА | ||
Зарезервированные слова | ||
Специальный регистр DEBUG-ITEM (ДАННЫЕ-ОТЛАДКИ) | + | + |
РАЗДЕЛ ОБОРУДОВАНИЯ | ||
Секция конфигурации | ||
Параграф SOURCE-COMPUTER (ИСХОДНАЯ МАШИНА) | ||
фраза WITH DEBUGGING MODE (В РЕЖИМЕ ОТЛАДКИ) | + | + |
РАЗДЕЛ ПРОЦЕДУР | ||
Декларативные процедуры | ||
DECLARATIVES (ДЕКЛАРАТИВЫ) | + | + |
END DECLARATIVES (КОНЕЦ ДЕКЛАРАТИВ) | + | + |
Оператор USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ) | + | + |
имя-процедуры | + | + |
ALL PROCEDURES (ПРИ ВСЕХ ПРОЦЕДУРАХ) | + | + |
ALL REFERENCES идентификатор-1 (ПРИ ВСЕХ ССЫЛКАХ идентификатор-1) | - | + |
имя-коммуникации | - | + |
имя-файла | - | + |
Элемент | Уровень 1 | Уровень 2 |
ПОНЯТИЯ ЯЗЫКА | ||
Слова, определенные пользователем | ||
Номер сегмента | + | + |
РАЗДЕЛ ОБОРУДОВАНИЯ | ||
Параграф OBJECT-COMPUTER (РАБОЧАЯ-МАШИНА) | ||
фраза SEGMENT-LIMIT (ГРАНИЦА СЕГМЕНТОВ) | - | + |
РАЗДЕЛ ПРОЦЕДУР | ||
Номера-сегментов от 0 до 49 для постоянных сегментов | + | + |
Номера-сегментов от 50 до 99 для независимых сегментов | + | + |
Все секции, имеющие одинаковый номер сегмента, должны быть смежными в исходной программе | + | - |
Секции, имеющие одинаковый номер сегмента, могут быть несмежными в исходной программе | - | + |
Ядро | ЯДР |
Последовательный ввод-вывод | ПОД |
Относительный ввод-вывод | ОТД |
Индексный ввод-вывод | ИПД |
Межпрограммные связи | МПС |
Сортировка-слияние | СРТ |
Обработка исходных текстов | ОИТ |
Генератор отчетов | ГОТ |
Коммуникации | КОМ |
Отладка | ОТЛ |
Сегментация | СЕГ |
Элемент | Модуль |
3.2. Список элементов понятий языка | |
ПОНЯТИЯ ЯЗЫКА | |
Набор литер | |
Литеры, используемые для слов в английской нотации 0-9, А-Z, - (дефис) в русской нотации А-Я, D, F, G, I, J, L, N, Q, R, S, U, V, W, Y, Z, 0-9, - (дефис) | 1 ЯДР |
Литеры, используемые для пунктуации " ( ) . , ; пробел | 1 ЯДР |
Литеры, используемые для пунктуации : (двоеточие) | 2 ЯДР |
Литеры, используемые для пунктуации = | 1 ОИТ |
Литеры, используемые в арифметических операциях + - * / ** | 2 ЯДР |
Литеры, используемые в отношениях = > < > = < = | 1 ЯДР |
Литеры, используемые в редактировании В + - . , Z (П) * 0 CR (КР) DB (ДБ) / | 1 ЯДР |
Литеры, используемые при индексировании + - | 1 ЯДР |
Разрешена замена одной литерой | 1 ЯДР |
Разрешена замена двумя литерами | 1 ЯДР + |
Разделители | |
" ( ) . , ; пробел | 1 ЯДР |
: (двоеточие) | 2 ЯДР |
Строка-литер | |
Слова Кобола | |
Максимум 30 литер | 1 ЯДР |
Слова, определенные пользователем | |
имя-алфавита | 1 ЯДР |
имя-библиотеки | 2 ОИТ |
имя данного | 1 ЯДР |
имя записи | 1 ПОД |
1ОТД | |
1 ИПД | |
1 СРТ | |
имя индекса | 1 ЯДР |
имя класса | 1 ЯДР |
имя коммуникации | 1 КОМ |
имя отчета | 1 ГОТ |
имя параграфа | 1 ЯДР |
имя программного модуля | 1 ЯДР + |
имя программы | 1 ЯДР |
имя секции | 1 ЯДР |
имя текста | 1 ОИТ |
имя условия | 2 ЯДР |
имя файла | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 СРТ | |
1 ГОТ | |
мнемоническое имя | 1 ЯДР |
номер сегмента | 1 СЕГ + |
номер уровня | 1 ЯДР |
символическая литера | 2 ЯДР |
Системные имена | |
имя машины | 1 ЯДР |
имя реализации | 1 ЯДР |
имя языка | 1 ЯДР + |
Зарезервированные слова | |
Обязательные слова | 1 ЯДР |
Ключевые слова | 1 ЯДР |
Слова специальные литеры | |
знаки арифметических операций + - * / ** | 2 ЯДР |
знаки арифметических операций при индексировании + - | 1 ЯДР |
литеры отношения = > < > = < = | 1 ЯДР |
Необязательные слова | 1 ЯДР |
Слова специального назначения | |
Стандартные константы: ZERO (НУЛЬ), ZEROS, ZEROES (НУЛИ), SPACE (ПРОБЕЛ), SPACES (ПРОБЕЛЫ), HIGH-VALUE (НАИБОЛЬШЕЕ-ЗНАЧЕНИЕ), HIGH-VALUES (НАИБОЛЬШИЕ-ЗНАЧЕНИЯ), LOW-VALUE (НАИМЕНЬШЕЕ-ЗНАЧЕНИЕ), LOW-VALUES (НАИМЕНЬШИЕ-ЗНАЧЕНИЯ), QUOTE (КАВЫЧКА), QUOTES (КАВЫЧКИ) | 1 ЯДР |
Стандартные константы: символическая-литера, ALL литерал (ВСЕ литерал), ALL стандартная-константа (ВСЕ стандартная-константа), ALL символическая-литера (ВСЕ символическая-литера) | 2 ЯДР |
Специальные регистры | |
LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) | 2 ПОД |
LINE-COUNTER (СЧЕТЧИК-СТРОК) | 1 ГОТ |
PAGE-COUNTER (СЧЕТЧИК-СТРАНИЦ) | 1 ГОТ |
DEBUG-ITEM (ДАННЫЕ-ОТЛАДКИ) | 1 ОТЛ + |
Литералы | |
Числовые литералы: от 1 до 18 цифр | 1 ЯДР |
Нечисловые литералы: от 1 до 160 литер | 1 ЯДР |
строка-литер (ШАБЛОН строка-литер) | 1 ЯДР |
Статья-комментарий | 1 ЯДР + |
Однозначность ссылки | |
Уточнение | |
уточнение недопустимо, имена должны быть однозначны при ссылке | 1 ЯДР |
50 уточнителей | 2 ЯДР |
Индексирование | |
3 уровня индексов | 1 ЯДР |
7 уровней индексов | 2 ЯДР |
индексирование литералом | 1 ЯДР |
индексирование именем-данного | 1 ЯДР |
индексирование именем-индекса | 1 ЯДР |
относительное индексирование | 1 ЯДР |
Модификация ссылки | 2 ЯДР |
Формат представления | |
Порядковый номер | 1 ЯДР |
Продолжение строк | |
продолжение нечисловых литералов | 1 ЯДР |
продолжение слов Кобола, числовых литералов, строк-литер шаблона | 2 ЯДР |
Строки пробелов | 1 ЯДР |
Строки комментария | |
строки комментария со звездочкой ( * ) | 1 ЯДР |
строки комментария с дробной чертой ( / ) | 1 ЯДР |
Отладочная строка с литерой D (Т) в поле индикатора | 1 ЯДР |
Структура исходной программы | |
Раздел идентификации обязателен | 1 ЯДР |
Раздел оборудования необязателен | 1 ЯДР |
Раздел данных необязателен | 1 ЯДР |
Раздел процедур необязателен | 1 ЯДР |
Заголовок конца программы | 2 ЯДР |
Вложенные исходные программы | 2 МПС |
3.3. Список элементов раздела идентификации | |
РАЗДЕЛ ИДЕНТИФИКАЦИИ | |
Параграф PROGRAM-1D (ПРОГРАММА) | 1 ЯДР |
имя-параграфа | 1 ЯДР |
фраза COMMON (ОБЩАЯ) | 2 МПС |
фраза INITIAL (НАЧАЛЬНАЯ) | 2 МПС |
Параграф AUTHOR (АВТОР) | 1 ЯДР + |
Параграф INSTALLATION (ПРЕДПРИЯТИЕ) | 1 ЯДР + |
Параграф DATE-WRITTEN (ДАТА-НАПИСАНИЯ) | 1 ЯДР + |
Параграф DATE-COMPILED (ДАТА-ТРАНСЛЯЦИИ) | 2 ЯДР + |
Параграф SECURITY (ПОЛНОМОЧИЯ) | 1 ЯДР + |
Обработка исходных текстов в разделе идентификации | |
Оператор COPY (КОПИРОВАТЬ) | 1 ОИТ |
OF/IN имя-библиотеки (ИЗ имя-библиотеки) | 2 ОИТ |
фраза REPLACING (ЗАМЕНЯЯ) | 2 ОИТ |
псевдотекст | 2 ОИТ |
идентификатор | 2 ОИТ |
литерал | 2 ОИТ |
слово | 2 ОИТ |
Оператор REPLACE (ЗАМЕНИТЬ) | 2 ОИТ |
псевдотекст BY псевдотекст (псевдотекст НА псевдотекст) | 2 ОИТ |
OFF (ОТКЛЮЧИТЬ) | 2 ОИТ |
3.4. Список элементов раздела оборудования | |
РАЗДЕЛ ОБОРУДОВАЦИЯ | |
Секция конфигурации | 1 ЯДР |
Параграф SOURCE-COMPUTER (ИСХОДНАЯ-МАШИНА) | 1 ЯДР |
имя-машины | 1 ЯДР |
фраза WITH DEBUGGING MODE (В РЕЖИМЕ ОТЛАДКИ) | 1 ЯДР |
1 ОТЛ + | |
Параграф OBJECT-COMPUTER (РАБОЧАЯ-МАШИНА) | 1 ЯДР |
имя-машины | 1 ЯДР |
фраза MEMORY SIZE (РАЗМЕР ПАМЯТИ) | 1 ЯДР + |
фраза PROGRAM COLLATING SEQUENCE (ПРОГРАММНЫЙ-АЛФАВИТ) | 1 ЯДР |
фраза SEGMENT-LIMIT (ГРАНИЦА СЕГМЕНТОВ) | 1 СЕГ + |
Параграф SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА) | 1 ЯДР |
фраза ALPHABET (АЛФАВИТ) | 1 ЯДР |
вариант STANDARD-1 (СТАНДАРТ-А) | 1 ЯДР |
вариант STANDARD-2 (СТАНДАРТ-М) | 1 ЯДР |
вариант NATIVE (ВНУТРЕННИЙ) | 1 ЯДР |
вариант имя-реализации | 1 ЯДР |
вариант литерал | 2 ЯДР |
фраза CLASS (КЛАСС) | 1 ЯДР |
фраза CURRENCY SIGN (ВАЛЮТНЫЙ ЗНАК) | 1 ЯДР |
фраза DECIMAL-POINT (ДЕСЯТИЧНАЯ ТОЧКА) | 1 ЯДР |
фраза имя-реализации | 1 ЯДР |
вариант IS мнемоническое имя | 1 ЯДР |
вариант ON STATUS IS имя-условия (ВКЛЮЧЕНО имя-условия) | 1 ЯДР |
вариант OFF STATUS IS имя-условия (ВЫКЛЮЧЕНО имя-условия) | 1 ЯДР |
фраза SYMBOLIC CHARACTERS (СИМВОЛИЧЕСКАЯ ЛИТЕРА) | 2 ЯДР |
Секция ввода-вывода | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 СРТ | |
1 ГОТ | |
Параграф FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛАМИ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 СРТ | |
1 ГОТ | |
Статья управления файлом | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 СРТ | |
1 ГОТ | |
фраза SELECT (ДЛЯ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 СРТ | |
1 ГОТ | |
вариант OPTIONAL (НЕОБЯЗАТЕЛЬНО) | 2 ПОД |
2 ОТД | |
2 ИПД | |
1 ГОТ | |
только входные, входные-выходные и дополняемые | 2 ПОД |
2 ОТД | |
2 ИПД | |
только дополняемые фраза ACCESS MODE (ДОСТУП) | 1 ГОТ |
SEQUENTIAL (ПОСЛЕДОВАТЕЛЬНЫЙ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
RANDOM (ПРОИЗВОЛЬНЫЙ) | 1 ОТД |
1 ИПД | |
DYNAMIC (ДИНАМИЧЕСКИЙ) | 2 ОТД |
2 ИПД | |
фраза RELATIVE KEY (ОТНОСИТЕЛЬНЫЙ КЛЮЧ) | 1 ОТД |
фраза ALTERNATE RECORD KEY (ДОПОЛНИТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ) | 2 ИПД |
фраза WITH DUPLICATES (С ДУБЛИРОВАНИЕМ) | 2 ИПД |
фраза ASSIGN (НАЗНАЧИТЬ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 СРТ | |
1 ГОТ | |
имя-реализации | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 СРТ | |
литерал | 1 ГОТ |
1 ПОД | |
1 ОТД | |
1 ИПД | |
1 СРТ | |
1 ГОТ | |
фраза FILE STATUS (СОСТОЯНИЕ ФАЙЛА) | 1 ПОД |
1 ОТД | |
1 ИПД | |
фраза ORGANIZATION (ОРГАНИЗАЦИЯ) | 1 ГОТ |
SEQUENTIAL (ПОСЛЕДОВАТЕЛЬНАЯ) | 1 ПОД |
1 ГОТ | |
RELATIVE (ОТНОСИТЕЛЬНАЯ) | 1 ОТД |
INDEXED (ИНДЕКСНАЯ) | 1 ИПД |
фраза PADDING CHARACTER (ЛИТЕРА ЗАПОЛНИТЕЛЬ) | 2 ПОД |
1 ГОТ | |
фраза RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ) | 2 ПОД |
1 ГОТ | |
фраза RECORD KEY (КЛЮЧ ЗАПИСИ) | 1 ИПД |
фраза RESERVE AREA (РЕЗЕРВИРОВАТЬ) | 2 ПОД |
2 ОТД | |
2 ИПД | |
1 ГОТ | |
Параграф I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 СРТ | |
1 ГОТ | |
фраза MULTIPLE FILE TAPE (НА ОДНОЙ КАТУШКЕ) | 2 ПОД + |
1 ГОТ + | |
фраза RERUN (ПЕРЕПРОГОН) | 1 ПОД + |
1 ГОТ + | |
1 ИПД + | |
фраза SAME AREA (ОБЩАЯ ОБЛАСТЬ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
фраза SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ) | 2 ПОД |
2 ОТД | |
2 ИПД | |
1 СРТ | |
фраза SAME SORT/SORT-MERGE AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ/СОРТИРОВКИ-СЛИЯНИЯ) | 1 СРТ |
Обработка исходных текстов в разделе оборудования | |
Оператор COPY (КОПИРОВАТЬ) | 1 ОИТ |
OF/IN имя-библиотеки (ИЗ имя-библиотеки) | 2 ОИТ |
фраза REPLACING (ЗАМЕНЯЯ) | 2 ОИТ |
псевдотекст | 2 ОИТ |
идентификатор | 2 ОИТ |
литерал | 2 ОИТ |
слово | 2 ОИТ |
Оператор REPLACE (ЗАМЕНИТЬ) | 2 ОИТ |
псевдотекст BY псевдотекст (псевдотекст НА псевдотекст) | 2 ОИТ |
OFF (ОТКЛЮЧИТЬ) | 2 ОИТ |
3.4. Список элементов раздела данных __________________ * Нумерация соответствует оригиналу. - Примечание изготовителя базы данных. | |
РАЗДЕЛ ДАННЫХ | 1 ПОД |
Секция файлов | 1 ОТД |
1 ИПД | |
1 СРТ | |
1 ГОТ | |
Статья описания файла | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
индикатор уровня FD (ОФ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
фраза BLOCK CONTAINS (В БЛОКЕ) | |
целое RECORDS/CHARACTERS (целое ЗАПИСЕЙ/ЛИТЕР) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
целое-1 ТО целое-2 RECORDS/CHARACTERS (целое-1 ДО целое-2 ЗАПИСЕЙ/ЛИТЕР) | 2 ПОД |
2 ОТД | |
2 ИПД | |
1 ГОТ | |
фраза CODE-SET (АЛФАВИТ) | 1 ПОД |
1 ГОТ | |
фраза DATA RECORDS (ЗАПИСИ ДАННЫХ) | 1 ПОД + |
1 ОТД + | |
1 ИПД + | |
фраза EXTERNAL (ВНЕШНЕЕ) | 2 МПС |
фраза GLOBAL (ГЛОБАЛЬНОЕ) | 2 МПС |
фраза LABEL RECORDS (МЕТКИ) | 1 ПОД + |
1 ОТД + | |
1 ИПД + | |
1 ГОТ+ | |
фраза LINAGE (ВЕРСТКА) | 2 ПОД |
фраза FOOTING (КОНЦОВКА) | 2 ПОД |
фраза ТОР (ВЕРХНЕЕ ПОЛЕ) | 2 ПОД |
фраза BOTTOM (НИЖНЕЕ ПОЛЕ) | 2 ПОД |
фраза RECORD (В ЗАПИСИ) | |
целое-1 CHARACTERS (целое-1 ЛИТЕР) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
фраза VARYING IN SIZE (ПЕРЕМЕННОЕ ЧИСЛО) | 2 ПОД |
2 ОТД | |
2 ИПД | |
целое-4 ТО целое-5 CHARACTERS (целое-4 ДО целое-5 ЛИТЕР) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
фраза REPORT (ОТЧЕТ) | 1 ГОТ |
фраза VALUE OF (ЗНАЧЕНИЕ) | |
имя-реализации литерал | 1 ПОД + |
1 ОТД + | |
1 ИПД + | |
1 ГОТ + | |
имя-реализации несколько литералов | 1 ПОД + |
1 ОТД + | |
1 ИПД + | |
1 ГОТ + | |
имя-реализации имя-данного | 2 ПОД + |
2 ОТД + | |
2 ИПД + | |
1 ГОТ + | |
имя-реализации несколько имен-данных | 2 ПОД + |
2 ОТД + | |
2 ИПД + | |
1 ГОТ + | |
Статья описания сортируемого-сливаемого файла | 1 СРТ |
индикатор уровня SD (ОС) | 1 СРТ |
фраза DATA RECORDS (ЗАПИСИ ДАННЫХ) | 1 СРТ + |
фраза RECORD (В ЗАПИСИ) | |
целое-1 CHARACTERS (целое-1 ЛИТЕР) | 1 СРТ |
фраза VARYING IN SIZE (ПЕРЕМЕННОЕ ЧИСЛО) | 1 СРТ |
целое-4 ТО целое-5 CHARACTERS (целое-4 ДО целое-5 ЛИТЕР) | 1 СРТ |
Статья описания записи в секции файлов | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 СРТ | |
Секция рабочей памяти | 1 ЯДР |
Статья описания записи | 1 ЯДР |
Статья описания уровня 77 | 1 ЯДР |
Секция связи | 1 МПС |
Статья описания записи | 1 МПС |
Статья описания уровня 77 | 1 МПС |
Секция коммуникаций | 1 КОМ |
Статья описания коммуникации | 1 КОМ |
индикатор уровня CD (ОК) | 1 КОМ |
фраза FOR INPUT (ДЛЯ ВВОДА) | 1 КОМ |
фраза INITIAL (НАЧАЛЬНОГО) | 2 КОМ |
фраза END KEY (КЛЮЧ КОНЦА) | 1 КОМ |
фраза MESSAGE COUNT (ЧИСЛО СООБЩЕНИЙ) | 1 КОМ |
фраза MESSAGE DATE (ДАТА СООБЩЕНИЯ) | 1 КОМ |
фраза MESSAGE TIME (ВРЕМЯ СООБЩЕНИЯ) | 1 КОМ |
фраза SYMBOLIC QUEUE (СИМВОЛИЧЕСКАЯ ОЧЕРЕДЬ) | 1 КОМ |
фраза SYMBOLIC SOURCE (СИМВОЛИЧЕСКИЙ ИСТОЧНИК) | 1 КОМ |
фраза SYMBOLIC SUB-QUEUE-1 (СИМВОЛИЧЕСКАЯ ПОДОЧЕРЕДЬ-1) | 2 КОМ |
фраза SYMBOLIC SUB-QUEUE-2 (СИМВОЛИЧЕСКАЯ ПОДОЧЕРЕДЬ-2) | 2 КОМ |
фраза SYMBOLIC SUB-QUEUE-3 (СИМВОЛИЧЕСКАЯ ПОДОЧЕРЕДЬ-3) | 2 КОМ |
фраза STATUS KEY (КЛЮЧ СОСТОЯНИЯ) | 1 КОМ |
фраза TEXT LENGTH (ДЛИНА ТЕКСТА) | 1 КОМ |
несколько имен-данных | 2 КОМ |
фраза FOR OUTPUT (ДЛЯ ВЫВОДА) | 1 КОМ |
фраза DESTINATION COUNT (ЧИСЛО АДРЕСАТОВ) | 1 КОМ |
должен быть один | 1 КОМ |
должен быть один или несколько | 2 КОМ |
фраза DESTINATION TABLE (ТАБЛИЦА АДРЕСАТОВ) | 2 КОМ |
фраза INDEXED BY (ИНДЕКСИРУЕТСЯ) | 2 КОМ |
фраза ERROR KEY (КЛЮЧ ОШИБКИ) | 1 КОМ |
фраза SYMBOLIC DESTINATION (СИМВОЛИЧЕСКИЙ АДРЕСАТ) | 1 КОМ |
фраза STATUS KEY (КЛЮЧ СОСТОЯНИЯ) | 1 КОМ |
фраза TEXT LENGTH (ДЛИНА ТЕКСТА) | 1 КОМ |
фраза FOR I-O (ДЛЯ ВВОДА-ВЫВОДА) | 1 КОМ |
фраза INITIAL (НАЧАЛЬНОГО) | 2 КОМ |
фраза END KEY (КЛЮЧ КОНЦА) | 1 КОМ |
фраза MESSAGE DATA (ДАТА СООБЩЕНИЯ) | 1 КОМ |
фраза MESSAGE TIME (ВРЕМЯ СООБЩЕНИЯ) | 1 КОМ |
фраза STATUS KEY (КЛЮЧ СОСТОЯНИЯ) | 1 КОМ |
фраза SYMBOLIC TERMINAL (СИМВОЛИЧЕСКИЙ ТЕРМИНАЛ) | 1 КОМ |
фраза TEXT LENGTH (ДЛИНА ТЕКСТА) | 1 КОМ |
несколько имен-данных | 2 КОМ |
Статья описания записи | 1 КОМ |
Секция отчетов | 1 ГОТ |
Статья описания отчета | 1 ГОТ |
индикатор уровня RD (00) | 1 ГОТ |
фраза CODE (С КОДОМ) | 1 ГОТ |
фраза CONTROL (УПРАВЛЕНИЕ) | 1 ГОТ |
фраза GLOBAL (ГЛОБАЛЬНОЕ) | 2 МПС |
фраза PAGE (РАЗМЕР СТРАНИЦЫ) | 1 ГОТ |
Статья описания группы отчета | 1 ГОТ |
Следующие фразы появляются в статье описания записи, статье описания данного, статье описания уровня 77 и в статье описания группы отчета: | |
Фраза BLANK WHEN ZERO (ПРОБЕЛ КОГДА НУЛЬ) | 1 ЯДР |
1 ГОТ | |
Фраза COLUMN NUMBER (НОМЕР СТОЛБЦА) | 1 ГОТ |
Фраза имя-данного | 1 ЯДР |
1 ГОТ | |
Фраза EXTERNAL (ВНЕШНЕЕ) | 2 МПС |
Фраза FILLER (ЗАПОЛНИТЕЛЬ) | 1 ЯДР |
Фраза GLOBAL (ГЛОБАЛЬНОЕ) | 2 МПС |
Фраза GROUP INDICATE (ОПРЕДЕЛЯЕТ ГРУППУ) | 1 ГОТ |
Фраза JUSTIFIED (СДВИНУТО) | 1 ЯДР |
1 ГОТ | |
Фраза номер-уровня | 1 ЯДР |
от 01 до 49; одна или две цифры | 1 ЯДР |
1 ГОТ | |
66 | 2 ЯДР |
77 | 1 ЯДР |
88 | 2 ЯДР |
Фраза LINE NUMBER (НОМЕР СТРОКИ) | 1 ГОТ |
Фраза NEXT GROUP (СЛЕДУЮЩАЯ ГРУППА) | 1 ГОТ |
Фраза OCCURS (ПОВТОРЯЕТСЯ) | 1 ЯДР |
целое TIMES (целое РАЗ) | 1 ЯДР |
фраза ASCENDING/DESCENDING KEY (ПО ВОЗРАСТАНИЮ/УБЫВАНИЮ КЛЮЧА) | 2 ЯДР |
фраза INDEXED BY (ИНДЕКСИРУЕТСЯ) | 1 ЯДР |
фраза целое-1 ТО целое-2 DEPENDING ON (целое-1 ДО целое-2 В ЗАВИСИМОСТИ ОТ) | 2 ЯДР |
Фраза PICTURE (ШАБЛОН) | 1 ЯДР |
1 ГОТ | |
строка литер содержит не более 30 литер | 1 ЯДР |
1 ГОТ | |
литеры данных: X 9 А | 1 ЯДР |
1 ГОТ | |
операционные символы: S (З) V (T) P (M) | 1 ЯДР |
1 ГОТ | |
литеры фиксированной вставки В + - . , 0 CR (КР) DB (ДВ) / | 1 ЯДР |
1 ГОТ | |
литеры замещения или плавающей вставки + - Z (П) * | 1 ЯДР |
1 ГОТ | |
замена валютного знака | 1 ЯДР |
1 ГОТ | |
замена десятичной точки | 1 ЯДР |
1 ГОТ | |
Фраза REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ) | 1 ЯДР |
не может быть вложенной | 1 ЯДР |
может быть вложенной | 2 ЯДР |
Фраза RENAMES (ПЕРЕИМЕНОВЫВАЕТ) | 2 ЯДР |
Фраза SIGN (ЗНАК) | 1 ЯДР |
1 ГОТ | |
Фраза SOURCE (ИСТОЧНИК) | 1 ГОТ |
Фраза SUM (СУММА) | 1 ГОТ |
Фраза SYNCHRONIZED (ВЫДЕЛЕНО) | 1 ЯДР |
Фраза TYPE (ТИП) | 1 ГОТ |
Фраза USAGE (об использовании) | 1 ЯДР |
1 ГОТ | |
BINARY (ДВОИЧНОЕ) | 1 ЯДР |
COMPUTATIONAL (ДЛЯ ВЫЧИСЛЕНИЙ) | 1 ЯДР |
DISPLAY (ДЛЯ ВЫДАЧИ) | 1 ЯДР |
1 ГОТ | |
INDEX (ДЛЯ ИНДЕКСА) | 1 ЯДР |
PACKED-DECIMAL (ДЕСЯТИЧНОЕ) | 1 ЯДР |
Фраза VALUE (ЗНАЧЕНИЕ) | 1 ЯДР |
1 ГОТ | |
литерал | 1 ЯДР |
1 ГОТ | |
несколько литералов | 2 ЯДР |
литерал-1 THROUGH литерал-2 (литерал-1 ПО литерал-2) | 2 ЯДР |
несколько диапазонов литералов | 2 ЯДР |
Обработка исходных текстов в разделе данных | |
Оператор COPY (КОПИРОВАТЬ) | 1 ОИТ |
OF/IN имя-библиотеки (ИЗ имя-библиотеки) | 2 ОИТ |
фраза REPLACING (ЗАМЕНЯЯ) | 2 ОИТ |
псевдотекст | 2 ОИТ |
идентификатор | 2 ОИТ |
литерал | 2 ОИТ |
слово | 2 ОИТ |
Оператор REPLACE (ЗАМЕНИТЬ) | 2 ОИТ |
псевдотекст BY псевдотекст (псевдотекст НА псевдотекст) | 2 ОИТ |
OFF (ОТКЛЮЧИТЬ) | 2 ОИТ |
3.5 Список элементов раздела процедур | |
РАЗДЕЛ ПРОЦЕДУР | |
Заголовок раздела процедур | 1 ЯДР |
Фраза USING (ИСПОЛЬЗУЯ) | 1 МПС |
разрешается по крайней мере 5 операндов | 1 МПС |
нет ограничения на число операндов | 2 МПС |
Декларативные процедуры | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
1 ОТЛ + | |
DECLARATIVES (ДЕКЛАРАТИВЫ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
1 ОТЛ + | |
END DECLARATIVES (КОНЕЦ ДЕКЛАРАТИВ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
1 ОТЛ + | |
Арифметические выражения | 2 ЯДР |
Знаки бинарных арифметических операций + - * / ** | 2 ЯДР |
Знаки унарных арифметических операций + - | 2 ЯДР |
Условные выражения | 1 ЯДР |
Простое условие | 1 ЯДР |
Условие отношения | 1 ЯДР |
Знаки операций отношения | |
[NOT] GREATER THAN ([HE] БОЛЬШЕ) | 1 ЯДР |
[NOT] > ([НЕ] >) | 1 ЯДР |
[NOT] LESS THAN ([HE] МЕНЬШЕ) | 1 ЯДР |
[NOT] < ([HE] td> | 1 ЯДР |
[NOT] EQUAL TO ([НЕ] РАВНО) | 1 ЯДР |
[NOT] = ([НЕ] =) | 1 ЯДР |
GREATER THAN OR EQUAL TO (БОЛЬШЕ ИЛИ РАВНО) | 1 ЯДР |
> = | 1 ЯДР |
LESS THAN OR EQUAL TO (МЕНЬШЕ ИЛИ РАВНО) | 1 ЯДР |
< = | 1 ЯДР |
Сравнение числовых операндов | 1 ЯДР |
Сравнение нечисловых операндов | 1 ЯДР |
Сравнение имен-индексов и (или) индексных данных | 1 ЯДР |
Условие класса | 1 ЯДР |
NUMERIC (ЧИСЛОВОЕ) | 1 ЯДР |
ALPHABETIC (БУКВЕННОЕ) | 1 ЯДР |
ALPHABETIC-LOWER (СТРОЧНЫЕ) | 1 ЯДР |
ALPHABETIC-UPPER (ПРОПИСНЫЕ) | 1 ЯДР |
имя-класса | 1 ЯДР |
Условие имени-условия | 2 ЯДР |
Условие знака | 2 ЯДР |
Условие состояния-переключателя | 1 ЯДР |
Сложное условие | 2 ЯДР |
Знаки логических операций AND (И) OR (ИЛИ) NOT (HE) | 2 ЯДР |
Отрицание условия | 2 ЯДР |
Комбинированное условие | 2 ЯДР |
Условие в скобках | 1 ЯДР |
Сокращенные комбинированные условия отношения | 2 ЯДР |
Арифметические операторы | 1 ЯДР |
Арифметические операнды имеют длину до 18 цифр | 1 ЯДР |
Композиция операндов содержит не более 18 цифр | 1 ЯДР |
Оператор ACCEPT (ПРИНЯТЬ) | 1 ЯДР |
идентификатор | 1 ЯДР |
только одна передача данных | 1 ЯДР |
число передач данных не ограничивается | 2 ЯДР |
фраза FROM мнемоническое-имя (С мнемоническое-имя) | 2 ЯДР |
фраза FROM DATE/DAY/DAY-OF-WEEK/TIME (ДАТУ/ДЕНЬ/ДЕНЬ-НЕДЕЛИ/ВРЕМЯ) | 2 ЯДР |
Оператор ACCEPT MESSAGE COUNT (ПРИНЯТЬ ЧИСЛО СООБЩЕНИЙ) | 1 КОМ |
Оператор ADD (СЛОЖИТЬ) | 1 ЯДР |
идентификатор/литерал | 1 ЯДР |
несколько идентификаторов/литералов | 1 ЯДР |
ТО идентификатор (С идентификатор) | 1 ЯДР |
ТО несколько-идентификаторов (С несколько-идентификаторов) | 1 ЯДР |
ТО идентификатор/литерал GIVING идентификатор (С идентификатор/литерал ПОЛУЧАЯ идентификатор) | 1 ЯДР |
ТО идентификатор/литерал GIVING несколько-идентификаторов (С идентификатор/литерал ПОЛУЧАЯ несколько идентификаторов) | 1 ЯДР |
фраза ROUNDED (ОКРУГЛЯЯ) | 1 ЯДР |
фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) | 1 ЯДР |
фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) | 1 ЯДР |
фраза END-ADD (КОНЕЦ-СЛОЖИТЬ) | 1 ЯДР |
фраза CORRESPONDING (СООТВЕТСТВЕННО) | 2 ЯДР |
Оператор ALTER (ИЗМЕНИТЬ) | 1 ЯДР + |
только одно имя-процедуры | 1 ЯДР + |
несколько имен-процедур | 2 ЯДР + |
Оператор CALL (ВЫЗВАТЬ) | 1 МПС |
литерал | 1 МПС |
идентификатор | 2 МПС |
фраза USING (ИСПОЛЬЗУЯ) | 1 МПС |
идентификатор | 1 МПС |
разрешается по крайней мере 5 операндов | 1 МПС |
нет ограничения на число операндов | 2 МПС |
фраза BY REFERENCE (ССЫЛКУ) | 2 МПС |
фраза BY CONTENT (ЗНАЧЕНИЕ) | 2 МПС |
фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) | 2 МПС |
фраза ON EXCEPTION (ПРИ ОШИБКЕ) | 2 МПС |
фраза NOT ON EXCEPTION (БЕЗ ОШИБКИ) | 2 МПС |
фраза END-CALL (КОНЕЦ-ВЫЗВАТЬ) (формат 1) | 1 МПС |
фраза END-CALL (КОНЕЦ-ВЫЗВАТЬ) (формат 2) | 2 МПС |
Оператор CANCEL (ОСВОБОДИТЬ) | 2 МПС |
литерал | 2 МПС |
идентификатор | 2 МПС |
Оператор CLOSE (ЗАКРЫТЬ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
имя-файла | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
несколько имен-файлов | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
фраза REEL/UNIT (КАТУШКУ/ТОМ) | 1 ПОД |
1 ГОТ | |
фраза FOR REMOVAL (С УДАЛЕНИЕМ) | 2 ПОД |
фраза WITH NO REWIND (БЕЗ ПЕРЕМОТКИ) | 2 ПОД |
1 ГОТ | |
фраза WITH LOCK (С ЗАМКОМ) | 2 ПОД |
2 ОТД | |
2 ИПД | |
1 ГОТ | |
Оператор COMPUTE (ВЫЧИСЛИТЬ) | 2 ЯДР |
арифметическое выражение | 2 ЯДР |
несколько идентификаторов | 2 ЯДР |
фраза ROUNDED (ОКРУГЛЯЯ) | 2 ЯДР |
фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) | 2 ЯДР |
фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) | 2 ЯДР |
фраза END-COMPUTE (КОНЕЦ-ВЫЧИСЛИТЬ) | 2 ЯДР |
Оператор CONTINUE (ПРОДОЛЖИТЬ) | 1 ЯДР |
Оператор DELETE (УДАЛИТЬ) | 1 ОТД |
1 ИПД | |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | 1 ОТД |
1 ИПД | |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | 1 ОТД |
1 ИПД | |
фраза END-DELETE (КОНЕЦ-УДАЛИТЬ) | 1 ОТД |
1 ИПД | |
Оператор DISABLE (ЗАПРЕТИТЬ) | 2 КОМ |
фраза INPUT (ВВОД) | 2 КОМ |
фраза TERMINAL (С ТЕРМИНАЛА) | 2 КОМ |
фраза I-O-TERMINAL (ВВОД-ВЫВОД С ТЕРМИНАЛА) | 2 КОМ |
фраза OUTPUT (ВЫВОД) | 2 КОМ |
фраза WITH KEY (КЛЮЧ) | 2 КОM + |
Оператор DISPLAY (ВЫДАТЬ) | 1 ЯДР |
только одна передача данных | 1 ЯДР |
ограничений на число передач нет | 2 ЯДР |
идентификатор/литерал | 1 ЯДР |
несколько идентификаторов/литералов | 1 ЯДР |
фраза UPON мнемоническое-имя (НА мнемоническое-имя) | 2 ЯДР |
фраза WITH NO ADVANCING (БЕЗ ПРОДВИЖЕНИЯ) | 2 ЯДР |
Оператор DIVIDE (РАЗДЕЛИТЬ) | 1 ЯДР |
BY идентификатор/литерал (НА идентификатор/литерал) | 1 ЯДР |
GIVING идентификатор (ПОЛУЧАЯ идентификатор) | 1 ЯДР |
GIVING несколько-идентификаторов (ПОЛУЧАЯ несколько-идентификаторов) | 1 ЯДР |
фраза ROUNDED (ОКРУГЛЯЯ) | 1 ЯДР |
фраза REMAINDER (ОСТАТОК) | 2 ЯДР |
фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) | 1 ЯДР |
фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) | 1 ЯДР |
фраза END-DIVIDE (КОНЕЦ-РАЗДЕЛИТЬ) | 1 ЯДР |
Оператор ENABLE (РАЗРЕШИТЬ) | 2 КОМ |
фраза INPUT (ВВОД) | 2 КОМ |
фраза TERMINAL (С ТЕРМИНАЛА) | 2 КОМ |
фраза I-O-TERMINAL (ВВОД-ВЫВОД С ТЕРМИНАЛА) | 2 КОМ |
фраза OUTPUT (ВЫВОД) | 2 КОМ |
фраза WITH KEY (КЛЮЧ) | 2 КОМ + |
Оператор ENTER (ВОЙТИ) | 1 ЯДР + |
Оператор EVALUATE (ОЦЕНИТЬ) | 2 ЯДР |
идентификатор/литерал | 2 ЯДР |
арифметическое выражение | 2 ЯДР |
условное выражение | 2 ЯДР |
TRUE/FALSE (ИСТИНА/ЛОЖЬ) | 2 ЯДР |
фраза ALSO (ТАКЖЕ) | 2 ЯДР |
фраза WHEN (КОГДА) | 2 ЯДР |
фраза ALSO (ТАКЖЕ) | 2 ЯДР |
фраза WHEN OTHER (ИНАЧЕ) | 2 ЯДР |
фраза END-EVALUATE (КОНЕЦ-ОЦЕНИТЬ) | 2 ЯДР |
Оператор EXIT (ВЫЙТИ) | 1 ЯДР |
Оператор EXIT PROGRAM (ВЫЙТИ ИЗ ПРОГРАММЫ) | 1 МПС |
Оператор GENERATE (ГЕНЕРИРОВАТЬ) | 1 ГОТ |
имя-данного | 1 ГОТ |
имя-отчета | 1 ГОТ |
Оператор GO TO (ПЕРЕЙТИ) | 1 ЯДР |
имя-процедуры обязательно | 1 ЯДР |
имя-процедуры необязательно | 2 ЯДР + |
фраза DEPENDING ON (В ЗАВИСИМОСТИ ОТ) | 1 ЯДР |
Оператор IF (ЕСЛИ) | 1 ЯДР |
только повелительные операторы | 1 ЯДР |
повелительные и (или) условные операторы | 2 ЯДР |
вложенные операторы IF (ЕСЛИ) | 1 ЯДР |
необязательное слово THEN (TO) | 1 ЯДР |
фраза NEXT SENTENCE (СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ) | 1 ЯДР |
фраза ELSE (ИНАЧЕ) | 1 ЯДР |
фраза END-IF (КОНЕЦ-ЕСЛИ) | 1 ЯДР |
Оператор INITIALIZE (ИНИЦИИРОВАТЬ) | 2 ЯДР |
несколько идентификаторов | 2 ЯДР |
фраза REPLACING (ЗАМЕНЯЯ) | 2 ЯДР |
несколько фраз REPLACING (ЗАМЕНЯЯ) | 2 ЯДР |
Оператор INITIATE (НАЧАТЬ) | 1 ГОТ |
Оператор INSPECT (ПРОСМОТРЕТЬ) | 1 ЯДР |
на вхождение одной литеры | 1 ЯДР |
на вхождение нескольких литер | 2 ЯДР |
фраза TALLYING (СЧИТАЯ) | 1 ЯДР |
фраза BEFORE/AFTER (ДО/ПОСЛЕ) | 1 ЯДР |
несколько фраз BEFORE/AFTER (ДО/ПОСЛЕ) | 2 ЯДР |
несколько фраз TALLYING (СЧИТАЯ) | 2 ЯДР |
фраза REPLACING (ЗАМЕНЯЯ) | 1 ЯДР |
фраза BEFORE/AFTER (ДО/ПОСЛЕ) | 1 ЯДР |
несколько фраз BEFORE/AFTER (ДО/ПОСЛЕ) | 2 ЯДР |
несколько фраз REPLACING (ЗАМЕНЯЯ) | 2 ЯДР |
фразы TALLYING (СЧИТАЯ) и REPLACING (ЗАМЕНЯЯ) | 1 ЯДР |
фраза CONVERTING (ПРЕВРАЩАЯ) | 2 ЯДР |
Оператор MERGE (СЛИТЬ) | 1 СРТ |
фраза ASCENDING/DESCENDING KEY (ПО ВОЗРАСТАНИЮ/УБЫВАНИЮ КЛЮЧА) | 1 СРТ |
фраза COLLATING SEQUENCE (АЛФАВИТ) | 1 СРТ |
фраза USING (ИСПОЛЬЗУЯ) | 1 СРТ |
фраза OUTPUT PROCEDURE (ПРОЦЕДУРА ВЫВОДА) | 1 СРТ |
имя-процедуры | 1 СРТ |
фраза GIVING (ПОЛУЧАЯ) | 1 CРT |
Оператор MOVE (ПОМЕСТИТЬ) | 1 ЯДР |
ТО идентификатор (В идентификатор) | 1 ЯДР |
ТО несколько идентификаторов (В несколько идентификаторов) | 1 ЯДР |
фраза CORRESPONDING (СООТВЕТСТВЕННО) | 2 ЯДР |
дередактирование цифровых редактируемых данных | 2 ЯДР |
Оператор MULTIPLY (УМНОЖИТЬ) | 1 ЯДР |
BY идентификатор (НА идентификатор) | 1 ЯДР |
BY несколько идентификаторов (НА несколько идентификаторов) | 1 ЯДР |
GIVING идентификатор (ПОЛУЧАЯ идентификатор) | 1 ЯДР |
GIVING несколько идентификаторов (ПОЛУЧАЯ несколько идентификаторов) | 1 ЯДР |
фраза ROUNDED (ОКРУГЛЯЯ) | 1 ЯДР |
фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) | 1 ЯДР |
фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) | 1 ЯДР |
фраза END-MULTIPLY (КОНЕЦ-УМНОЖИТЬ) | 1 ЯДР |
Оператор OPEN (ОТКРЫТЬ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
имя-файла | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
несколько имен-файлов | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
фраза INPUT (ВХОДНОЙ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
фраза WITH NO REWIND (БЕЗ ПЕРЕМОТКИ) | 2 ПОД |
фраза REVERSED (PEBEPCHO) | 2 ПОД + |
фраза OUTPUT (ВЫХОДНОЙ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
WITH NO REWIND (БЕЗ ПЕРЕМОТКИ) | 2 ПОД |
1 ГОТ | |
фраза I-O (ВХОДНОЙ-ВЫХОДНОЙ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
фраза EXTEND (ДОПОЛНЯЕМЫЙ) | 2 ПОД |
2 ОТД | |
2 ИПД | |
1 ГОТ | |
несколько фраз INPUT (ВХОДНОЙ), OUTPUT (ВЫХОДНОЙ), I-O (ВХОДНОЙ-ВЫХОДНОЙ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
несколько фраз EXTEND (ДОПОЛНЯЕМЫЙ) | 2 ПОД |
2 ОТД | |
2 ИПД | |
Оператор PERFORM (ВЫПОЛНИТЬ) | 1 ЯДР |
имя-процедуры необязательно | 1 ЯДР |
фраза THROUGH имя-процедуры (ПО имя-процедуры) | 1 ЯДР |
вариант повелительный-оператор | 1 ЯДР |
фраза END-PERFORM (КОНЕЦ-ВЫПОЛНИТЬ) | 1 ЯДР |
фраза TIMES (РАЗ) | 1 ЯДР |
фраза UNTIL (ДО) | 1 ЯДР |
фраза TEST BEFORE/AFTER (С ПРОВЕРКОЙ В НАЧАЛЕ/ В КОНЦЕ) | 2 ЯДР |
фраза VARYING (МЕНЯЯ) | 2 ЯДР |
фраза TEST BEFORE/AFTER (С ПРОВЕРКОЙ В НАЧАЛЕ/ В КОНЦЕ) | 2 ЯДР |
фраза AFTER (ЗАТЕМ) | 2 ЯДР |
допускаются по крайней мере 6 фраз AFTER (ЗАТЕМ) | 2 ЯДР |
Оператор PURGE (ОЧИСТИТЬ) | 2 КОМ |
Оператор READ (ЧИТАТЬ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
фраза NEXT (СЛЕДУЮЩУЮ) | 2 ПОД |
2 ОТД | |
2 ИПД | |
фраза INTO (В) | 1 ПОД |
1 ОТД | |
1 ИПД | |
фраза AT END (В КОНЦЕ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
фраза NOT AT END (HE В КОНЦЕ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
фраза KEY (КЛЮЧ) | 2 ИПД |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | 1 ОТД |
1 ИПД | |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | 1 ОТД |
1 ИПД | |
фраза END-READ (КОНЕЦ-ЧИТАТЬ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
Оператор RECEIVE (ПОЛУЧИТЬ) | 1 КОМ |
фраза MESSAGE (СООБЩЕНИЕ) | 1 КОМ |
фраза SEGMENT (СЕГМЕНТ) | 1 КОМ |
фраза INTO идентификатор (В идентификатор) | 1 КОМ |
фраза NO DATA (НЕТ ДАННЫХ) | 1 КОМ |
фраза WITH DATA (ЕСТЬ ДАННЫЕ) | 1 КОМ |
фраза END-RECEIVE (КОНЕЦ-ПОЛУЧИТЬ) | 1 КОМ |
Оператор RELEASE (ПЕРЕДАТЬ) | 1 СРТ |
фраза FROM (ИЗ ПОЛЯ) | 1 СРТ |
Оператор RETURN (ВЕРНУТЬ) | 1 СРТ |
фраза INTO (В) | 1 СРТ |
фраза AT END (В КОНЦЕ) | 1 СРТ |
фраза NOT AT END (HE В КОНЦЕ) | 1 СРТ |
фраза END-RETURN (КОНЕЦ-ВЕРНУТЬ) | 1 СРТ |
Оператор REWRITE (ОБНОВИТЬ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
фраза FROM (ИЗ ПОЛЯ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | 1 ОТД |
1 ИПД | |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | 1 ОТД |
1 ИПД | |
фраза END-REWRITE (КОНЕЦ-ОБНОВИТЬ) | 1 ОТД |
1 ИПД | |
Оператор SEARCH (ИСКАТЬ) | 2 ЯДР |
фраза VARYING (МЕНЯЯ) | 2 ЯДР |
фраза AT END (В КОНЦЕ) | 2 ЯДР |
фраза WHEN (КОГДА) | 2 ЯДР |
несколько фраз WHEN (КОГДА) | 2 ЯДР |
фраза END-SEARCH (КОНЕЦ-ИСКАТЬ) | 2 ЯДР |
Оператор SEARCH ALL (ИСКАТЬ ОСОБО) | 2 ЯДР |
фраза AT END (В КОНЦЕ) | 2 ЯДР |
фраза WHEN (КОГДА) | 2 ЯДР |
фраза END-SEARCH (КОНЕЦ-ИСКАТЬ) | 2 ЯДР |
Оператор SEND (ПОСЛАТЬ) | 1 КОМ |
фраза FROM идентификатор (ИЗ ПОЛЯ идентификатор) (часть сообщения) | 2 КОМ |
фраза FROM идентификатор (ИЗ ПОЛЯ идентификатор) (полное сообщение) | 1 КОМ |
фреза WITH идентификатор (С идентификатор) | 2 КОМ |
фраза WITH ESI (С ИКС) | 2 КОМ |
фраза WITH EMI (С ИКЩ) | 2 КОМ |
фраза WITH EGI (С ИКГ) | 2 КОМ |
фраза BEFORE/AFTER ADVANCING (ДО/ПОСЛЕ ПРОДВИЖЕНИЯ) | 1 КОМ |
целое LINE/LINES (целое СТРОК) | 1 КОМ |
идентификатор LINE/LINES (идентификатор СТРОК) | 1 КОМ |
мнемоническое-имя | 2 КОМ |
PAGE (СТРАНИЦЫ) | 1 КОМ |
фраза REPLACING LINE (ЗАМЕНЯЯ СТРОКУ) | 2 КОМ |
Оператор SET (УСТАНОВИТЬ) | 1 ЯДР |
имя-индекса/идентификатор ТО (НА) | 1 ЯДР |
имя-индекса UP BY/DOWN BY (имя-индекса ПРИБАВЛЯЯ/ВЫЧИТАЯ) | 1 ЯДР |
мнемоническое-имя ТО ON/OFF (мнемоническое-имя НА ВКЛЮЧЕНО/ВЫКЛЮЧЕНО) | 1 ЯДР |
имя-условия ТО TRUE (имя-условия НА ИСТИНА) | 2 ЯДР |
Оператор SORT (СОРТИРОВАТЬ) | 1 СРТ |
фраза ASCENDING/DESCENDING KEY (ПО ВОЗРАСТАНИЮ/УБЫВАНИЮ КЛЮЧА) | 1 СРТ |
фраза DUPLICATES (С ДУБЛИРОВАНИЕМ) | 1 СРТ |
фраза COLLATING SEQUENCE (АЛФАВИТ) | 1 СРТ |
фраза INPUT PROCEDURE (ПРОЦЕДУРА ВВОДА) | 1 СРТ |
имя-процедуры | 1 СРТ |
фраза USING (ИСПОЛЬЗУЯ) | 1 СРТ |
фраза OUTPUT PROCEDURE (ПРОЦЕДУРА ВЫВОДА) | 1 СРТ |
имя-процедуры | 1 СРТ |
фраза GIVING (ПОЛУЧАЯ) | 1 СРТ |
Оператор START (ПОДВЕСТИ) | 2 ОТД |
2 ИПД | |
фраза KEY (КЛЮЧ) | 2 ОТД |
2 ИПД | |
EQUAL TO (РАВНО) | 2 ОТД |
2 ИПД | |
= | 2 ОТД |
2 ИПД | |
GREATER THAN (БОЛЬШЕ) | 2 ОТД |
2 ИПД | |
> | 2 ОТД |
2 ИПД | |
NOT LESS THAN (HE МЕНЬШЕ) | 2 ОТД |
2 ИПД | |
NOT < (HE td> | 2 ОТД |
2 ИПД | |
GREATER THAN OR EQUAL TO (БОЛЬШЕ ИЛИ РАВНО) | 2 ОТД |
2 ИПД | |
> = | 2 ОТД |
2 ИПД | |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | 2 ОТД |
2 ИПД | |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | 2 ОТД |
2 ИПД | |
фраза END-START (КОНЕЦ-ПОДВЕСТИ) | 2 ОТД |
2 ИПД | |
Оператор STOP (ОСТАНОВИТЬ) | 1 ЯДР |
STOP (РАБОТУ) | 1 ЯДР |
литерал | 1 ЯДР + |
Оператор STRING (СОБРАТЬ) | 2 ЯДР |
несколько DELIMITED BY (ОГРАНИЧИВАЯСЬ) | 2 ЯДР |
фраза WITH POINTER (УКАЗАТЕЛЬ) | 2 ЯДР |
фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) | 2 ЯДР |
фраза NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ) | 2 ЯДР |
фраза END-STRING (КОНЕЦ-СОБРАТЬ) | 2 ЯДР |
Оператор SUBTRACT (ОТНЯТЬ) | 1 ЯДР |
идентификатор/литерал | 1 ЯДР |
несколько идентификаторов/литералов | 1 ЯДР |
FROM идентификатор (ОТ идентификатор) | 1 ЯДР |
FROM несколько идентификаторов (ОТ несколько идентификаторов) | 1 ЯДР |
GIVING идентификатор (ПОЛУЧАЯ идентификатор) | 1 ЯДР |
GIVING несколько идентификаторов (ПОЛУЧАЯ несколько идентификаторов) | 1 ЯДР |
фраза ROUNDED (ОКРУГЛЯЯ) | 1 ЯДР |
фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) | 1 ЯДР |
фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) | 1 ЯДР |
фраза END-SUBTRACT (КОНЕЦ-ОТНЯТЬ) | 1 ЯДР |
фраза CORRESPONDING (СООТВЕТСТВЕННО) | 2 ЯДР |
Оператор SUPPRESS (ПОДАВИТЬ) | 1 ГОТ |
Оператор TERMINATE (ЗАКОНЧИТЬ) | 1 ГОТ |
Оператор UNSTRING (РАЗОБРАТЬ) | 2 ЯДР |
фраза DELIMITED BY (ОГРАНИЧИВАЯСЬ) | 2 ЯДР |
фраза DELIMITER IN (ОГРАНИЧИТЕЛЬ В) | 2 ЯДР |
фраза COUNT IN (СЧЕТ В) | 2 ЯДР |
фраза WITH POINTER (УКАЗАТЕЛЬ) | 2 ЯДР |
фраза TALLYING (СЧИТАЯ) | 2 ЯДР |
фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) | 2 ЯДР |
фраза NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ) | 2 ЯДР |
фраза END-UNSTRING (КОНЕЦ-РАЗОБРАТЬ) | 2 ЯДР |
Оператор USE (ИСПОЛЬЗОВАТЬ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
1 ОТЛ+ | |
фраза EXCEPTION/ERROR PROCEDURE (ПРОЦЕДУРЫ ОШИБКИ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
фраза GLOBAL (ГЛОБАЛЬНО) | 2 МПС |
ON имя-файла (ДЛЯ имя-файла) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
ON несколько имен-файлов (ДЛЯ несколько имен-файлов) | 2 ПОД |
2 ОТД | |
2 ИПД | |
1 ГОТ | |
ON INPUT (ДЛЯ ВХОДНЫХ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
ON OUTPUT (ДЛЯ ВЫХОДНЫХ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
1 ГОТ | |
ON I-O (ДЛЯ ВХОДНЫХ-ВЫХОДНЫХ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
ON EXTEND (ДЛЯ ДОПОЛНЯЕМЫХ) | 2 ПОД |
2 ОТД | |
2 ИПД | |
1 ГОТ | |
фраза BEFORE REPORTING (ДО ВЫДАЧИ) | 1 ГОТ |
фраза GLOBAL (ГЛОБАЛЬНО) | 2 МПС |
фраза FOR DEBUGGING (ДЛЯ ОТЛАДКИ) | 1 ОТЛ + |
имя-процедуры | 1 ОТЛ + |
ALL PROCEDURES (ПРИ ВСЕХ ПРОЦЕДУРАХ) | 1 ОТЛ + |
ALL REFERENCES OF идентификатор-1 (ПРИ ВСЕХ ССЫЛКАХ НА идентификатор-1) | 2 ОТЛ + |
имя-коммуникации | 2 ОТЛ + |
имя-файла | 2 ОТЛ + |
Оператор WRITE (ПИСАТЬ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
фраза FROM (ИЗ ПОЛЯ) | 1 ПОД |
1 ОТД | |
1 ИПД | |
фраза BEFORE/AFTER ADVANCING (ДО/ПОСЛЕ ПРОДВИЖЕНИЯ) | 1 ПОД |
целое LINE/LINES (целое СТРОК) | 1 ПОД |
идентификатор LINE/LINES (идентификатор СТРОК) | 1 ПОД |
мнемоническое-имя | 2 ПОД |
PAGE (СТРАНИЦЫ) | 1 ПОД |
фраза AT END-OF-PAGE/EOP (В КОНЦЕ СТРАНИЦЫ) | 2 ПОД |
фраза NOT AT END-OF-PAGE/EOP (HE В КОНЦЕ СТРАНИЦЫ) | 2 ПОД |
фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) | 1 ОТД |
1 ИПД | |
фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) | 1 ОТД |
1 ИПД | |
фраза END-WRITE (КОНЕЦ-ПИСАТЬ) | 2 ПОД |
2 ОТД | |
2 ИПД | |
Сегментация | |
Номера-сегментов от 0 до 49 для постоянных сегментов | 1 СЕГ + |
Номера-сегментов от 50 до 99 для независимых сегментов | 1 СЕГ + |
Все секции, имеющие одинаковый номер-сегмента, должны быть смежными в исходной программе | 1 СЕГ + |
Секции, имеющие одинаковый номер-сегмента, могут быть несмежными в исходной программе | 2 СЕГ + |
Обработка исходных текстов в разделе процедур | |
Оператор COPY (КОПИРОВАТЬ) | 1 ОИТ |
фраза OF/IN имя-библиотеки (ИЗ имя-библиотеки) | 2 ОИТ |
фраза REPLACING (ЗАМЕНЯЯ) | 2 ОИТ |
псевдотекст | 2 ОИТ |
идентификатор | 2 ОИТ |
литерал | 2 ОИТ |
слово | 2 ОИТ |
Оператор REPLACE (ЗАМЕНИТЬ) | 2 ОИТ |
псевдотекст BY псевдотекст (псевдотекст НА псевдотекст) | 2 ОИТ |
OFF (ОТКЛЮЧИТЬ) | 2 ОИТ |
Пример 1 | |||||
01 TABLE-1. | |||||
02 TABLE-ELEMENT OCCURS 20 TIMES. | |||||
03 FAM... | |||||
03 NAME ... | |||||
01 ТАБЛИЦА-1. | |||||
02 ТАБЛИЧНЫЙ-ЭЛЕМЕНТ ПОВТОРЯЕТСЯ 20 РАЗ. | |||||
03 ФАМИЛИЯ... | |||||
03 ИМЯ ... |
02 TABLE-1. | ||||
03 TABLE-ELEMENT OCCURS 20 TIMES. | ||||
04 FIO OCCURS 5 TIMES. | ||||
05 FAM... | ||||
05 NAME... | ||||
02 ТАБЛИЦА-1. | ||||
03 ТАБЛИЧНЫЙ-ЭЛЕМЕНТ ПОВТОРЯЕТСЯ 20 РАЗ. | ||||
04 ФИО ПОВТОРЯЕТСЯ 5 РАЗ. | ||||
05 ФАМИЛИЯ... | ||||
05 ИМЯ... |
01 INFORMATION. | ||
02 OTDEL ... | ||
02 FIO OCCURS 20 TIMES ... | ||
02 N-ROOM.... | ||
01 СВЕДЕНИЯ. | ||
02 ОТДЕЛ ... | ||
02 ФИО ПОВТОРЯЕТСЯ 20 РАЗ ... | ||
02 N-КОМНАТЫ ... | ||
Пример 4 | ||
01 INFORMATION. | ||
02 DEPARTMENT OCCURS 20 TIMES ... | ||
02 FIO ... | ||
02 N-ROOM OCCURS 5 TIMES ... | ||
01 СВЕДЕНИЯ. | ||
02 ЦЕХ ПОВТОРЯЕТСЯ 20 РАЗ ... | ||
02 ФИО ... | ||
02 N-КОМНАТЫ ПОВТОРЯЕТСЯ 5 РАЗ ... |
02 DEPARTMENT OCCURS 20 TIMES ... | ||
03 FIO... | ||
03 N-ROOM OCCURS 5 TIMES ... | ||
02 ЦЕХ ПОВТОРЯЕТСЯ 20 РАЗ ... | ||
03 ФИО ... | ||
03 N-КОМНАТЫ ПОВТОРЯЕТСЯ 5 РАЗ ... |
02 ANK ... | |||||
02 A1 OCCURS 20 TIMES INDEXED BY A1-INDEX ... | |||||
03 B1 ... | |||||
03 B2 OCCURS 5 TIMES ... | |||||
04 C1 ... | |||||
88 MAX VALUE IS ... | |||||
04 C2 ... | |||||
05 D1 OCCURS 10 TIMES... | |||||
06 E1 ... | |||||
06 E2 ... | |||||
02 AHK... | |||||
02 A1 ПОВТОРЯЕТСЯ 20 РАЗ ИНДЕКСИРУЕТСЯ | |||||
A1-ИНДЕКС... | |||||
03 B1 ... | |||||
03 В2 ПОВТОРЯЕТСЯ 5 РАЗ ... | |||||
04 С1 ... | |||||
88 МАХ ЗНАЧЕНИЕ ... | |||||
04 С2 ... | |||||
05 D1 ПОВТОРЯЕТСЯ 10 РАЗ... | |||||
06 Е1 ... | |||||
06 Е2 ... |
Вызываемая программа | Вызывающая программа | |
NUM (НОМ) | NBR (ЧИС) | |
PCODE (РКОД) | PTYPE (РТИП) | |
COST (СТОИМ) | PRICE (ЦЕНА) |
PROGRAM-ID. (ПРОГРАММА.) | |
AUTHOR. (АВТОР.) | |
INSTALLATION. (ПРЕДПРИЯТИЕ.) | |
DATE-WRITTEN. (ДАТА-НАПИСАНИЯ.) | |
ДАТЕ-COMPILED. (ДАТА-ТРАНСЛЯЦИИ.) | |
SECURITY. (ПОЛНОМОЧИЯ.) | |
б) в разделе оборудования | |
SOURCE-COMPUTER. (ИСХОДНАЯ-МАШИНА.) | |
OBJECT-COMPUTER. (РАБОЧАЯ-МАШИНА.) | |
SPECIAL-NAMES. (СПЕЦИАЛЬНЫЕ-ИМЕНА.) | |
FILE-CONTROL. (УПРАВЛЕНИЕ-ФАЙЛАМИ.) | |
I-O-CONTROL. (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ.) |
IDENTIFICATION DIVISION. | ||
ENVIRONMENT DIVISION. | ||
DATA DIVISION. | ||
PROCEDURE DIVISION [USING {имя-данного-1} ...]. | ||
РАЗДЕЛ ИДЕНТИФИКАЦИИ. | ||
РАЗДЕЛ ОБОРУДОВАНИЯ. | ||
РАЗДЕЛ ДАННЫХ. | ||
РАЗДЕЛ ПРОЦЕДУР [ИСПОЛЬЗУЯ {имя-данного-1} ...]. |
Знак | Операция |
+ | сложение |
- | вычитание |
* | умножение |
/ | деление |
** | возведение в степень |
Знак | Операция | |
IS [NOT] GREATER THAN ([HE] БОЛЬШЕ) IS [NOT]> ([HE]>) | Больше чем или не больше чем | |
IS NOT LESS THAN ([HE] МЕНЬШЕ) IS [NOT]< ([HE]td> | Меньше чем или не меньше чем | |
IS NOT EQUAL TO ([HE] РАВНО) IS NOT= [HE]=) | Равно или не равно | |
IS GREATER THAN OR EQUAL TO (БОЛЬШЕ ИЛИ РАВНО) IS > = (> =) | Больше чем или равно | |
IS LESS THAN OR EQUAL TO (МЕНЬШЕ ИЛИ РАВНО) IS < = (< = ) | Меньше чем или равно |
Литера | Значение |
> | больше |
< | меньше |
= | равно |
Литера | Значение |
, | запятая |
: | двоеточие |
; | точка с запятой |
. | точка |
" | кавычки |
( | левая круглая скобка |
) | правая круглая скобка |
пробел | |
= | равно |
Литера | Значение |
пробел | |
0 | нуль |
+ | плюс |
- | минус |
CR (КР) | кредит |
DB (ДБ) | дебет |
Z(П) | подавление нулей |
* | защита чека |
, | запятая (десятичная точка) |
. | точка (десятичная точка) |
валютный знак | |
/ | дробная черта |
Литера | Значение |
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 | цифра |
А, В, С, D, Е, F, G, Н, I, J, K, L, М, N, О, Р, Q, R, S, Т, U, V, W, Х, У, Z | буква прописная |
а, b, с, d, е, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z | буква строчная |
пробел | |
+ | плюс |
- | минус |
* | звездочка |
/ | дробная черта |
= | равно |
, | запятая (десятичная точка) |
; | точка с запятой |
. | точка (десятичная точка) |
" | кавычки |
( | левая круглая скобка |
) | правая круглая скобка |
> | больше |
< | меньше |
валютный знак | |
: | двоеточие |
Б, Г, Д, Ж, 3, И, Й, Л, П, У, Ф, Ц, Ч, Ш, Щ, Ы, Ь, Э, Ю, Я | буква прописная |
б, в, г, д, ж, з, и, й, к, л, м, н, п, т, ф, ц, ч, ш, щ, ы, ь, э, ю, я | буква строчная |
Литера | Значение |
+ | плюс |
- | минус |
* | звездочка |
/ | дробная черта |
= | равно |
, | запятая (десятичная точка) |
; | точка с запятой |
. | точка (десятичная точка) |
" | кавычки |
( | левая круглая скобка |
) | правая круглая скобка |
> | больше |
< | меньше |
валютный знак | |
: | двоеточие |
Данное | Класс | Категория |
Буквенный | Буквенная | |
Элементарное | Числовой | Числовая |
Буквенно-цифровой | Числовая редактируемая, буквенно-цифровая редактируемая, буквенно-цифровая | |
Неэлементарное (групповое) | Буквенно-цифровой | Буквенная, числовая, числовая редактируемая, буквенно-цифровая редактируемая, буквенно-цифровая |
IDENTIFICATION DIVISION. | |
PROGRAM-ID. имя-программы. | |
[AUTHOR. [статья-комментарий] ...] | |
[INSTALLATION. [статья-комментарий] …] | |
[DATE-WRITTEN. [статья-комментарий] ...] | |
[DATE-COMPILED. [статья-комментарий] ...] | |
[SECURITY. [статья-комментарий] ...] | |
РАЗДЕЛ ИДЕНТИФИКАЦИИ. | |
ПРОГРАММА. имя-программы. | |
[АВТОР. [статья-комментарий] ...] | |
[ПРЕДПРИЯТИЕ. [статья-комментарий] ...] | |
[ДАТА-НАПИСАНИЯ. [статья-комментарий] ...] | |
[ДАТА-ТРАНСЛЯЦИИ. [статья-комментарий] ...] | |
[ПОЛНОМОЧИЯ. [статья-комментарий] ...] |
ENVIRONMENT DIVISION. | |
[CONFIGURATION SECTION. | |
[SOURCE-COMPUTER. [статья-исходной-машины]] | |
[OBJECT-COMPUTER. [статья-объектной-машины]] | |
[SPECIAL-NAMES. [статья-специальных-имен]]] | |
[INPUT-OUTPUT SECTION. | |
FILE-CONTROL. {статья-управления-файлом} ... | |
[I-O-CONTROL. [статья-управления-вводом-выводом]]] | |
РАЗДЕЛ ОБОРУДОВАНИЯ. | |
[СЕКЦИЯ КОНФИГУРАЦИИ. | |
[ИСХОДНАЯ-МАШИНА. [статья-исходной-машины]] | |
[РАБОЧАЯ-МАШИНА. [статья-объектной-машины]] | |
[СПЕЦИАЛЬНЫЕ-ИМЕНА. [статья-специальных-имен]]] | |
[СЕКЦИЯ ВВОДА-ВЫВОДА. | |
УПРАВЛЕНИЕ-ФАЙЛАМИ. {статья-управления-файлом} ... | |
[УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ. [статья-управления-вводом-выводом]]] |
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 | (ПИСАТЬ) |
Уровень 2 ядра предоставляет полные возможности параграфа SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА) и статьи описания данных. В разделе процедур уровень 2 предоставляет полные возможности операторов ACCEPT (ПРИНЯТЬ), ADD (СЛОЖИТЬ), ALTER (ИЗМЕНИТЬ), COMPUTE (ВЫЧИСЛИТЬ), DISPLAY (ВЫДАТЬ), DIVIDE (РАЗДЕЛИТЬ), EVALUATE (ОЦЕНИТЬ), IF (ЕСЛИ), INITIALIZE (ИНИЦИИРОВАТЬ), INSPECT (ПРОСМОТРЕТЬ), MOVE (ПОМЕСТИТЬ), MULTIPLY (УМНОЖИТЬ), PERFORM (ВЫПОЛНИТЬ), SEARCH (ИСКАТЬ), SET (УСТАНОВИТЬ), STRING (СОБРАТЬ), SUBTRACT (ОТНЯТЬ), UNSTRING (РАЗОБРАТЬ). Уровень 2 ядра предоставляет полные возможности уточнений, правил образования имен данных и стандартных констант. Уровень 2 ядра предоставляет возможности доступа к элементам таблиц до семи измерений. |
Литера Кобола двоеточие (:) допустима на уровне 2. |
На уровне 1 могут быть использованы следующие стандартные константы: ZERO (НУЛЬ), ZEROS (НУЛИ), ZEROES (НУЛИ), SPACE (ПРОБЕЛ), SPACES (ПРОБЕЛЫ), HIGH-VALUE (НАИБОЛЬШЕЕ-ЗНАЧЕНИЕ), HIGH-VALUES (НАИБОЛЬШИЕ-ЗНАЧЕНИЯ), LOW-VALUE (НАИМЕНЬШЕЕ-ЗНАЧЕНИЕ), LOW-VALUES (НАИМЕНЬШИЕ-ЗНАЧЕНИЯ), QUOTE (КАВЫЧКА) и QUOTES (КАВЫЧКИ). |
1.3.4. Индексы |
1.3.6. Формат представления |
[заголовок-конца-программы] |
(2) В последовательности программ все отдельно компилируемые программы должны быть ограничены заголовком конца программы за исключением последней программы в последовательности. 2.4.1. Назначение Заголовок конца программы идентифицирует конец именованной исходной Кобол-программы. 2.4.2. Общий формат END PROGRAM имя-программы. КОНЕЦ ПРОГРАММЫ имя-программы. 2.4.3. Синтаксические правила (1) Имя-программы должно формироваться по правилам образования слов, определенных пользователем. (2) Имя-программы должно быть идентично имени программы, названному в предшествующем параграфе PROGRAM-ID (ПРОГРАММА) (п.3.3 настоящей части). 2.4.4. Общие правила (1) Заголовок конца программы идентифицирует конец указанной исходной Кобол-программы. (2) Следующим оператором после заголовка конца программы может быть только заголовок раздела идентификации программы, компилируемой отдельно от программы, ограниченной заголовком конца программы. |
3.4. Параграф DATE-COMPILED (ДАТА-ТРАНСЛЯЦИИ) 3.4.1. Назначение Параграф DATE-COMPILED (ДАТА-ТРАНСЛЯЦИИ) обеспечивает включение даты компиляции в выдачи раздела идентификации исходной программы. Параграф DATE-COMPILED (ДАТА-ТРАНСЛЯЦИИ) рассматривается в настоящем стандарте как устаревший элемент и будет удален в следующей редакции стандарта. 3.4.2. Общий формат DATE-COMPILED. [статья-комментарий] ... ДАТА-ТРАНСЛЯЦИИ. [статья-комментарий] ... 3.4.3. Синтаксическое правило (1) Статья-комментарий может представлять любую комбинацию литер из допустимого набора литер. Перенос слов статьи-комментария с помощью дефиса в поле индикатора не разрешается, однако статья-комментарий может занимать более одной строки. 3.4.4. Общее правило (1) Имя параграфа DATE-COMPILED (ДАТА-ТРАНСЛЯЦИИ) вызывает во время компиляции программы включение текущей даты в выдаваемый текст. Если параграф DATE-COMPILED (ДАТА-ТРАНСЛЯЦИИ) указан, он заменяется во время компиляции параграфом следующей формы: DATE-COMPILED. текущая-дата. ДАТА-ТРАНСЛЯЦИИ. текущая-дата. |
Секция конфигурации располагается в разделе оборудования исходной программы. Секция конфигурации связана с характеристиками исходной машины и рабочей машины. В этой секции также обеспечиваются средства спецификации валютного знака; выбора символа для десятичной точки; установления соответствия между мнемоническими именами, задаваемыми пользователем, и именами реализации; установления соответствия имени алфавита набору литер и (или) основной последовательности; установление соответствия имени класса набору литер. Секция конфигурации не обязательна в разделе оборудования исходной Кобол-программы. |
Параграф SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА) обеспечивает средства спецификации валютного знака; выбора символа для десятичной точки; установления соответствия между мнемоническими именами, задаваемыми пользователем, и именами реализации; установления соответствия имени алфавита набору литер или основной последовательности; установления соответствия имени класса набору литер. |
(3) Во фразе имя-алфавита одно и то же значение литерала может указываться только один раз. (4) Если во фразе имя-алфавита указаны литералы, то: а) числовые литералы должны быть целыми без знака и иметь значения от 1 до целого, равного количеству литер во внутреннем наборе литер; б) нечисловые литералы, указанные после слов THROUGH (ПО) и ALSO (ТАКЖЕ), должны состоять из одной литеры. (5) Литерал-1, литерал-2, литерал-3, литерал-4 и литерал-5 не должны совпадать по написанию со стандартными константами, являющимися символическими литерами. (6) Слова THROUGH и THRU эквивалентны. (7) Во фразе SYMBOLIC CHARACTERS (СИМВОЛИЧЕСКАЯ ЛИТЕРА) одна и та же литера может встречаться только один раз. (8) Соответствие между символической-литерой-1 и целым-1 определяется позицией во фразе SYMBOLIC CHARACTERS (СИМВОЛИЧЕСКАЯ ЛИТЕРА). Первая символическая литера-1 соответствует первому целому-1, вторая - второму и так далее. (9) Между экземплярами символического-имени-1 и экземплярами целого-1 должно быть взаимно однозначное соответствие. (10) Порядковая позиция, определяемая целым-1, должна существовать во внутреннем наборе кодов литер. Если указана фраза IN (ИЗ), то эта порядковая позиция должна существовать в наборе литер, определяемом именем-алфавита-2. |
г) если фраза имя-алфавита содержит литералы, соответствующее имя-алфавита не может упоминаться во фразе CODE-SET (АЛФАВИТ) (ч.7, п.3.4), при этом основная последовательность определяется следующим образом: значение каждого числового литерала определяет порядковый номер литеры во внутреннем наборе литер; это значение не должно превосходить количество литер во внутреннем наборе литер; значение каждого нечислового литерала определяет явную литеру во внутреннем наборе литер. Если нечисловой литерал содержит несколько литер, каждая его литера, начиная с самой левой, ставится в соответствие последовательным возрастающим позициям в определяемой основной последовательности; порядок, в котором литералы появляются во фразе имя-алфавита, точно определяет используемую основную последовательность (в возрастающем порядке); не указанные явно литералами литеры внутренней основной последовательности занимают позиции в основной последовательности, следующие за явно заданными во фразе имя-алфавита литерами. Относительный порядок литер, не указанных в определяемой основной последовательности, соответствует внутренней основной последовательности; |
если задана фраза THROUGH (ПО), последовательность литер внутреннего набора, начиная от литеры, заданной значением литерала-1, и кончая литерой, заданной значением литерала-2, занимает последовательные позиции определяемой основной последовательности. Кроме того, последовательность литер, заданных фразой THRU (ПО), может задавать литеры внутреннего набора либо в возрастающем, либо в убывающем порядке; |
если указана фраза ALSO (ТАКЖЕ), литеры внутреннего набора, заданные значением литерала-1, литерала-3, литерала-4... , ставятся в соответствие одной и той же позиции определяемой основной последовательности или набора кодов литер, используемых для представления данных, и если имя-алфавита-1 используется во фразе SYMBOLIC CHARACTERS (СИМВОЛИЧЕСКАЯ ЛИТЕРА), то только литерал-1 используется для представления литеры во внутреннем наборе литер. |
(5) Литера, которая занимает самую старшую позицию в задаваемой программной основной последовательности, ставится в соответствие стандартной константе |
HIGH-VALUE (НАИБОЛЬШЕЕ-ЗНАЧЕНИЕ), кроме случая, когда эта последняя стандартная константа используется в качестве литерала в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА). |
Если таких литер несколько, то стандартной константе HIGH-VALUE (НАИБОЛЬШЕЕ-ЗНАЧЕНИЕ) ставится в соответствие литера, указанная последней из них. |
(6) Литера, которая занимает самую младшую позицию в задаваемой программной основной последовательности, ставится в соответствие стандартной константе LOW-VALUE (НАИМЕНЬШЕЕ-ЗНАЧЕНИЕ), кроме случая, когда эта стандартная константа используется в качестве литерала в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА). Если таких литер несколько, стандартной константе LOW-VALUE (НАИМЕНЬШЕЕ-ЗНАЧЕНИЕ) ставится в соответствие литера, указанная первой из них. (7) Стандартные константы HIGH-VALUE (НАИБОЛЬШЕЕ-ЗНАЧЕНИЕ) и LOW-VALUE (НАИМЕНЬШЕЕ-ЗНАЧЕНИЕ), определенные как литералы в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА), соответствуют литерам, имеющим наибольшую и наименьшую позиции во внутренней основной последовательности. (8) Если не указана фраза IN (ИЗ), то символическая-литера-1 представляет литеру, чья порядковая позиция во внутреннем наборе определяется целым-1. Если фраза IN (ИЗ) указана, то целое-1 определяет порядковую позицию литеры, находящейся в наборе литер, названном именем-алфавита-2. (9) Внутреннее представление символической-литеры-1 является внутренним представлением литеры внутреннего набора. |
(4) Указание имени-алфавита-1 обеспечивает средства присвоения некоторого имени заданному набору кодов литер и (или) основной последовательности. Если указанное имя-алфавита-1 используется во фразе PROGRAM COLLATING SEQUENCE (ПРОГРАММНЫЙ АЛФАВИТ) (см. п.4.4 настоящей части) или во фразе COLLATING SEQUENCE (АЛФАВИТ) оператора SORT (СОРТИРОВАТЬ) или MERGE (СЛИТЬ) (ч.11, пп.4.1, 4.4), фраза имя-алфавита задает основную последовательность. Если имя-алфавита-1 используется во фразе CODE-SET (АЛФАВИТ) в описании файла (ч.7, п.3.4), то фраза ALPHABET (имя-алфавита) определяет набор кодов литер: |
(2) Формат 3 используется для имени условия. Каждое имя условия определяется отдельной статьей с номером уровня 88. В формате 3 указывается имя-условия, а также одно значение, несколько значений или диапазон значений, связанных с именем-условия. Статьи имени условия для конкретной условной переменной должны следовать за статьей, описывающей данное, к которому относится имя-условия. Имя-условия может относиться к любому элементарному или групповому данному, за исключением другого имени условия, индексного данного, данного с номером уровня 66, или группы, содержащей данные с описанием, включающим фразы JUSTIFIED (СДВИНУТО), SYNCHRONIZED (ВЫДЕЛЕНО) или фразу об использовании (кроме варианта USAGE IS DISPLAY (ДЛЯ ВЫДАЧИ)). |
Тем не менее, слово FILLER (ЗАПОЛНИТЕЛЬ) может использоваться в качестве условной переменной, что не требует явного обращения к данному, названному FILLER (ЗАПОЛНИТЕЛЬ) (а только к его значению). |
б) номер-уровня 66 определяет статью переименования и может использоваться только в формате 2 статьи описания данных (см. п.5.3 настоящей части); в) номер-уровня 88 присваивается статьям, которые определяют имена условий, связанных с условными переменными, и может быть использован только в формате 3 статьи описания данных (см. п.5.3 настоящей части). |
88 и в статьях описания данных, имеющих подчиненными переменно повторяющиеся данные. (2) Имя-данного-1 имя-данного-2 могут быть уточнены. (3) Имя-данного-2 должно быть либо именем статьи, содержащей фразу OCCURS (ПОВТОРЯЕТСЯ), либо именем статьи, подчиненной статье, содержащей фразу OCCURS (ПОВТОРЯЕТСЯ). (4) Имя-данного-2 должно быть указано без требуемого для него индексирования. (5) Если указаны целое-1 и целое-2, то целое-1 должно быть больше или равно 0, а целое-2 должно быть больше целого-1. (6) Имя-данного-1 должно быть описано как целое. (7) В формате 2 данное, определенное именем-данного-1, не должно располагаться в области памяти, занимаемой данным, статья описания которого содержит фразу OCCURS (ПОВТОРЯЕТСЯ). |
(10) За статьей описания данного, содержащей фразу OCCURS (ПОВТОРЯЕТСЯ) формата 2, могут следовать только подчиненные ей статьи описания данных. (11) Данное, определяемое именем-данного-2, не должно содержать фразу OCCURS (ПОВТОРЯЕТСЯ) за исключением случая, когда имя-данного-2 является субъектом статьи. (12) Между статьями описания данных, указанными именами данных в варианте KEY IS (ПО ВОЗРАСТАНИЮ/УБЫВАНИЮ КЛЮЧА), и предметом этой статьи не должно быть статьи, содержащей фразу OCCURS (ПОВТОРЯЕТСЯ). |
б) в формате 2 текущее значение данного, именуемого именем-данного-1, представляет число повторений. Формат 2 указывает, что предмет статьи имеет переменное число повторений. Значение целого-2 представляет максимальное число повторений, а значение целого-1 - минимальное. Это не означает, что размер предмета статьи переменный, а говорит лишь только о том, что переменно число его повторений. Всякий раз, когда ссылаются на предмет статьи или на подчиненное ему данное или на данное, которому подчиняется предмет статьи, значение данного, определенное именем-данного-1, должно принадлежать диапазону от целого-1 до целого-2. Значения данных, номера вхождений которых превышают значение имени-данного-1, не определены. (3) При обращении к групповому данному, содержащему данное, в статье описания которого содержится фраза OCCURS (ПОВТОРЯЕТСЯ) формата 2, используется только часть области таблицы, определяемая следующим образом: |
а) если данное, определяемое именем-данного-1, не входит в группу, то используется только часть области таблицы, определяемая значением имени-данного-1 в момент начала обработки; |
б) если данное, определенное именем-данного-1, входит в группу и групповое данное пересылается, то в пересылке будет использоваться только часть области таблицы, определенная значением имени-данного-1 в момент начала работы. Если группа есть принимающее данное, то будет использоваться максимальная длина группы. |
(4) Вариант DESCENDING (ASCENDING) KEY (ПО УБЫВАНИЮ/ВОЗРАСТАНИЮ КЛЮЧА) указывает, что повторяющиеся данные упорядочены в возрастающем или убывающем порядке в соответствии со значениями имени-данного-2, имени-данного-3 и т.д. Возрастающий или убывающий порядок определяется в соответствии с правилами сравнения операндов (пп.6.3.1.1.1 и 6.3.1.1.2 настоящей части). Имена-данных перечисляются в порядке уменьшения значимости. |
(5) Если формат 2 используется в статье описания записи и соответствующее описание файла или описание сортируемого-сливаемого файла содержит вариант VARYING (ПЕРЕМЕННОЕ ЧИСЛО) во фразе RECORD (В ЗАПИСИ), то запись имеет переменную длину. Если вариант DEPENDING ON (В ЗАВИСИМОСТИ ОТ) во фразе RECORD (В ЗАПИСИ) не указан, то значение данного, определяемого именем-данного-1 во фразе OCCURS (ПОВТОРЯЕТСЯ), должно быть установлено на число записываемых повторений до выполнения любого из операторов RELEASE (ПЕРЕДАТЬ), REWRITE (ОБНОВИТЬ) или WRITE (ПИСАТЬ). |
Категория | Тип редактирования |
Буквенная | Никакой |
Числовая | Никакой |
Буквенно-цифровая | Никакой |
Буквенно-цифровая редактируемая | Простая вставка 0, В и / |
Числовая редактируемая | Все типы с учетом правила 3 |
Редактирующий символ в строке-литер шаблона | Литеры вставки, появляющиеся в редактируемом данном | |
Данное положительное или нуль | Данное отрицательное | |
+ | + | - |
- | Пробел | - |
CR (КP) | 2 пробела | CR (КP) |
DB (ДБ) | То же | DB (ДБ) |
Редактирующий символ в строке-литер шаблона | Литеры вставки, появляющиеся в редактируемом данном | |
Данное положительно или нуль | Данное отрицательно | |
+ | + | - |
- | Пробел | - |
Второй символ | Допустимость предшествования первого символа | |||||||||||||||||||||
Символы фиксированной вставки | Символы плавающей вставки | Другие символы | ||||||||||||||||||||
В | 0 | / | , | . | В. зн | В. зн | В. зн | 9 | А X | S (З) | V (Т) | P (М) | P (М) | |||||||||
Символы фиксированной вставки | В | x | х | x | x | x | x | - | - | x | x | x | x | x | x | x | x | x | - | x | - | x |
0 | x | x | x | x | x | x | - | - | x | x | x | x | x | x | x | x | x | - | x | - | x | |
/ | x | x | x | x | x | x | - | - | x | x | x | x | x | x | x | x | x | - | x | - | x | |
, | x | х | x | x | x | x | - | - | x | x | x | x | x | x | x | x | - | - | x | - | x | |
. | x | x | x | x | - | x | - | - | x | x | - | x | - | x | - | x | - | - | - | - | - | |
- | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | ||
x | x | x | x | x | - | - | - | x | x | x | - | - | x | x | x | - | - | x | x | x | ||
x | x | х | x | х | - | - | - | x | x | x | - | - | x | х | х | - | - | x | x | x | ||
В. зн. | - | - | - | - | - | x | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | |
Символы плавающей вставки | x | x | x | x | - | х | - | - | x | x | - | - | - | - | - | - | - | - | - | - | - | |
x | x | x | x | x | x | - | - | x | x | x | - | - | - | - | - | - | - | x | - | x | ||
x | x | x | x | - | - | - | - | x | - | - | x | - | - | - | - | - | - | - | - | - | ||
x | x | x | х | x | - | - | - | x | - | - | x | x | - | - | - | - | - | x | - | x | ||
В. зн. | x | x | х | x | - | x | - | - | - | - | - | - | - | x | - | - | - | - | - | - | - | |
В. зн. | x | x | x | x | x | x | - | - | - | - | - | - | - | x | x | - | - | - | x | - | x | |
Другие символы | 9 | x | x | x | x | x | x | - | - | x | x | - | x | - | x | - | x | х | х | х | - | x |
А X | x | x | x | - | - | - | - | - | - | - | - | - | - | - | - | x | х | - | - | - | - | |
S (З) | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | |
V (T) | x | x | х | x | - | х | - | - | x | x | - | x | - | x | - | x | - | x | - | x | - | |
Р (М) | x | x | x | x | - | x | - | - | x | x | - | x | - | x | - | x | - | x | - | x | - | |
Р (М) | - | - | - | - | - | x | - | - | x | - | - | - | - | - | - | - | - | x | x | - | x |
(7) Имя-данного-2 не должно уточняться, даже если оно неоднозначно, так как в этом случае благодаря расположению фразы REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ) в исходной программе двусмысленности не будет. |
Для уровня 2 ядра имя-данного-2 может быть подчинено статье, содержащей фразу REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ). |
5.11. Фраза RENAMES (ПЕРЕИМЕНОВЫВАЕТ) 5.11.1. Назначение Фраза RENAMES (ПЕРЕИМЕНОВЫВАЕТ) позволяет изменять полностью или частично группирование элементарных данных. 5.11.2. Общий формат В приведенном выше формате номер-уровня 66 и имя-данного-1 не являются частью фразы RENAMES (ПЕРЕИМЕНОВЫВАЕТ) и указаны для наглядности. 5.11.3. Синтаксические правила (1) Может быть указано любое число статей RENAMES (ПЕРЕИМЕНОВЫВАЕТ) для логической записи. (2) Все статьи переименования, связанные с данной логической записью, должны следовать сразу за последней из входящих в нее статей описания данных. (3) Имя-данного-1 не может применяться как уточнитель и может уточняться только именами статей уровня 01, FD (ОФ), CD (OK) или SD (ОС). Статьи описания имени-данного-2 или имени-данного-3 не могут содержать фразу OCCURS (ПОВТОРЯЕТСЯ) или подчиняться данному, статья описания которого содержит фразу OCCURS (ПОВТОРЯЕТСЯ). |
(4) Имя-данного-2 и имя-данного-3 должны быть именами элементарных данных или групп данных в соответствующей логической записи и не могут быть именами одного и того же данного. Статья уровня 66 не может переименовывать другую статью того же уровня, а также статьи уровня 77, 88 или 01. (5) Имя-данного-2 и имя-данного-3 могут уточняться. (6) Данные внутри области, определяемой именем-данного-2 (и именем-данного-3, если последнее задано), не должны иметь переменный размер. (7) Начало области, описанной именем-данного-2, должно предшествовать началу области, описанной именем-данного-3, и конец области, описанной именем-данного-3, должен логически следовать за концом области, описанной именем-данного-2. В то же время имя-данного-3 не может входить в группу, определяемую именем-данного-2. 5.11.4. Общие правила (1) Если имя-данного-3 задано, то имя-данного-1 является именем группы, которая содержит все элементарные данные, начиная от имени-данного-2 (если имя-данного-2 является элементарным данным) или первого элементарного данного в имени-данного-2 (если имя-данного-2 является именем группы) и заканчивая именем-данного-3 (если имя-данного-3 является элементарным данным) или последним элементарным данным в имени-данного-3 (если имя-данного-3 относится к групповому данному). (2) Если имя-данного-3 не указано, то все свойства данного, определенного именем-данного-2, становятся свойствами данного, определенного именем-данного-1. |
5.15.5. Правила для имен-условий (1) В статье имени условия фраза VALUE (ЗНАЧЕНИЕ) обязательна. Фраза VALUE (ЗНАЧЕНИЕ) и само имя-условия являются единственными допустимыми фразами в такой статье. (2) Формат 2 может использоваться только в связи с именами условий (см. ч.4, п.4.2.2.1.1.1). При использовании фразы THRU (ПО) литерал-2 должен быть меньше, чем литерал-3. |
6.2. Арифметические выражения 6.2.1. Определение арифметического выражения Арифметическим выражением может быть идентификатор числового элементарного данного; числовой литерал; стандартная константа ZERO (ZEROS, ZEROES) (НУЛЬ (НУЛИ)), а также идентификаторы, стандартные константы, литералы и выражения, разделенные знаками арифметических операций, либо арифметическое выражение, заключенное в скобки. Любому арифметическому выражению может предшествовать унарная операция. Допустимые комбинации переменных, числовых литералов, скобок и знаков арифметических операций приведены в п.6.2.3 настоящей части. Все идентификаторы и литералы, встречающиеся в арифметическом выражении, должны представлять либо числовые элементарные данные, либо числовые литералы. 6.2.2. Знаки арифметических операций Имеется пять знаков бинарных арифметических операций и два знака унарных арифметических операций, которые могут быть использованы в арифметических выражениях. Они изображаются специальными литерами, с обеих сторон которых должен стоять пробел. Ниже приведены знаки операций и их смысл. | ||||||
Знак бинарной операции | Смысл операции | |||||
+ | Сложение | |||||
- | Вычитание | |||||
* | Умножение | |||||
/ | Деление | |||||
** | Возведение в степень | |||||
Знак унарной операции | Смысл операции | |||||
+ | Соответствует умножению на числовой литерал +1 | |||||
- | Соответствует умножению на числовой литерал -1 | |||||
6.2.3. Правила вычисления арифметических выражений Арифметические выражения вычисляются по таким правилам: (1) для определения порядка выполнения указанных в арифметических выражениях действий могут применяться скобки. Выражения внутри скобок вычисляются первыми; внутри вложенных скобок вычисление происходит, начиная от самых внутренних скобок к внешним. Если скобки не используются или выражения, заключенные в скобки, находятся на одном и том же уровне вложенности, применяется следующий порядок старшинства выполнения операций: первая по старшинству операция - унарный плюс или минус; вторая - возведение в степень, третья - умножение или деление, четвертая - сложение или вычитание; (2) скобки используются в следующих случаях: для исключения логической неоднозначности, при появлении последовательных операций одного и того же иерархического уровня или для изменения последовательности выполнения операций, установленной порядком старшинства. Если последовательность выполнения не определена скобками, порядок выполнения последовательных операций одного и того же иерархического уровня определен слева направо; (3) ниже указаны способы, которыми идентификаторы, литералы, операции и скобки могут образовывать арифметическое выражение. | ||||||
Первый элемент арифметического выражения | Второй элемент арифметического выражения | |||||
Идентификатор или литерал | + - * / ** | Унарный плюс или минус | ( | ) | ||
Идентификатор или литерал | - | Р | - | - | Р | |
* / ** + - | P | - | Р | Р | - | |
Унарный плюс или минус | Р | - | - | Р | - | |
( | Р | - | Р | Р | - | |
) | - | Р | - | - | Р | |
Примечание. Буква Р представляет допустимую пару элементов, знак "-" - недопустимую; (4) арифметическое выражение может начинаться только с идентификатора, литерала или символов (, +, - и может заканчиваться только ), идентификатором или литералом. Между открывающими и закрывающими скобками в арифметическом выражении должно быть взаимно однозначное соответствие, так что каждая открывающая скобка должна быть слева от соответствующей ей закрывающей скобки. Если первая операция в арифметическом выражении унарная и это арифметическое выражение непосредственно следует за идентификатором или другим арифметическим выражением, ей должна непосредственно предшествовать левая скобка; (5) вычисление экспоненты в арифметическом выражении производится по следующим правилам: а) если значение выражения, которое должно быть возведено в степень, равно нулю, степень должна иметь значение большее нуля. В противном случае возникает условие переполнения (п.6.4.2 настоящей части); б) если в результате вычисления может получиться и положительное, и отрицательное число, в качестве результата возвращается положительное; в) если не существует действительного числа, которое может быть результатом вычисления, возникает условие переполнения; (6) арифметические выражения позволяют пользователю комбинировать арифметические операции без ограничений на совокупность операндов и (или) получаемых данных. В каждой реализации указываются способы, которые используются в обработке арифметических выражений. |
Значение | Знак операции отношения | |
Больше или не больше | IS [NOT] GREATER THAN | [HE] БОЛЬШЕ |
IS [NOT] > | [HE] > | |
Меньше или не меньше | IS [NOT] LESS THAN | [HE] МЕНЬШЕ |
IS [NOT] < | [HE] < | |
Равно или не равно | IS [NOT] EQUAL TO | [HE] РАВНО |
IS [NOT] = | [HE] = | |
Больше или равно | IS GREATER THAN OR EQUAL TO | БОЛЬШЕ ИЛИ РАВНО |
IS > = | > = | |
Меньше или равно | IS LESS THAN OR EQUAL TO | МЕНЬШЕ ИЛИ РАВНО |
IS < = | < = |
6.3.1.3. Условие имени-условия (условная переменная) Для условной переменной в условии имени-условия проверяется равенство ее значения одному из значений, связанных с имеием-условия. Общий формат для условия имени-условия: имя-условия-1 Если имя-условия связано с диапазоном или с несколькими диапазонами значений, то для условной переменной проверяется, попадает ли ее значение в диапазоны, включая концы диапазонов. Правила для сравнения условной переменной со значением имени-условия те же, что и для условий отношения. Результатом проверки является значение "истина", если одно из значений, соответствующих имени-условия-1, равно значению соответствующей условной переменной. |
6.3.1.5. Условие знака Условие знака определяет, является ли алгебраическое значение арифметического выражения меньшим нуля, большим нуля или равным нулю. Общий формат для условия знака: NOT (HE) (если оно используется) и следующее за ним ключевое слово определяют одно условие знака, которое задает алгебраическую проверку для определения значения истинности; например, NOT ZERO (HE НУЛЬ) является проверкой истинности на ненулевое (положительное или отрицательное) значение. Операнд положителен, если его значение больше нуля, отрицателен, если его значение меньше нуля, и равен нулю, если его значение равно нулю. Арифметическое выражение должно содержать по крайней мере один идентификатор. | |||||
6.3.2. Сложные условия Сложные условия образуются комбинацией простых условий и (или) сложных условий с помощью логических связок (логических операций AND (И) и OR (ИЛИ)) или отрицания этих условий с помощью логического отрицания (логическая операция NOT (HE)). Значением истинности сложного условия, заключенного или незаключенного в скобки, является то значение, которое следует в результате выполнения установленных логических операций над отдельными значениями истинности простых условий. Знаки логических операций и их значения следующие: AND (И) - логическая конъюнкция; значение истинности будет "истина", если оба соединенных ею условия истинны; "ложь", если одно или оба соединенных условия ложны; OR (ИЛИ) - логическая дизъюнкция; значение истинности есть "истина", если одно или оба соединенных этой связкой условий истинны; "ложь", если оба эти условия ложны; NOT (HE) - логическое отрицание или инверсия значения истинности; значение истинности есть "истина", если соответствующее условие ложно; "ложь", если это условие истинно. До и после знаков логических операций должен стоять пробел. | |||||
6.3.2.1. Отрицание условий Отрицание условия производится с помощью логической операции NOT (HE), которая отрицает значение истинности условия, к которому применяется. Таким образом, значением истинности отрицания условия будет "истина" тогда и только тогда, когда значение истинности исходного условия "ложь"; значением истинности отрицания условия будет "ложь" тогда и только тогда, когда значение истинности исходного условия "истина"; заключение отрицания условия в скобки не меняет его значение истинности. | |||||
Общий формат отрицания условия: NOT условие-1 НЕ условие-1 | |||||
6.3.2.2. Комбинированные условия | |||||
Комбинированные условия получаются посредством связывания условий одним из знаков логических | |||||
операций AND (И) или OR (ИЛИ). Общий формат комбинированных условий: | |||||
6.3.2.3. Старшинство логических операций и использование скобок При отсутствии парных скобок в сложном условии старшинство (т.е. степень связывания) логических операций задает условия, к которым применяются заданные логические операции, и предполагает эквивалентное связывание скобками. Порядок старшинства следующий: NOT (HE), AND (И), OR (ИЛИ). Таким образом условие вида "условие-1 OR NOT условие-2 AND условие-3" ("условие-1 ИЛИ НЕ условие-2 И условие-3") эквивалентно условию "условие-1 OR ((NOT условие-2) AND условие-3)" ("условие-1 ИЛИ ((НЕ условие-2) И условие-3)"). Когда в сложном условии используются скобки, они определяют связывание условий со знаками логических операций. Таким образом, скобки могут использоваться для изменения обычного старшинства операций, как указано выше. Например, приведенное выше сложное условие будет иметь другой смысл, если его задать в виде (условие-1 OR (NOT условие-2)) AND условие-3 ((условие-1 ИЛИ (НЕ условие-2)) И условие-3) (п.6.3.4 настоящей части). В табл.1 приведены способы комбинирования условий и логических операций и правила употребления скобок. Между открывающими и закрывающими скобками должно быть соответствие. Как видно из табл.1, пара элементов OR NOT (ИЛИ НЕ) является допустимой, в то время как пара NOT OR (HE ИЛИ) недопустима; пара NOT ( (НЕ ( ) допустима, a NOT NOT (HE НЕ) недопустима. | |||||
6.3.3. Сокращенные комбинированные условия отношений Если простые условия отношения или их отрицания комбинируются с помощью логических связок в последовательности, при которой условия отношения содержат совпадающие с предыдущим субъект или субъект и знак операции отношения и при этом не используются скобки, то любое условие отношения, за исключением первого, может быть сокращено следующим образом: (1) может быть опущен субъект условия отношения; (2) могут быть опущены субъект и знак операции отношения в условии отношения. Таблица 1 | |||||
Элемент | Может располагаться в условном выражении | Последовательность элементов слева направо | |||
первым | последним | Элементу, если он не первый, может непосредственно предшествовать только | За элементом, если он не последний, может непосредственно следовать только | ||
Простое- условие | Да | Да | OR (ИЛИ), NOT (HE) AND (И), ( | OR (ИЛИ), AND (И), ) | |
OR (ИЛИ) AND (И) | Нет | Нет | Простое-условие, ) | Простое-условие, NOT (HE), ( | |
NOT (HE) | Да | Нет | OR (ИЛИ), AND (И), ( | Простое-условие, ( | |
( | Да | Нет | OR (ИЛИ), NOT (HE) AND (И), ( | Простое-условие, NOT (HE), ( | |
) | Нет | Да | Простое-условие, ) | OR (ИЛИ), AND (И), ) | |
Формат для сокращенного условия Внутри последовательности условий отношения могут использоваться оба вида приведенных выше сокращений. Действие такого сокращенного условия такое же, как если бы опущенные части были взяты из ближайшего предшествующего полного условия отношения внутри того же предложения. Соответствия сокращенных и полных условий приведены ниже. Вставка опущенного субъекта и (или) операции отношения завершается, как только в сложном условии встречается полное простое условие. Интерпретация, применяемая к слову NOT (HE), в сокращенном комбинированном условии отношения, следующая: (1) если за словом NOT (HE) непосредственно следует знак операции GREATER (БОЛЬШЕ) (>), LESS (МЕНЬШЕ) (td> | |||||
Сокращенное комбинированное условие отношения | Эквивалент | ||||
а>b AND NOT Б И НЕ<Г ИЛИ Д | ((a>b) AND (a NOTБ) И (А НЕ<Г)) ИЛИ (А НЕ<Д) | ||||
a NOT EQUAL b OR с A HE РАВНО Б ИЛИ Г | (a NOT EQUAL b) OR (a NOT EQUAL c) (A HE РАВНО Б) ИЛИ (А НЕ РАВНО Г) | ||||
NOT a=b OR с НЕ А=Б ИЛИ Г | (NOT (a = b)) OR (a = c) (HE (А=Б)) ИЛИ (А=Г) | ||||
NOT (a GREATER b OR <с) НЕ (А БОЛЬШЕ Б ИЛИ <Г) | NOT ((a GREATER b) OR (atd> | ||||
NOT (a NOT>b AND с AND NOT d) HE (А НЕ>Б И Г И НЕ Д) | NOT ((((a NOT>b) AND (a NOT>c)) AND (NOT (a NOT>d)))) HE ((((А НЕ>Б) И (А НЕ>Г)) И (НЕ (А НЕ>Д)))) | ||||
6.3.4. Порядок вычисления условий Скобки явные и неявные задают уровень вложенности в сложном условии. Два или более условий, связанных только знаком логической операции AND (И) или только знаком логической операции OR (ИЛИ) на одном и том же уровне вложенности, устанавливают один уровень иерархии в сложном условии. Таким образом, полное сложное условие может рассматриваться как вложенная структура уровней иерархии. При этом само сложное условие соответствует самому внешнему уровню иерархии. В этом контексте вычисление условий в полном сложном условии начинается слева и продолжается по следующим правилам, рекурсивно применимым, когда необходимо. (1) На одном уровне иерархии связанные составляющие условия вычисляются в порядке слева направо. Вычисление на данном иерархическом уровне завершается сразу, как только значение истинности для него становится определенным независимо от того, все ли связанные в рамках этого уровня составляющие условия вычислены. Значения арифметических выражений вычисляются тогда и только тогда, когда вычисляются содержащие их условия. Аналогично, отрицания условий вычисляются тогда и только тогда, когда необходимо вычислить сложное условие, которое они задают (см. п.6.2.3 настоящей части). Применение вышеперечисленных правил показано на рис.1-4. Эти схемы не определяют требования к реализации. |
(1) нарушение правил вычисления степени всегда приводит к завершению выполнения арифметической операции и всегда вызывает условие переполнения (см. п.6.2.3 настоящей части); |
Если при выполнении операторов ADD (СЛОЖИТЬ) и SUBTRACT (ОТНЯТЬ) с фразой CORRESPONDING (СООТВЕТСТВЕННО) хоть одна отдельная операция вырабатывает условие переполнения, повелительный-оператор фразы ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) не выполняется до тех пор, пока не завершатся все сложения или вычитания. 6.4.3. Фраза CORRESPONDING (СООТВЕТСТВЕННО) Идентификаторы групповых данных для удобства изложения обозначим и . Два данных, одно из и одно из , определяются как соответствующие, если выполняются следующие условия: (1) данное в и данное в не определяются ключевым словом FILLER (ЗАПОЛНИТЕЛЬ) и имеют одно и то же имя и одни и те же уточнители вплоть до и , но исключая последние; (2) в случае использования оператора MOVE CORRESPONDING (ПОМЕСТИТЬ СООТВЕТСТВЕННО) по крайней мере одно из данных является элементарным и соответствующая пересылка допустима по правилам пересылки; оба данных являются элементарными числовыми данными в случае оператора ADD CORRESPONDING (СЛОЖИТЬ СООТВЕТСТВЕННО) или SUBTRACT CORRESPONDING (ОТНЯТЬ СООТВЕТСТВЕННО); (3) ни , ни не могут быть описаны с номером уровня 66, 77 или 88 или с фразой USAGE IS INDEX (ДЛЯ ИНДЕКСА); (4) данные, подчиненные или и содержащие в описании одну из фраз REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ), RENAMES (ПЕРЕИМЕНОВЫВАЕТ), OCCURS (ПОВТОРЯЕТСЯ), USAGE IS INDEX (ДЛЯ ИНДЕКСА), или подчиненные данным, описанным с такими фразами, не рассматриваются как соответствующие. Ссылки на и не могут модифицироваться; (5) имя каждого данного, удовлетворяющего вышеперечисленным условиям, должно быть однозначным, с учетом его подразумеваемого уточнения. |
Мнемоническое-имя-1 должно указываться в параграфе SPECIAL-NAMES (СЦЕЦИАЛЬНЫЕ-ИМЕНА) раздела оборудования и должно связываться с устройством оборудования. |
(6) при использовании формата 2 оператор ACCEPT (ПРИНЯТЬ) вызывает передачу запрашиваемой информации в данное, заданное идентификатором-2, согласно правилам оператора MOVE (ПОМЕСТИТЬ); дата, день, день недели и время автоматически обеспечиваются реализацией и не описываются в Кобол-программе. (7) дата содержит год столетия, месяц года и день месяца. Последовательность кодов, представляющая DATE (ДАТУ), такова, как если бы это данное было описано как элементарное целое числовое данное размером в шесть цифр, первые две из которых представляют год столетия, следующие две - месяц года, и последние две - число месяца. Например, дата 1 июля 1987 года изображается последовательностью цифр 870701. |
(8) день содержит год столетия и порядковый номер дня в году. Последовательность кодов, представляющая DAY (ДЕНЬ), такова, как если бы это данное было описано как элементарное целое числовое данное размером в пять цифр, первые две из которых (слева направо) представляют год столетия и последние три - порядковый номер дня в году. Например, 1 июля 1987 года представляется последовательностью цифр 87182. (9) Время содержит часы, минуты, секунды и сотые доли секунды. Время отсчитывается на 24-часовой основе, начиная от полуночи. Последовательность кодов, представляющих TIME (ВРЕМЯ), такова, как если бы это данное было описано как элементарное целое число без знака размером в 8 цифр, из которых первые две (слева направо) представляют часы, следующие две - минуты, следующие две - секунды и последние две - сотые доли секунды. Минимальное значение данного (ВРЕМЯ) равно 00000000, максимальное - 23595999. Если система не поддерживает возможности работы с долями секунды, те разряды, которые не могут быть определены, полагаются равными нулю. (10) DAY-OF-WEEK (ДЕНЬ-НЕДЕЛИ) состоит из одного данного, содержимое которого представляет день недели. DAY-OF-WEEK (ДЕНЬ-НЕДЕЛИ) доступен Кобол-программе, как если бы он был описан в ней как элементарное целое числовое данное без знака из одной цифры. В DAY-OF-WEEK (ДЕНЬ-НЕДЕЛИ) значением 1 задается понедельник, значением 2 вторник, ..., 7 - воскресенье. |
Формат 3 |
в) В формате 3 композиция операндов определяется отдельно для каждой пары соответствующих данных. (4) CORR (СООТВ) есть сокращение слова CORRESPONDING (СООТВЕТСТВЕННО). |
(3) Если используется формат 3, данные из группы, определенной идентификатором-1, складываются с соответствующими данными из группы, определенной идентификатором-2 и запоминаются в них. |
6.8. Оператор COMPUTE (ВЫЧИСЛИТЬ) 6.8.1. Назначение Оператор COMPUTE (ВЫЧИСЛИТЬ) присваивает одному или нескольким данным значение арифметического выражения. 6.8.2. Общий формат 6.8.3. Синтаксические правила (1) Идентификатор-1 должен ссылаться либо на элементарное числовое данное, либо на элементарное числовое редактируемое данное. 6.8.4. Общие правила (1) Арифметическое выражение, состоящее из единственного идентификатора или литерала, позволяет установить значение идентификатора-1 равным значению идентификатора или литерала. (2) Если для результата оператора указано несколько идентификаторов, предшествующих знаку равенства, то после вычисления значения арифметического выражения оно запоминается как новое значение каждого из данных, заданных посредством идентификатора-1. (3) Оператор COMPUTE (ВЫЧИСЛИТЬ) позволяет сочетать без ограничений на композиции операндов и результирующих данных арифметические операции, производимые арифметическими операторами ADD (СЛОЖИТЬ), SUBTRACT (ОТНЯТЬ), MULTIPLY (УМНОЖИТЬ) и DIVIDE (РАЗДЕЛИТЬ). Каждая реализация определяет приемы обработки арифметических выражений. (4) Дополнительные правила и объяснения, относящиеся к этому оператору, даются в соответствующих параграфах (см. ч.4, п.6.4.3; пп.6.4.1, 6.4.2, 6.4.4-6.4.6 настоящей части). |
(1) Мнемоническое-имя-1 связывается с устройством оборудования в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА) раздела оборудования. |
Формат 4 Формат 5 |
(4) Если используется формат 4, литерал-2 или значение идентификатора-2 делится на литерал-1, или значение идентификатора-2 и результат запоминается как значение идентификатора-3. Далее вычисляется остаток, и результат запоминается как значение идентификатора-4. Если идентификатор-4 индексирован, индексы вычисляются непосредственно перед присваиванием ему значения. (5) Если используется формат 5, литерал-1 или значение идентификатора-1 делится на литерал-2 или значение идентификатора-2. Далее выполнение деления продолжается как в вышеописанном формате 4. (6) Форматы 4 и 5 используются, когда требуется запомнить остаток операции деления как значение идентификатора-4. Остаток в Коболе определен как результат вычитания произведения частного (идентификатор-3) на делитель из делимого. Если идентификатор-3 определен как числовое редактируемое данное, для вычисления остатка используется промежуточное поле, содержащее неотредактированное частное. Если используется фраза ROUNDED (ОКРУГЛЯЯ), для вычисления остатка используется промежуточное поле, которое содержит неокругленное частное оператора DIVIDE (РАЗДЕЛИТЬ), но с отброшенными избыточными позициями. Промежуточное поле определяется как числовое, которое содержит столько же разрядов, такое же положение десятичной точки и то же наличие или отсутствие знака, что и частное (идентификатор-3). |
(7) Если используются форматы 4 и 5, точность остатка определяется вычислением, описанным выше. Если необходимо, при запоминании данного, представляемого идентификатором-4, производится выравнивание по десятичной точке и усечение (без округления). (8) При использовании в форматах 4 и 5 фразы ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) имеют место следующие правила: а) если имеет место переполнение частного и указана фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ), значение остатка не определено. При этом значения данных, определяемых идентификатором-3 и идентификатором-4, остаются неизменными; б) если имеет место переполнение остатка и указана фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ), значение данного, представленного идентификатором-4, не меняется. При наличии нескольких результатов пользователь должен сам определить, какая именно ситуация встретилась. |
(9) Дополнительные правила и объяснения, относящиеся к этому оператору, приводятся в соответствующих параграфах (см. ч.4, п.6.4.3. |
6.13. Оператор EVALUATE (ОЦЕНИТЬ) 6.13.1. Назначение Оператор EVALUATE (ОЦЕНИТЬ) описывает структуры со многими ветвлениями и соединениями. Он может вызывать оценку нескольких условий. Соответствующие действия объектной программы зависят от результатов этих оценок. 6.13.2. Общий формат |
6.13.3. Синтаксические правила (1) Каждый из операндов или слов TRUE (ИСТИНА) и FALSE (ЛОЖЬ), заданных перед первой фразой WHEN (КОГДА) оператора EVALUATE (ОЦЕНИТЬ), является субъектом выбора, а все вместе - множеством субъектов выбора. (2) Каждый из операндов или слов TRUE (ИСТИНА), FALSE (ЛОЖЬ), и ANY (ЛЮБОЕ), заданные во фразе WHEN (КОГДА) оператора EVALUATE (ОЦЕНИТЬ), рассматриваются от отдельности как объект выбора, а указанные вместе в одной фразе WHEN (КОГДА) - как множество объектов выбора. |
(3) Слова THROUGH и THRU эквивалентны. |
(4) Оба операнда одной фразы THROUGH (ПО) должны быть одного и того же класса. Связанные таким образом два операнда составляют один объект выбора. |
(5) Количество объектов выбора в каждом множестве объектов выбора должно быть равно количеству субъектов выбора. (6) Каждый объект выбора в множестве объектов выбора должен соответствовать субъекту выбора, имеющему ту же порядковую позицию во множестве субъектов выбора, согласно следующим правилам: |
а) идентификаторы, литералы или арифметические выражения, встречающиеся в объектах выбора, должны быть правильными операндами для сравнения с соответствующими операндами во множестве субъектов выбора (см. п.6.3.11 настоящей части); б) условие-1, условие-2 или слова TRUE (ИСТИНА) или FALSE (ЛОЖЬ), заданные как объекты выбора, должны соответствовать условным выражениям или словам TRUE (ИСТИНА) или FALSE (ЛОЖЬ) во множестве субъектов выбора; в) слово ANY (ЛЮБОЕ) может соответствовать субъекту выбора любого типа. |
6.13.4. Общие правила (1) Оператор EVALUATE (ОЦЕНИТЬ) действует так, как если бы все объекты и субъекты выбора были вычислены и получили бы числовые или нечисловые значения, или значения диапазонов числовых или нечисловых значений, или значений истинности. Эти значения определяются следующим образом: а) любому субъекту выбора, заданному идентификатором-1, идентификатором-2, и любому объекту выбора, заданному идентификатором-3, идентификатором-5, не содержащему фраз NOT (НЕ) или THRU (ПО), присваивается значение и класс данного, на который ссылается идентификатор; |
б) любому субъекту выбора, заданному литералом-1, литералом-2, и любому объекту выбора, заданному литералом-3, литералом-5 и не содержащему фраз NOT (HE) или THRU (ПО), присваивается значение и класс соответствующего литерала. Если литерал-2, литерал-5 является стандартной константой ZERO (НУЛЬ), ему присваивается класс соответствующего субъекта выбора; в) любому субъекту выбора, заданному арифметическим выражением выражение-1, выражение-2, и любому объекту выбора без фраз NOT (HE) и THRU (ПО), представленному арифметическим-выражением-1, арифметическим-выражением-3, присваивается числовое значение в соответствии с правилами вычисления арифметических выражений (см. п.6.2 настоящей части); |
г) любому субъекту выбора, в котором выражение-1, выражение-2 являются условными выражениями, и любому объекту выбора, в котором заданы условие-1, условие-2, присваивается значение истинности в соответствии с правилами вычисления условных выражений (см. п.6.3 настоящей части); д) любому субъекту выбора и любому объекту выбора, заданному словами TRUE (ИСТИНА) или FALSE (ЛОЖЬ), присваивается значение истинности. Значение истинности "истина" присваивается элементам, для которых задано слово TRUE (ИСТИНА) и значение истинности "ложь" присваивается элементам, для которых задано слово FALSE (ЛОЖЬ); е) любой объект выбора, заданный словом ANY (ЛЮБОЕ), далее не вычисляется; ж) если фраза THRU (ПО) задана для объекта выбора без фразы NOT (HE), диапазон значений включает все допустимые значения субъекта выбора, которые больше или равны первому операнду и меньше или равны второму в соответствии с правилами сравнения (см. п.6.3.1.1 настоящей части); з) если для объекта выбора задана фраза NOT (HE), значениями, соответствующими этому элементу, являются все допустимые значения субъекта выбора, не равные значению или не содержащиеся в диапазоне значений, которые соответствовали бы элементу, если бы не была задана фраза NOT (HE). |
(2) Далее выполнение оператора EVALUATE (ОЦЕНИТЬ) производится так, как если бы значения, присвоенные субъектам и объектам выбора, сравнивались, чтобы определить, удовлетворяют ли значения субъектов условиям, указанным соответствующими фразами WHEN (КОГДА). Это сравнение производится следующим образом: а) каждый объект выбора из множества объектов выбора первой фразы WHEN (КОГДА) сравнивается с субъектом выбора, имеющим тот же порядковый номер во множестве субъектов выбора. Чтобы сравнение было удовлетворено, должно выполняться одно из следующих условий: |
1) если сравниваемым элементам присваиваются числовые или нечисловые значения или диапазоны числовых или нечисловых значений, сравнение удовлетворяется, если в соответствии с правилами сравнения значение или одно из значений из диапазона, присвоенного объекту выбора, равно значению, присвоенному субъекту выбора (см. п.6.3.1.1 настоящей части); 2) если сравниваемым элементам присваиваются значения истинности, сравнение удовлетворяется, если сравниваемым элементам соответствуют одинаковые значения истинности; 3) если сравниваемый объект выбора задан словом ANY (ЛЮБОЕ), сравнение удовлетворяется всегда, независимо от значения субъекта выбора; |
б) если выше указанное сравнение удовлетворяется для каждого объекта выбора в сравниваемом множестве объектов выбора, фраза WHEN (КОГДА), содержащая это множество, считается удовлетворяющей множеству субъектов выбора; в) если вышеуказанное сравнение не удовлетворяется для одного или более объектов выбора из сравниваемого множества объектов, это множество не удовлетворяет множеству субъектов выбора; г) эти действия повторяются для множеств объектов выбора в том порядке, в котором эти множества задаются в исходной программе, до тех пор, пока либо встретится фраза WHEN (КОГДА), удовлетворяющая множеству субъектов выбора, либо будут исчерпаны все множества объектов выбора. (3) После завершения операции сравнения, выполнение оператора EVALUATE (ОЦЕНИТЬ) продолжается следующим образом: а) если выбрана некоторая фраза WHEN (КОГДА), начинается выполнение повелительного-оператора-1, следующего за этой фразой; б) если ни одна фраза WHEN (КОГДА) не выбрана и задана фраза WHEN OTHER (ИНАЧЕ), выполнение продолжается с повелительного-оператора-2; в) выполнение оператора EVALUATE (ОЦЕНИТЬ) завершается, когда выполнение достигает или конца повелительного-оператора-1 выбранной фразы WHEN (КОГДА), или конца повелительного-оператора-2, или если нет выбранной фразы WHEN (КОГДА), а фраза WHEN OTHER (ИНАЧЕ) не указана (см. ч.4, п.6.4.3). |
в) если оператор вложенный, то фразой ELSE (ИНАЧЕ) оператора IF (ЕСЛИ) на более высоком уровне вложенности (см. ч.4, п.6.4.3). |
6.17. Оператор INITIALIZE (ИНИЦИИРОВАТЬ) 6.17.1. Назначение Оператор INITIALIZE (ИНИЦИИРОВАТЬ) обеспечивает возможность присваивать выбранным типам полей данных заранее определенные значения, например, числовым данным нули, буквенно-цифровым данным - пробелы. 6.17.2. Общий формат |
6.17.3. Синтаксические правила (1) Литерал-1 и данное, на которое ссылается идентификатор-2, задают посылающую область; данное, на которое ссылается идентификатор-1, представляет принимающую область. (2) Каждая категория, заданная во фразе REPLACING (ЗАМЕНЯЯ), должна быть допустимой для принимающего операнда в операторе MOVE (ПОМЕСТИТЬ), в котором литерал-1 или данное, на которое ссылается идентификатор-2, используется как посылаемый операнд (п.6.19 настоящей части). (3) Одна и та же категория не может повторяться во фразе REPLACING (ЗАМЕНЯЯ). (4) Описание данного, заданного идентификатором-1 или подчиненного идентификатору-1, не должно содержать фразу OCCURS (ПОВТОРЯЕТСЯ) с вариантом DEPENDING (В ЗАВИСИМОСТИ ОТ). (5) Индексное данное не может быть операндом оператора INITIALIZE (ИНИЦИИРОВАТЬ). |
(6) Статья описания данного для данного, заданного идентификатором-1, не должна содержать фразу RENAMES (ПЕРЕИМЕНОВЫВАЕТ). |
6.17.4. Общие правила |
(1) Ключевое слово, следующее за словом REPLACING (ЗАМЕНЯЯ), соответствует категориям данных, как они определяются в этом документе (см. ч.4, п.4.3.3). |
(2) В зависимости от того, ссылается ли идентификатор-1 на элементарное или групповое данное, все действия выполняются, как если бы была написана последовательность операторов MOVE (ПОМЕСТИТЬ), каждый из которых имеет в качестве принимающего поля элементарное данное, подчиняющееся следующим правилам: если задана фраза REPLACING (ЗАМЕНЯЯ): |
а) если идентификатор-1 ссылается на групповое данное, любое подчиненное ему элементарное данное инициируется только в том случае, если оно принадлежит к категории, заданной во фразе REPLACING (ЗАМЕНЯЯ); |
б) если идентификатор-1 ссылается на элементарное данное, то это данное инициируется, только если оно принадлежит к категории, заданной во фразе REPLACING (ЗАМЕНЯЯ). Эта инициация производится следующим образом. Данное, на которое ссылается идентификатор-2 или литерал-1, действует как посылаемый операнд соответствующего неявного оператора MOVE (ПОМЕСТИТЬ). Это действие распространяется на все принимающие элементарные поля, включая все вхождения элементов таблицы в групповом данном за исключением полей, перечисленных в пунктах (3) и (4) общих правил. (3) Действие оператора INITIALIZE (ИНИЦИИРОВАТЬ) не распространяется на индексные данные и элементарные данные FILLER (ЗАПОЛНИТЕЛЬ). |
(4) Любое данное, которое подчиняется идентификатору принимающего данного и содержит фразу REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ), или любое подчиненное ему данное исключается из операции инициации. Однако принимающее данное или содержащее его данное может иметь в своем описании фразу REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ). (5) Если оператор задан без фразы REPLACING (ЗАМЕНЯЯ), в данные буквенной, буквенно-цифровой и буквенно-цифровой редактируемой категорий посылаются пробелы, а в данные числовой и числовой редактируемой категории посылаются нули. В этом случае операция выполняется так, как если бы каждое принимающее данное было бы принимающей областью элементарного оператора MOVE (ПОМЕСТИТЬ) с пробелом или нулем в качестве посылаемого данного. (6) Во всех случаях содержимое данных, на которые ссылается идентификатор-1, устанавливается на указанные значения в порядке (слева направо) появления идентификатора-1 в операторе INITIALIZE (ИНИЦИИРОВАТЬ). В пределах этой последовательности, если идентификатор-1 ссылается на групповое данное, подчиненные ему элементарные данные инициируются в порядке их определения внутри группы. (7) Если идентификатор-1 занимает ту же область памяти, что идентификатор-2, результат выполнения оператора не определен, даже если эти данные описаны одной статьей описания данных (см. п.6.4.5 настоящей части). |
Формат 4 |
(4) Для каждой из фраз ALL (ВСЕ), LEADING (ВЕДУЩИЕ), CHARACTERS (ЛИТЕРЫ), FIRST (ПЕРВЫЙ), CONVERTING (ПРЕВРАЩАЯ) могут быть определены одна фраза BEFORE (ДО) и одна фраза AFTER (ПОСЛЕ). |
(9) При использовании формата 4 размер литерала-5 или данного, представляемого идентификатором-7, должен быть равен размеру литерала-4 или данного, представляемого идентификатором-6. Если вместо литерала-5 используется стандартная константа, размер данного, представленного стандартной константой, равен размеру литерала-4 или размеру данного, представляемого идентификатором-6. (10) Одна и та же литера не должна содержаться дважды ни в литерале-4, ни в данном, представляемом идентификатором-6. |
В формате 4 (16) Оператор INSPECT (ПРОСМОТРЕТЬ) интерпретируется и выполняется так, как будто задан оператор INSPECT (ПРОСМОТРЕТЬ) в формате 2 для одного и того же идентификатора-1 с последовательностью фраз ALL (ВСЕ) - по одной для каждой литеры литерала-4. Результат оператора такой же, как если бы в каждой фразе ALL (ВСЕ) в качестве литерала-1 указывалась единственная литера литерала-4, а в качестве литерала-3 - соответствующая единственная литера литерала-5. Соответствие между литерами литерала-4 и литерами литерала-5 осуществляется по порядковому номеру литеры в данном. (17) Если идентификатор-4, идентификатор-6 или идентификатор-7 занимают одну и ту же область памяти, результат выполнения оператора INSPECT (ПРОСМОТРЕТЬ) не определен, даже если эти идентификаторы определены одной и той же статьей описания данных. |
INSPECT ТЕМ TALLYING | ||
СО-0 FOR ALL "AB", ALL "D" | ||
СО-1 FOR ALL "ВС" | ||
CO-2 FOR LEADING "EF" | ||
СO-3 FOR LEADING "B" | ||
CO-4 FOR CHARACTERS; | ||
ПРОСМОТРЕТЬ ТЕМ СЧИТАЯ | ||
В СО-0, ВСЕ "АВ", ВСЕ "D" | ||
В СО-1 ВСЕ "ВС" | ||
В СО-2 ВЕДУЩИЕ "EF" | ||
В СО-3 ВЕДУЩИЕ "В" | ||
В СО-4 ЛИТЕРЫ; | ||
INSPECT ТЕМ REPLACING | ||
ALL "AB" BY "XY", "D" BY "X" | ||
ALL "ВС" BY "VW" | ||
LEADING "EF" BY "TU" | ||
LEADING "B" BY "S" | ||
FIRST "G" BY "P" | ||
CHARACTERS BY "Z" | ||
ПРОСМОТРЕТЬ ТЕМ ЗАМЕНЯЯ | ||
ВСЕ "АВ" НА "XY", "D" НА "X" | ||
ВСЕ "ВС" НА "VW" | ||
ВЕДУЩИЕ "EF" НА "TU" | ||
ВЕДУЩИЕ "В" НА "S" | ||
ПЕРВЫЙ "G" НА "Р" | ||
ЛИТЕРЫ НА "Z" | ||
Результаты действия оператора показаны ниже. |
Начальное значение данного ТЕМ | СО-0 | СО-1 | СО-2 | СО-3 | СО-4 | Результирующее значение данного ТЕМ |
EFABDBCGABEFGG | 3 | 1 | 1 | 0 | 5 | TUXYXVWRXYZZPZ |
ВАВАВС | 2 | 0 | 0 | 1 | 1 | SXYXYZ |
ВВВС | 0 | 1 | 0 | 2 | 0 | SSVW |
INSPECT ТЕМ TALLYING | ||
СО-0 FOR CHARACTERS | ||
СО-0 FOR ALL "A" | ||
ПРОСМОТРЕТЬ ТЕМ СЧИТАЯ | ||
В СО-0 ЛИТЕРЫ | ||
В СО-1 ВСЕ "А" | ||
INSPECT ТЕМ REPLACING | ||
CHARACTERS BY "Z" | ||
ALL "A" BY "X" | ||
ПРОСМОТРЕТЬ ТЕМ ЗАМЕНЯЯ | ||
ЛИТЕРЫ НА "Z" | ||
ВСЕ "А" НА "X" | ||
Результаты работы операторов показаны ниже. |
Исходное значение данного ТЕМ | СО-0 | CO-1 | Результирующее значение данного ТЕМ |
ВВВ | 3 | 0 | ZZZ |
ABA | 3 | 0 | ZZZ |
INSPECT ТЕМ TALLYING | ||
СО-0 FOR ALL "AB" BEFORE "ВС" | ||
CO-1 FOR LEADING "В" AFTER "D" | ||
СО-2 FOR CHARACTERS AFTER "A" BEFORE "C" | ||
ПРОСМОТРЕТЬ ТЕМ СЧИТАЯ | ||
В СО-0 ВСЕ "АВ" ДО "ВС" | ||
В СО-1 ВЕДУЩИЕ "В" ПОСЛЕ "D" | ||
В СО-2 ЛИТЕРЫ ПОСЛЕ "А" ДО "С" | ||
INSPECT ТЕМ REPLACING | ||
ALL "AB" BY "XY" BEFORE "ВС" | ||
LEADING "В" BY "W" AFTER "D" | ||
FIRST "E" BY "V" AFTER "D" | ||
CHARACTERS BY "Z" AFTER "A" BEFORE "C" | ||
ПРОСМОТРЕТЬ ТЕМ ЗАМЕНЯЯ | ||
ВСЕ "АВ" НА "XY" ДО "ВС" | ||
ВЕДУЩИЕ "В" НА "W" ПОСЛЕ "D" | ||
ПЕРВЫЙ "Е" НА "V" ПОСЛЕ "D" | ||
ЛИТЕРЫ НА "Z" ПОСЛЕ "А" ДО "С" | ||
Результаты работы операторов показаны ниже. |
Начальное значение ТЕМ | СО-0 | СО-1 | СО-2 | Результирующее значение ТЕМ |
BBEABDABABBCABEE | 3 | 0 | 2 | BBEXYZXYXYZCABVE |
ADDDDC | 0 | 0 | 4 | AZZZZC |
ADDDDA | 0 | 0 | 5 | AZZZZZ |
CDDDDC | 0 | 0 | 0 | CDDDDC |
BDBBBDB | 0 | 3 | 0 | BDWWWDB |
INSPECT ТЕМ TALLYING | ||
СО-0 FOR ALL "AB" AFTER "BA" BEFORE "ВС" | ||
ПРОСМОТРЕТЬ ТЕМ СЧИТАЯ | ||
В СО-0 ВСЕ "АВ" ПОСЛЕ "ВА" ДО "ВС" | ||
INSPECT ТЕМ REPLACING | ||
ALL "AB" BY "XY" AFTER "BA" BEFORE "ВС" | ||
ПРОСМОТРЕТЬ ТЕМ ЗАМЕНЯЯ | ||
ВСЕ "АВ" НА "XY" ПОСЛЕ "ВА" ДО "ВС". |
Исходное значение данного ТЕМ | СО-0 | Результирующее значение данного ТЕМ |
АВАВАВАВС | 1 | ABABXYABC |
Пример 5 | ||
INSPECT ТЕМ CONVERTING | ||
"ABCD" TO "XYZX" AFTER QUOTE BEFORE "#" | ||
ПРОСМОТРЕТЬ ТЕМ ПРЕВРАЩАЯ | ||
"ABCD" В "XYZX" ПОСЛЕ КАВЫЧКА ДО "#" | ||
Этот оператор эквивалентен следующему: | ||
INSPECT ITEM REPLACING | ||
ALL "A" BY "X" AFTER QUOTE BEFORE "#" | ||
ALL "B" BY "Y" AFTER QUOTE BEFORE "#" | ||
ALL "C" BY "Z" AFTER QUOTE BEFORE "#" | ||
ALL "D" BY "X" AFTER QUOTE BEFORE "#" | ||
ПРОСМОТРЕТЬ ТЕМ ЗАМЕНЯЯ | ||
ВСЕ "А" НА "X" ПОСЛЕ КАВЫЧКА ДО "#" | ||
ВСЕ "В" НА "Y" ПОСЛЕ КАВЫЧКА ДО "#" | ||
ВСЕ "С" НА "Z" ПОСЛЕ КАВЫЧКА ДО "#" | ||
ВСЕ "D" НА "X" ПОСЛЕ КАВЫЧКА ДО "#" | ||
Результаты работы оператора показаны ниже. |
Начальное значение ТЕМ | Результирующее значение ТЕМ |
AC "AEBDFBCD # АВ" D | AC "XEYXFYZX # АВ" D |
Формат 2 |
(2) CORR (СООТВ) является сокращением слова CORRESPONDING (СООТВЕТСТВЕННО). (3) При использовании фразы CORRESPONDING (СООТВЕТСТВЕННО) оба идентификатора должны представлять групповые данные. |
Если пересылаемый операнд является числовым редактируемым, требуется дередактирование для установления неотредактированного числового значения операнда, возможно, со знаком, затем это неотредактированное числовое значение помещается в принимающее поле. |
Категория пересылаемого данного | Категория принимающего данного | ||
Буквенная | Буквенно-цифровая, буквенно-цифровая, редактируемая | Числовая (целое), числовая (нецелое), числовая редактируемая | |
Буквенная | Да По п.4в | Да По п.4а | Нет По п.3а |
Буквенно-цифровая | Да По п.4в | Да По п.4а | Да По п.4б |
Буквенно-цифровая редактируемая | Да По п.4в | Да По п.4а | Нет По п.3а |
Числовая (целое) | Нет По п.3б | Да По п.4а | Да По п.4б |
Числовая (нецелое) | Нет По п.3б | Нет По п.3в | Да По п.4б |
Числовая редактируемая | Нет По п.3б | Да По п.4а | Да По п.4б |
(1) Если используется фраза CORRESPONDING (СООТВЕТСТВЕННО), то отдельные компоненты идентификатора-1 перемещаются в соответствующие компоненты идентификатора-2 согласно правилам, приведенным в п.6.4.3 настоящей части. Результат действия фразы такой же, как при использовании отдельного оператора MOVE (ПОМЕСТИТЬ) для каждой пары соответствующих идентификаторов. |
На вычисление длины идентификатора-1 или идентификатора-2 может влиять вариант DEPENDING ON (В ЗАВИСИМОСТИ ОТ) фразы OCCURS (ПОВТОРЯЕТСЯ) (см. п.5.8 настоящей части). |
MOVE A (M) TO temp | ПОМЕСТИТЬ А (М) В пром | |||
MOVE temp TO M | ПОМЕСТИТЬ пром В М | |||
MOVE temp ТО Р (М) | ПОМЕСТИТЬ пром В Р (М) |
Формат 4 |
(2) При использовании формата 4, если опущено имя-процедуры-1, не должна употребляться фраза AFTER (ЗАТЕМ). (3) Если не указаны ни фраза TEST BEFORE (С ПРОВЕРКОЙ В НАЧАЛЕ), ни фраза TEST AFTER (С ПРОВЕРКОЙ В КОНЦЕ), предполагается по умолчанию TEST BEFORE (С ПРОВЕРКОЙ В НАЧАЛЕ). |
(5) Каждый литерал является числовым литералом. |
(7) Если во фразе VARYING (МЕНЯЯ) или AFTER (ЗАТЕМ) указано имя-индекса, то: а) идентификатор, относящийся к фразам FROM (ОТ) и BY (НА), должен представлять положительное целое; б) литерал, относящийся к фразе FROM (ОТ), должен представлять положительное целое; в) литерал, относящийся к фразе BY (НА), должен представлять целое, отличное от нуля. (8) Если во фразе FROM (ОТ) задано имя-индекса, то: а) идентификатор, относящийся к фразам VARYING (МЕНЯЯ) и AFTER (ЗАТЕМ), должен представлять целое; б) идентификатор, относящийся к фразе BY (НА), должен представлять целое; в) литерал, относящийся к фразе BY (НА), должен представлять целое. (9) Литерал во фразе BY (НА) не должен равняться нулю. |
(12) Допускаются до шести фраз AFTER (ЗАТЕМ) в формате 4 оператора PERFORM (ВЫПОЛНИТЬ). |
Если указана фраза TEST AFTER (С ПРОВЕРКОЙ В КОНЦЕ), оператор PERFORM (ВЫПОЛНИТЬ) выполняется так же, как и в случае, когда указана фраза TEST BEFORE (С ПРОВЕРКОЙ В НАЧАЛЕ) с тем отличием, что условие проверяется после выполнения указанного множества операторов. Индексирование и модификация ссылок, имеющие отношение к операндам, указанным в условии-1, вычисляются при каждой проверке условия; г) формат 4 используется для увеличения значения одного или более идентификаторов или имен-индексов в установленном порядке во время выполнения оператора PERFORM (ВЫПОЛНИТЬ). В нижеприведенных пояснениях все сказанное для значения идентификатора, указанного во фразах VARYING (МЕНЯЯ), AFTER (ЗАТЕМ), FROM (ОТ) (текущего значения), относится и к именам-индексов. Если указаны имя-индекса-1 или имя-индекса-2, значение соответствующего индекса в начале оператора PERFORM (ВЫПОЛНИТЬ) должно быть установлено на номер вхождения элемента в таблице. Если указаны имя-индекса-2 или имя-индекса-4, значение данного, представленного идентификатором-2 или идентификатором-5, в начале оператора PERFORM (ВЫПОЛНИТЬ) должно быть равно номеру вхождения элемента в таблице, соответствующей имени-индекса-2 или имени-индекса-4. Как описано ниже, последующее изменение имени-индекса-1 или имени-индекса-3 не должно приводить к тому, что соответствующий индекс примет значение, находящееся вне допустимого для него диапазона, за исключением ситуации после завершения оператора PERFORM (ВЫПОЛНИТЬ), когда индекс, соответствующий имени-индекса-1, может содержать значение, большее или меньшее границ допустимого диапазона на одно значение шага изменения. Если идентификатор-2 или идентификатор-5 индексированы, индексы вычисляются каждый раз, когда устанавливается или изменяется значение данного, представленного идентификатором. Если индексированы идентификатор-3, идентификатор-4, идентификатор-6 или идентификатор-7, индексы вычисляются каждый раз при установке или изменении содержимого данного, представленного идентификатором. Индексирование и модификация ссылок, соответствующие операндам, указанным в условии-1 или условии-2, выполняются при каждой проверке условия. |
Далее представлены схемы выполнения нескольких типов оператора PERFORM (ВЫПОЛНИТЬ) формата 4, которые не должны рассматриваться как предписания по их реализации. 1) Если фраза TEST BEFORE (С ПРОВЕРКОЙ В НАЧАЛЕ) указана или подразумевается. Когда изменяется данное, представленное одним идентификатором, то в начале выполнения оператора PERFORM (ВЫПОЛНИТЬ) данное, представленное идентификатором-2, устанавливается равным литералу-1 или текущему значению данного, представленного идентификатором-3; если условие, заданное фразой UNTIL (ДО), ложно, то один раз выполняется указанное множество операторов. Затем к значению данного, представленного идентификатором-2, прибавляется значение данного, представленного идентификатором-4 или литерала-2 (при этом оно увеличивается или уменьшается), и условие-1 опять проверяется. Цикл продолжается до тех пор, пока это условие не станет истинным; в этом случае управление передается на конец оператора PERFORM (ВЫПОЛНИТЬ). Если условие-1 истинно в начале выполнения оператора PERFORM (ВЫПОЛНИТЬ), то управление передается на конец оператора PERFORM (ВЫПОЛНИТЬ). На рис.1 представлена схема алгоритма оператора PERFORM (ВЫПОЛНИТЬ) с фразой VARYING (МЕНЯЯ) и фразой TEST BEFORE (С ПРОВЕРКОЙ В НАЧАЛЕ) и одним условием. Рис.1. Схема алгоритма оператора PERFORM (ВЫПОЛНИТЬ) с фразой VARYING (МЕНЯЯ) и фразой TEST BEFORE (С ПРОВЕРКОЙ В НАЧАЛЕ) и одним условием Рис.1 |
Когда указано изменение данных, представленных двумя идентификаторами, содержимому данного, представленного идентификатором-2, присваивается значение литерала-1 или текущее значение данного, представленного идентификатором-3; содержимому данного, представленного идентификатором-5, присваивается значение литерала-3 или текущее значение данного, представленного идентификатором-6, после чего вычисляется условие-1, если оно истинно, то управление передается на конец оператора PERFORM (ВЫПОЛНИТЬ), если оно ложно, вычисляется условие-2. Если условие-2 ложно, то один раз выполняется указанное множество операторов, после чего содержимое данного, представленного идентификатором-5, увеличивается на литерал-4 или содержимое данного, представленного идентификатором-7, и опять вычисляется условие-2. Этот цикл вычислений и увеличений продолжается до тех пор, пока условие не станет истинным. Когда условие-2 истинно, содержимое данного, представленного идентификатором-2, увеличивается на литерал-2 или содержимое данного, представленного идентификатором-4, а содержимому данного, представленного идентификатором-5, присваивается значение литерала-3 или текущее значение данного, представленного идентификатором-6, и опять вычисляется условие-1. Оператор PERFORM (ВЫПОЛНИТЬ) завершается, если условие-1 истинно, иначе цикл продолжается, пока условие-1 не станет истинным. На рис.2 представлен алгоритм оператора PERFORM (ВЫПОЛНИТЬ) с фразой VARYING (МЕНЯЯ), фразой TEST BEFORE (С ПРОВЕРКОЙ В НАЧАЛЕ) и двумя условиями. Рис.2. Алгоритм оператора PERFORM (ВЫПОЛНИТЬ) с фразой VARYING (МЕНЯЯ), фразой TEST BEFORE (С ПРОВЕРКОЙ В НАЧАЛЕ) и двумя условиями Рис.2 |
По окончании выполнения оператора PERFORM (ВЫПОЛНИТЬ) данное, представленное идентификатором-5, содержит литерал-3 или текущее значение данного, представленного идентификатором-6. Данное, представленное идентификатором-2, содержит значение, которое отличается от последнего используемого значения на величину приращения (положительную или отрицательную), кроме случая, когда условие-1 было истинно в начале выполнения оператора PERFORM (ВЫПОЛНИТЬ); в указанном случае данное, представленное идентификатором-2, содержит литерал-1 или текущее значение данного, представленного идентификатором-3. |
2) Если фраза TEST AFTER (С ПРОВЕРКОЙ В КОНЦЕ) указана или подразумевается. |
При изменении данного, представленного одним идентификатором, в начале выполнения оператора PERFORM (ВЫПОЛНИТЬ) содержимому данного, представленного идентификатором-2, присваивается значение литерала-1 или текущее значение данного, представленного идентификатором-3 затем один раз выполняется указанное множество операторов и проверяется условие-1, из фразы UNTIL (ДО). Если условие ложно, значение данного, представленного идентификатором-1, изменяется на величину приращения (положительного или отрицательного), заданного литералом-2 или значением данного, представленного идентификатором-4; затем опять выполняется указанное множество операторов. Цикл повторяется, пока условие-1 не станет истинным, после чего управление передается на конец оператора PERFORM (ВЫПОЛНИТЬ). |
На рис.3 представлен алгоритм оператора PERFORM (ВЫПОЛНИТЬ) с фразой VARYING (МЕНЯЯ) и фразой TEST AFTER (С ПРОВЕРКОЙ В КОНЦЕ) и одним условием. |
Рис.3. Алгоритм оператора PERFORM (ВЫПОЛНИТЬ) с фразой VARYING (МЕНЯЯ) и фразой TEST AFTER (С ПРОВЕРКОЙ В КОНЦЕ) и одним условием Рис.3 |
При изменении данных, представленных двумя идентификаторами, содержимому данного, представленного идентификатором-2, присваивается значение литерала-1 или текущее значение данного, представленного идентификатором-3, затем содержимому данного, представленного идентификатором-5, присваивается значение литерала-3 или текущее значение данного, представленного идентификатором-6; после этого выполняется указанное множество операторов. Затем вычисляется условие-2; если оно ложно, содержимое данного, представленного идентификатором-5, изменяется на величину литерала-4 или содержимого данного, представленного идентификатором-7; далее опять выполняется указанное множество операторов. Цикл продолжается до тех пор, пока условие-2 не окажется истинным в момент вычисления условия-2 и не потребуется вычислять условие-1. Если же оно ложно, содержимое данного, представленного идентификатором-2, изменяется на величину литерала-2 или содержимого данного, представленного идентификатором-1, а содержимому данного, представленного идентификатором-5, присваивается значение литерала-3 или текущее значение данного, представленного идентификатором-6; затем опять выполняется указанное множество операторов. Этот цикл повторяется до тех пор, пока вновь вычисленное условие-1 не станет истинным, тогда управление передается на конец оператора PERFORM (ВЫПОЛНИТЬ). После завершения выполнения оператора PERFORM (ВЫПОЛНИТЬ) каждое данное, измененное фразами AFTER (ЗАТЕМ) и VARYING (МЕНЯЯ), содержит то значение, которое оно получило в результате последнего выполнения указанного множества операторов. На рис.4 представлен алгоритм оператора PERFORM (ВЫПОЛНИТЬ) с фразой VARYING (МЕНЯЯ) и фразой TEST AFTER (С ПРОВЕРКОЙ В КОНЦЕ) и двумя условиями. Рис.4. Алгоритм оператора PERFORM (ВЫПОЛНИТЬ) с фразой VARYING (МЕНЯЯ) и фразой TEST AFTER (С ПРОВЕРКОЙ В КОНЦЕ) и двумя условиями Рис.4 |
Во время выполнения соответствующего оператору PERFORM (ВЫПОЛНИТЬ) указанного множества операторов следует учитывать изменение переменных, указанных во фразе VARYING (МЕНЯЯ) (данного, представленного идентификатором-2, и имени-индекса-1), во фразе BY (НА) (данного, представленного идентификатором-4), во фразе AFTER (ЗАТЕМ) (данного, представленного идентификатором-5, и имени-индекса-3), во фразе FROM (ОТ) (данного, представленного идентификатором-3, и имени-индекса-2); эти изменения будут влиять на выполнение оператора PERFORM (ВЫПОЛНИТЬ). При изменении данных, представленных двумя идентификаторами, каждый раз, когда изменяется содержимое данного, представленного идентификатором-2, данное, представленное идентификатором-5, проходит полный цикл (с учетом фраз FROM (ОТ), BY (НА), UNTIL (ДО)). При изменении трех или более данных, представленных идентификаторами, обработка происходит так же, как и в случае двух идентификаторов, за исключением того факта, что данное, изменяемое каждой фразой AFTER (ЗАТЕМ), проходит полный цикл всякий раз, когда добавляется приращение (положительное или отрицательное) к данному, измененному предыдущей фразой AFTER (ЗАТЕМ). |
(1) Значения данных, на которые ссылаются идентификатор-4 и идентификатор-7, не должны быть равными нулю. (2) Если в фразах VARYING (МЕНЯЯ) и AFTER (ЗАТЕМ) указано имя-индекса и в соответствующей фразе FROM (ОТ) задан идентификатор, то значение данного, на которое ссылается идентификатор, должно быть положительным. |
6.22. Оператор SEARCH (ИСКАТЬ) 6.22.1. Назначение Оператор SEARCH (ИСКАТЬ) используется для поиска в таблице некоторого элемента таблицы, который удовлетворяет заданному условию, и установления соответствующего значения индекса, указывающего этот элемент таблицы. 6.22.2. Общий формат Формат 1 Формат 2 6.22.3. Синтаксические правила (1) В форматах 1 и 2 идентификатор-1 не должен быть индексирован или представлять модифицированную ссылку, но его описание должно содержать фразу OCCURS (ПОВТОРЯЕТСЯ) с вариантом INDEXED (ИНДЕКСИРУЕТСЯ). Описание идентификатора-1 в формате 2 должно содержать также вариант ASCENDING (DESCENDING) KEY (ПО ВОЗРАСТАНИЮ (УБЫВАНИЮ) КЛЮЧА) во фразе OCCURS (ПОВТОРЯЕТСЯ). (2) Идентификатор-2 должен ссылаться на данное, описанное с фразой USAGE IS INDEX (ДЛЯ ИНДЕКСА) или как числовое элементарное данное, не имеющее позиций справа от подразумеваемой десятичной точки. Идентификатор-2 не может индексироваться первым (или единственным) именем-индекса, определенным вариантом INDEXED BY (ИНДЕКСИРУЕТСЯ) во фразе OCCURS (ПОВТОРЯЕТСЯ), соответствующей идентификатору-1. (3) В формате 1 условие-1 может быть любым допустимым в Коболе условием (см. п.6.3 настоящей части). |
(4) В формате 2 все упоминаемые имена-условий должны быть определены как имеющие только одно значение. Имя-данного, связанное с именем-условия, должно быть указано во фразе ASCENDING (DESCENDING) KEY (ПО ВОЗРАСТАНИЮ (УБЫВАНИЮ) КЛЮЧА) идентификатора-1. Каждое имя-данного-1, имя-данного-2 может уточняться. Каждое имя-данного-1, имя-данного-2 должно быть индексировано первым именем-индекса, связанным с идентификатором-1, вместе с другими требующимися индексами и должно быть указано во фразе ASCENDING (DESCENDING) KEY (ПО ВОЗРАСТАНИЮ (УБЫВАНИЮ) КЛЮЧА) идентификатора-1. Идентификатор-3, идентификатор-4 или идентификаторы, задаваемые в арифметическом-выражении-1, арифметическом-выражении-2 не должны быть указаны во фразе ASCENDING (DESCENDING) KEY (ПО ВОЗРАСТАНИЮ (УБЫВАНИЮ) КЛЮЧА) идентификатора-1 или индексироваться первым именем-индекса, связанным с идентификатором-1. Если в формате 2 ссылаются на некоторое имя-данного, указанное в варианте ASCENDING (DESCENDING) KEY (ПО ВОЗРАСТАНИЮ (УБЫВАНИЮ) КЛЮЧА) для данного, представленного идентификатором-1, или на связанное с ним имя-условия, то все предшествующие имена-данных, указанные во фразе ASCENDING (DESCENDING) KEY (ПО ВОЗРАСТАНИЮ (УБЫВАНИЮ) КЛЮЧА) для данного, представленного идентификатором-1, или соответствующие им имена-условий тоже должны быть указаны. (5) Если указана фраза END-SEARCH (КОНЕЦ-ИСКАТЬ), то нельзя указывать фразу NEXT SENTENCE (СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ). 6.22.4. Общие правила (1) Оператор SEARCH (ИСКАТЬ) может завершаться: а) фразой END-SEARCH (КОНЕЦ-ИСКАТЬ) на соответствующем уровне вложенности; б) разделителем точка; |
в) фразами ELSE (ИНАЧЕ) и END-IF (КОНЕЦ-ЕСЛИ), соответствующими предшествующему оператору IF (ЕСЛИ) (см. ч.4, п.6.4.3). |
(2) Если используется формат 1 оператора SEARCH (ИСКАТЬ), то имеет место последовательный тип поиска (перебор), начиная с текущей установки индекса. |
а) Если в начале выполнения оператора SEARCH (ИСКАТЬ) имя-индекса, связанное с идентификатором-1, содержит значение, которое соответствует номеру вхождения, большему чем наибольший допустимый номер вхождения для идентификатора-1, то оператор SEARCH (ИСКАТЬ) сразу завершается. Наибольший допустимый номер вхождения определяется во фразе OCCURS (ПОВТОРЯЕТСЯ) (см. п.5.8 настоящей части). Тогда, если в операторе указана фраза AT END (В КОНЦЕ), выполняется повелительный-оператор-1, иначе управление передается на конец оператора SEARCH (ИСКАТЬ). |
б) Если в начале выполнения оператора SEARCH (ИСКАТЬ) имя-индекса, связанное с идентификатором-1, содержит значение, которое соответствует номеру вхождения, не превосходящему наибольший допустимый номер вхождения для идентификатора-1, то оператор SEARCH (ИСКАТЬ) вычисляет условия в том порядке, в каком они написаны, используя установленные индексы, чтобы определить вхождения проверяемых данных. Если ни одно из условий не удовлетворено, имя-индекса для идентификатора-1 увеличивается, чтобы обеспечить ссылку на следующее вхождение. Этот процесс повторяется с использованием вновь установленного имени-индекса до тех пор, пока очередное значение имени-индекса для идентификатора-1 не превзойдет наибольшего допустимого. В этом последнем случае поиск заканчивается как указывалось выше. Если одно из условий удовлетворено при его вычислении, поиск заканчивается и управление передается на повелительный оператор, связанный с этим условием, если он указан, или на следующее выполнимое предложение, если указана фраза NEXT SENTENCE (СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ); имя-индекса остается установленным на тот номер вхождения, при котором удовлетворилось условие. |
(3) В формате 2 оператора SEARCH (ИСКАТЬ) результат операции SEARCH ALL (ИСКАТЬ ОСОБО) определен только в следующих ситуациях: а) данные в таблице упорядочены таким же образом, как это описано в варианте KEY IS (ПО ВОЗРАСТАНИЮ (УБЫВАНИЮ) КЛЮЧА), связанном с идентификатором-1; б) значения ключа (ключей), упомянутого во фразе WHEN (КОГДА), достаточны, чтобы однозначно идентифицировать элемент таблицы. (4) Если используется формат 2 оператора SEARCH (ИСКАТЬ), то может иметь место непоследовательный тип поиска; начальная установка имени-индекса для идентификатора-1 игнорируется, и установка имени-индекса меняется в ходе операции поиска способом, определяемым реализацией, с теми ограничениями, что никогда значение имени-индекса не превзойдет значение, которое соответствует последнему элементу в таблице, и не будет меньше значения, которое соответствует первому элементу таблицы. Длина таблицы определяется во фразе OCCURS (ПОВТОРЯЕТСЯ) (см. п.5.8 настоящей части). Если для каждой установки индекса в разрешенном интервале какое-либо условие, задаваемое во фразе WHEN (КОГДА), не удовлетворено, то управление передается повелительному-оператору-1 фразы AT END (В КОНЦЕ), если она указана, или на конец оператора SEARCH (ИСКАТЬ), если эта фраза не задана. В любом случае конечная установка индекса не определена. Если все условия могут быть удовлетворены, то индекс устанавливается на соответствующее вхождение, которое позволяет удовлетворить условия, и управление передается повелительному-оператору-2, если он указан, или следующему выполнимому предложению, если указана фраза NEXT SENTENCE (СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ). |
(5) После выполнения повелительного-оператора-1 или повелительного-оператора-2, которые не кончаются оператором GO TO (ПЕРЕЙТИ), управление передается на конец оператора SEARCH (ИСКАТЬ). (6) В формате 2 имя-индекса, которое используется в операции поиска, есть первое (или единственное) имя-индекса, указанное в варианте INDEXED BY (ИНДЕКСИРУЕТСЯ) фразы OCCURS (ПОВТОРЯЕТСЯ), связанной с идентификатором-1. Все другие имена-индексов для идентификатора-1 остаются неизменными. (7) Если в формате 1 фраза VARYING (МЕНЯЯ) не используется, имя-индекса, которое используется в операции поиска, есть первое (или единственное) имя-индекса, указанное в варианте INDEXED BY (ИНДЕКСИРУЕТСЯ) фразы OCCURS (ПОВТОРЯЕТСЯ), связанной с идентификатором-1. Все другие имена-индексов для идентификатора-1 остаются неизменными. (8) Если в формате 1 задана фраза VARYING (МЕНЯЯ) имя-индекса-1 и это имя-индекса-1 указано в варианте INDEXED (ИНДЕКСИРУЕТСЯ) фразы OCCURS (ПОВТОРЯЕТСЯ), связанной с идентификатором-1, то оно используется для поиска. Если имя-индекса-1 не указано в варианте INDEXED BY (ИНДЕКСИРУЕТСЯ) идентификатора-1 или задана фраза VARYING (МЕНЯЯ) идентификатор-2, то для поиска используется первое (или единственное) имя-индекса, заданное в варианте INDEXED BY (ИНДЕКСИРУЕТСЯ) фразы OCCURS (ПОВТОРЯЕТСЯ), связанной с идентификатором-1. Кроме того, имеют место следующие операции: |
а) если используется фраза VARYING (МЕНЯЯ) имя-индекса-1 и это имя-индекса-1 появляется в варианте INDEXED BY (ИНДЕКСИРУЕТСЯ) фразы OCCURS (ПОВТОРЯЕТСЯ), связанной со статьей другой таблицы, то номер вхождения, представляемый именем-индекса-1, увеличивается на такую же величину и в то же время, что и номер вхождения, представляемый именем-индекса, связанным с идентификатором-1; |
б) если задана фраза VARYING (МЕНЯЯ) идентификатор-2 и идентификатор-2 есть индексное данное, то данное, представленное идентификатором-2, увеличивается на такую же величину и в то же время, что и индекс, связанный с идентификатором-1. Если идентификатор-2 не является индексным данным, то значение, представленное идентификатором-2, увеличивается на единицу в то же время, что и индекс, связанный, с идентификатором-1. |
(9) Область действия оператора SEARCH (ИСКАТЬ) ограничивается фразой END-SEARCH (КОНЕЦ-ИСКАТЬ) (см. ч.4, п.6.4.3). |
(10) На рис.1 приведена схема выполнения формата 1 оператора SEARCH (ИСКАТЬ), содержащего две фразы WHEN (КОГДА). Эта схема не должна рассматриваться как предписание по реализации оператора. На приведенном рисунке звездочками помечены следующие операции: * - операции, включаемые только тогда, когда соответствующий вариант указан в формате оператора; ** - каждая из этих передач ведет к точке выхода оператора SEARCH (ИСКАТЬ), если только повелительный-оператор не заканчивается оператором GO TO (ПЕРЕЙТИ). |
(3) Оператор SET (УСТАНОВИТЬ) используется также для изменения значений условных переменных. |
Рис.1 |
Формат 4 |
(6) Имя-условия-1 должно соответствовать условной переменной. |
Пересылаемое данное | Принимающее данное | ||
Целое-данное | Имя-индекса | Индексное данное | |
Целое-литерал | Не разрешено 3в | Разрешено 3а | Не разрешено 3б |
Целое-данное | Не разрешено 3в | Разрешено 3а | Не разрешено 3б |
Имя-индекса | Разрешено 3в | Разрешено 3а | Разрешено 3б |
Индексное | Не разрешено 3в | Разрешено 3а* | Разрешено 3б* |
________________
* Никакие преобразования не имеют места.
Формат 4 (7) Литерал во фразе VALUE (ЗНАЧЕНИЕ), соответствующей имени-условия-1, присваивается условной переменной согласно правилам использования фразы VALUE (ЗНАЧЕНИЕ) (см. п.5.15 настоящей части). Если указано несколько литералов во фразе VALUE (ЗНАЧЕНИЕ), условной переменной присваивается значение первого литерала, заданного в этой фразе. (8) Если указано несколько имен условий при использовании формата 4, результаты такие же, как и в случае записи отдельного оператора SET (УСТАНОВИТЬ) для каждого имени-условия-1 в том же порядке, в каком они указаны в операторе SET (УСТАНОВИТЬ). |
6.25. Оператор STRING (СОБРАТЬ) 6.25.1. Назначение Оператор STRING (СОБРАТЬ) соединяет часть или полное содержимое двух или нескольких данных в одно данное. 6.25.2. Общий формат 6.25.3. Синтаксические правила (1) Литерал-1 и литерал-2 не могут быть стандартными константами, начинающимися со слова ALL (ВСЕ). (2) Все литералы должны быть нечисловыми литералами и все идентификаторы, за исключением идентификатора-4, должны быть определены явно или неявно с использованием DISPLAY (ДЛЯ ВЫДАЧИ). (3) Идентификатор-3 не может быть модификацией ссылки. (4) Идентификатор-3 не может быть редактируемым данным; он не может быть описан с фразой JUSTIFIED (СДВИНУТО). (5) Идентификатор-4 должен быть описан как элементарное числовое целое данное, имеющее достаточный размер для того, чтобы содержать значение, равное увеличенному на единицу размеру данного, представленного идентификатором-3. Символ Р (М) не может использоваться в строке-литер шаблона данного, представленного идентификатором-4. (6) Если идентификатор-1 или идентификатор-2 представляют элементарные числовые данные, то они должны быть описаны как целые, причем соответствующие строки-литер шаблона не должны содержать литеры Р (М). 6.25.4. Общие правила (1) Идентификатор-1 и литерал-1 представляют собой пересылаемые данные, а идентификатор-3 - принимающее данное. |
(2) Литерал-2 и значение данного, представленного идентификатором-2, указывают одну или несколько литер, ограничивающих перемещение. Если используется фраза SIZE (РАЗМЕРОМ), данные, определённые идентификатором-1 или литералом-1, помещаются полностью. Если в качестве ограничителя используется стандартная константа, она представляет нечисловой литерал длиной в одну литеру. (3) Если вместо литерала-1 и литерала-2 используется стандартная константа, то она представляет данное длиной в одну литеру с использованием DISPLAY (ДЛЯ ВЫДАЧИ). (4) Перемещение данного при выполнении оператора STRING (СОБРАТЬ) определяется следующими правилами: а) литеры из литерала-1 или из значения данного, представляемого идентификатором-1, передаются в данное, представляемое идентификатором-3, согласно правилам перемещения буквенно-цифрового в буквенно-цифровое данное, однако дополнение пробелами не производится; б) если задана фраза DELIMITED (ОГРАНИЧИВАЯСЬ) без фразы SIZE (РАЗМЕРОМ), значение данного, представляемого идентификатором-1, или значение литерала-1 передается в принимающее данное в последовательности, заданной оператором STRING (СОБРАТЬ), начиная с самой левой литеры и продолжая слева направо, пока не будет достигнут конец данного или не встретится литера (литеры), заданная литералом-2 или значением данного, представленного идентификатором-2. Эта литера (литеры) не пересылается; в) если задана фраза DELIMITED BY SIZE (ОГРАНИЧИВАЯСЬ РАЗМЕРОМ), значение, представленное литералом-1, или значение данного, представляемого идентификатором-1, передаются в последовательности, заданной оператором STRING (СОБРАТЬ), в данное, представляемое идектификатором-3, пока все данные не будут переданы или не будет достигнут конец данного, определяемого идентификатором-3. |
Эти действия повторяются до исчерпания всех вхождений литерала-1 или данных, представленных идентификатором-1. |
(5) Если задана фраза POINTER (УКАЗАТЕЛЬ), значение данного, представленного идентификатором-4, перед выполнением оператора STRING (СОБРАТЬ) должно быть установлено в начальное значение (не меньше 1). |
(6) Если фраза POINTER (УКАЗАТЕЛЬ) не задана, оператор выполняется так, как если бы было задано начальное значение данного, представленного идентификатором-4, равное 1. |
(7) Когда литеры пересылаются в принимающее данное, на которое ссылается идентификатор-3, пересылка литер в принимающее данное начинается от указанной значением данного, представленного идентификатором-4, позиции литеры этого данного (при условии, что значение данного, представленного идентификатором-4, не превышает длины данного, представленного идентификатором-3) и затем данное, представленное идентификатором-4, увеличивается на единицу перед пересылкой каждой литеры или перед завершением выполнения оператора STRING (СОБРАТЬ). Значение данного, представленного идентификатором-4, во время выполнения оператора STRING (СОБРАТЬ) изменяется только вышеописанным методом. |
(8) В результате выполнения оператора STRING (СОБРАТЬ) изменяется только та часть данного, представленного идентификатором-3, к которой было обращение во время выполнения оператора STRING (СОБРАТЬ). Оставшаяся часть данного, представленного идентификатором-3, после выполнения оператора STRING (СОБРАТЬ) не изменяется. |
(9) Перед каждой пересылкой литеры в данное, представленное идентификатором-3, если значение данного, представленного идентификатором-4, окажется меньшим 1 либо превзойдет число позиций литер в данном, представляемом идентификатором-3, дальнейшее перемещение в данное, представляемое идентификатором-3, прекращается и фраза NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ), если она указана, игнорируется, а управление передается на конец оператора STRING (СОБРАТЬ). Если в формате оператора указана фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ), то выполняется повелительный-оператор-1, указанный в этой фразе. Если управление передается повелительному-оператору-1, выполнение продолжается согласно правилам для каждого оператора, указанного в повелительном-операторе-1. Если выполняется оператор ветвления процедур или условный оператор, вызывающий явную передачу управления, то управление передается согласно правилам для этих операторов; в противном случае по завершении выполнения повелительного-оператора-1 управление передается на конец оператора STRING (СОБРАТЬ). |
(10) Если во время выполнения оператора STRING (СОБРАТЬ) с фразой NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ) условия, описанные в общем правиле (9), не встречаются, после пересылки данных согласно другим общим правилам фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ), если она указана, игнорируется и управление передается на конец оператора STRING (СОБРАТЬ), или, если указана фраза NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ), повелительному-оператору-2. Если управление передается повелительному-оператору-2, выполнение продолжается согласно правилам для операторов, указанных в повелительном-операторе-2. Если выполняется ветвление процедуры или условный оператор, ведущий к явной передаче управления, управление передается в соответствии с правилами для этого оператора; в противном случае после завершения выполнения повелительного-оператора-2 управление передается на конец оператора STRING (СОБРАТЬ). (11) Фраза END-STRING (КОНЕЦ-СОБРАТЬ) ограничивает область действия оператора STRING (СОБРАТЬ) (см. ч.4, п.6.4.3). (12) Если идентификатор-1 и идентификатор-2 занимают ту же область памяти, что и идентификатор-3 и идентификатор-4, или идентификатор-3 и идентификатор-4 занимают одну и ту же область памяти, результат выполнения оператора STRING (СОБРАТЬ) не определен, даже если они определены одной и той же статьей описания данных (см. п.6.4.5 настоящей части). |
Формат 3 |
(3) Если используется формат 3, данные из группы, представленной идентификатором-1, вычитаются от соответствующих данных из группы, представленной идентификатором-2, и запоминаются в последних. |
6.27. Оператор UNSTRING (РАЗОБРАТЬ) 6.27.1. Назначение Оператор UNSTRING (РАЗОБРАТЬ) позволяет расчленить данное, находящееся в пересылаемом поле, и поместить отдельные его части в несколько принимающих полей. 6.27.2. Общий формат 6.27.3. Синтаксические правила (1) Литерал-1 и литерал-2 должны быть нечисловыми литералами. Литералы могут быть стандартными константами, кроме начинающихся со слова ALL (ВСЕ). (2) Идентификатор-1, идентификатор-2, идентификатор-3 и идентификатор-5 должны быть определены явно или неявно как буквенно-цифровые данные. (3) Идентификатор-4 может быть задан как буквенное, буквенно-цифровое или числовое данное (причем в строке литер шаблона не должен использоваться символ Р (М)), описанное явно или неявно с использованием DISPLAY (ДЛЯ ВЫДАЧИ). (4) Идентификатор-6 и идентификатор-8 должны быть описаны как элементарные числовые целые, при этом символ Р (М) не может использоваться в строке литер шаблона. (5) Идентификатор-7 должен быть описан как элементарное числовое целое, его размер должен быть достаточен, чтобы содержать значение, равное размеру данного, представленного идентификатором-1, увеличенное на единицу. Символ Р (М) не может использоваться в строке литер шаблона идентификатора-7. (6) Фразы DELIMITER (ОГРАНИЧИТЕЛЬ) и COUNT (СЧЕТ) могут быть заданы только тогда, когда задана фраза DELIMITED (ОГРАНИЧИВАЯСЬ). (7) Идентификатор-1 не должен быть модифицированной ссылкой. |
6.27.4. Общие правила (1) Все сказанное об идентификаторе-2 и литерале-1 относится в равной мере к идентификатору-3 и литералу-2 соответственно. (2) Идентификатор-1 представляет собой пересылаемое поле; (3) Идентификатор-4 представляет собой поле принимающего данного, идентификатор-5 представляет принимающее поле для ограничителя. (4) Литерал-1 или данное, представленное идентификатором-2, задает границу пересылаемого данного, называемую ограничителем. (5) Данное, представленное идентификатором-6, представляет количество литер в пересылаемом данном, выделенных с помощью ограничителя для перемещения в принимающее данное, представленное идентификатором-4. В это количество не входят литеры ограничителя. (6) Значение данного, представленного идентификатором-7, указывает относительную позицию литеры в поле, определенном идентификатором-1. (7) К моменту завершения оператора UNSTRING (РАЗОБРАТЬ) значение данного, представленного идентификатором-8, указывает число принимающих данных, участвовавших в операции. (8) Если стандартная константа используется как ограничитель, она представляет собой нечисловой литерал размером в одну литеру. Если задана фраза ALL (ВСЕМИ), одно или несколько последовательных вхождений литерала-1 или значения данного, представленного идентификатором-2, обрабатываются так же, как одно вхождение, которое помещается в принимающее поле согласно общему правилу 13г. |
(9) Когда при просмотре данного, представленного идентификатором-1, обнаруживаются два последовательных вхождения ограничителя, текущее принимающее поле заполняется пробелами, если оно описано как буквенное или буквенно-цифровое, или нулями, если оно описано как числовое. (10) Литерал-1 или значение данного, представленного идентификатором-2, может содержать любые литеры из множества литер машины. (11) Каждый литерал-1 или данное, представленное идентификатором-2, представляет один ограничитель. Когда ограничитель содержит две или более литеры, эти литеры должны находиться в указанном ограничителем порядке в последовательных позициях пересылаемого данного, чтобы быть распознанными в качестве ограничителя. (12) Если во фразе DELIMITED BY (ОГРАНИЧИВАЯСЬ) задано два или более ограничителя, между ними существует условие OR (ИЛИ). Каждый ограничитель поочередно сравнивается с рассматриваемыми позициями пересылаемого поля в указанной последовательности. При обнаружении совпадения рассматриваемые литеры считаются единым ограничителем. Ни одна литера в пересылаемом поле не может рассматриваться принадлежащей нескольким ограничителям. (13) К началу работы оператора UNSTRING (РАЗОБРАТЬ) данное, определяемое идентификатором-4, является текущим принимающим полем, в которое пересылаются литеры данного, представленного идентификатором-1. Позиции последнего просматриваются согласно следующим правилам: |
а) если задана фраза POINTER (УКАЗАТЕЛЬ), строка литер, представленная идентификатором-1, просматривается, начиная с относительной позиции литеры, указанной значением данного, представленного идентификатором-7. Если фраза POINTER (УКАЗАТЕЛЬ) не задана, проверка строки литер начинается с самой левой ее позиции; |
б) если задана фраза DELIMITED BY (ОГРАНИЧИВАЯСЬ), просмотр прекращается при обнаружении вхождения ограничителя, заданного литералом-1 или значением данного, представленного идентификатором-2 (см. общее правило 11). Если фраза DELIMITED BY (ОГРАНИЧИВАЯСЬ) не задана, число просматриваемых литер равно размеру текущего принимающего данного (однако, если знак принимающего данного занимает отдельную позицию литеры, число просматриваемых литер полагается на единицу меньшим размера текущего принимающего поля данного). |
Если вхождение ограничителя не обнаружено, просмотр оканчивается на последней позиции литеры данного, представленного идентификатором-1; в) просмотренные литеры (за исключением литер, совпадающих с ограничителем, если они имеются) рассматриваются как элементарные буквенно-цифровые данные и пересылаются в текущее принимающее поле согласно правилам оператора MOVE (ПОМЕСТИТЬ) (см. п.6.19 настоящей части); г) если задана фраза DELIMITER (ОГРАНИЧИТЕЛЬ), обнаруженные при просмотре литеры ограничителя рассматриваются как элементарное буквенно-цифровое данное и помещаются согласно правилам оператора MOVE (ПОМЕСТИТЬ) в данное, представленное идентификатором-5. |
Если вхождение ограничителя в данное, представленное идентификатором-1, не обнаружено, то данное, представленное идентификатором-5, заполняется пробелами; д) если задана фраза COUNT IN (СЧЕТ), то количество просмотренных литер (исключая литеры ограничителя, если они имеются) помещается согласно правилам для перемещения элементарного данного в данное, представленное идентификатором-6; е) если задана фраза DELIMITED BY (ОГРАНИЧИВАЯСЬ), то после заполнения очередного принимающего данного просмотр продолжается с первой литеры справа от ограничителе. Если фраза DELIMITED BY (ОГРАНИЧИВАЯСЬ) не задана, просмотр продолжается от первой литеры, находящейся справа от последней пересланной литеры; ж) после завершения пересылки в принимающее данное, представленное идентификатором-4, текущим принимающим полем становится данное, представленное следующим вхождением идентификатора-4, и все описанные выше действия повторяются до тех пор, пока не будут исчерпаны все литеры в данном, определяемом идентификатором-1, или не будут заполнены все принимающие поля. (14) Начальная установка значения данного, связанного с фразой POINTER (УКАЗАТЕЛЬ) или TALLYING (СЧИТАЯ), осуществляется пользователем. (15) Значение данного, представленного идентификатором-7, увеличивается на единицу при просмотре каждой литеры в данном, представленном идентификатором-1. После завершения выполнения оператора UNSTRING (РАЗОБРАТЬ) с фразой POINTER (УКАЗАТЕЛЬ) значение данного, представленного идентификатором-7, становится равным начальному значению плюс число просмотренных литер данного, представленного идентификатором-1. |
(16) После завершения выполнения оператора UNSTRING (РАЗОБРАТЬ) с фразой TALLYING (СЧИТАЯ) значение данного, представленного идентификатором-8, становится равным его начальному значению плюс число принимающих полей, участвовавших в выполнении оператора. |
(17) Условие переполнения возникает при следующих ситуациях: а) если к моменту начала работы оператора UNSTRING (РАЗОБРАТЬ) значение данного, представленного идентификатором-7, меньше 1 или больше размера данного, представленного идентификатором-1; б) если в некоторый момент выполнения оператора UNSTRING (РАЗОБРАТЬ) данное, представленное идентификатором-1, содержит непросмотренные позиции, а все принимающие поля уже использованы. |
(18) При обнаружении условия переполнения выполнение оператора UNSTRING (РАЗОБРАТЬ) прекращается; если указана фраза NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ), то она игнорируется, а управление передается на конец оператора UNSTRING (РАЗОБРАТЬ); если же была указана фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ), то управление передается повелительному-оператору-1. В этом случае выполнение продолжается согласно правилам для операторов, указанных в повелительном-операторе-1. Если выполняется оператор ветвления процедур или условный оператор, вызывающий явную передачу управления, управление передается согласно правилам для соответствующих операторов; в противном случае после завершения выполнения повелительного-оператора-1 управление передается на конец оператора UNSTRING (РАЗОБРАТЬ). |
(19) Фраза END-UNSTRING (КОНЕЦ-РАЗОБРАТЬ) ограничивает область действия оператора UNSTRING (РАЗОБРАТЬ) (см. ч.4, п.6.4.3). |
(20) Если во время выполнения оператора UNSTRING (РАЗОБРАТЬ) описанные в пункте (17) условия не возникли, после завершения пересылки данных согласно другим общим правилам фраза OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ), если она задана, игнорируется, а управление передается на конец оператора UNSTRING (РАЗОБРАТЬ) или, если указана фраза NOT OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ), повелительному-оператору-2. Если управление передано повелительному-оператору-2, выполнение продолжается согласно правилам для операторов, указанных в повелительном-операторе-2. Если выполняется оператор ветвления процедур или условный оператор, подразумевающий явную передачу управления, управление передается согласно правилам для соответствующих операторов; в противном случае после завершения выполнения повелительного-оператора-2 управление передается на конец оператора UNSTRING (РАЗОБРАТЬ). (21) Если идентификатор-1, идентификатор-2 и идентификатор-3 занимают ту же область памяти, что и идентификатор-5, идентификатор-6, идентификатор-7 или идентификатор-8, или если идентификатор-4, идентификатор-5 и идентификатор-6 занимают ту же область памяти, что и идентификатор-7 или идентификатор-8, или если идентификатор-7 и идентификатор-8 занимают одну и ту же область памяти, результат выполнения оператора UNSTRING (РАЗОБРАТЬ) не определен, даже если эти идентификаторы описаны одной и той же статьей описания данных (см. п.6.4.5 настоящей части). |
Уровень 2 последовательного ввода-вывода обеспечивает полные возможности для статей управления файлом, статей описания файла и статей параграфа I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ). В разделе процедур уровень 2 последовательного ввода-вывода обеспечивает полные возможности операторов CLOSE (ЗАКРЫТЬ), OPEN (ОТКРЫТЬ), READ (ЧИТАТЬ), REWRITE (ОБНОВИТЬ), WRITE (ПИСАТЬ) и USE (ИСПОЛЬЗОВАТЬ). |
в) Состояние ввода-вывода = 05. Оператор OPEN (ОТКРЫТЬ) успешно выполнился, но указанный в нем необязательный файл во время выполнения оператора OPEN (ОТКРЫТЬ) отсутствует. Если режим открытия I-O (ВХОДНОЙ-ВЫХОДНОЙ) или EXTEND (ДОПОЛНЯЕМЫЙ), файл будет создаваться. |
2) оператор READ (ЧИТАТЬ) применяется первый раз для отсутствующего необязательного входного файла. |
д) Состояние ввода-вывода = 38. Постоянная ошибка возникла из-за того, что выдан оператор OPEN (ОТКРЫТЬ) для файла, ранее закрытого с замком. |
1) сделана попытка записать или обновить запись, длиннее максимально допустимой или короче минимально допустимой в соответствии с фразой RECORD IS VARYING (В ЗАПИСИ ПЕРЕМЕННОЕ ЧИСЛО) для данного имени файла; |
1.3.8. Специальный регистр LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) Зарезервированное слово LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) является именем для счетчика строк, порождаемого, если в статье описания файла задана фраза LINAGE (ВЕРСТКА) (п.3.7 настоящей части). Этот счетчик неявно описан как целое без знака, размер которого равен размеру целого-1 или данного, заданного именем-данного-1 во фразе LINAGE (ВЕРСТКА). LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) может использоваться только в операторах раздела процедур, однако его значение может изменить только система управления вводом-выводом. |
в) корректную спецификацию для имени-реализации-2 во фразе RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ). Правила корректности имени-реализации-2 определяются реализацией; г) одно и то же значение целого-1 во фразе RESERVE (РЕЗЕРВИРОВАТЬ); |
ж) одну и ту же спецификацию фразы PADDING CHARACTER (ЛИТЕРА ЗАПОЛНИТЕЛЬ). (2) Фраза OPTIONAL (НЕОБЯЗАТЕЛЬНОГО) применима только к файлам, открытым в режиме ввода, ввода-вывода или дополнения. Ее указание требуется для файлов, которые могут отсутствовать во время выполнения объектной программы. |
а) одну и ту же спецификацию фразы OPTIONAL (НЕОБЯЗАТЕЛЬНОГО); |
2.7. Фраза PADDING CHARACTER (ЛИТЕРА ЗАПОЛНИТЕЛЬ) 2.7.1. Назначение Фраза PADDING CHARACTER (ЛИТЕРА ЗАПОЛНИТЕЛЬ) определяет литеру, которая будет использоваться для заполнения блока в последовательных файлах. 2.7.2. Общий формат 2.7.3. Синтаксические правила (1) Литерал-1 должен быть односимвольным нечисловым литералом. (2) Имя-данного-1 может уточняться. (3) Имя-данного-1 должно определяться в разделе данных как односимвольное данное буквенно-числовой категории и не должно определяться в секции коммуникаций, секции файлов или секции отчетов. 2.7.4. Общие правила |
(1) Фраза PADDING CHARACTER (ЛИТЕРА ЗАПОЛНИТЕЛЬ) задает литеру, которая будет использоваться для заполнения блока в последовательных файлах. Во время выполнения операций ввода любая часть блока, находящаяся за последней логической записью и состоящая полностью из литер заполнителя, будет пропускаться. Во время выполнения операций ввода логическая запись, состоящая полностью из литер заполнителя, будет игнорироваться. При операциях вывода любая часть блока, находящаяся после последней логической записи, будет полностью заполняться литерами заполнителя. (2) Если фраза PADDING CHARACTER (ЛИТЕРА ЗАПОЛНИТЕЛЬ) не применима для типа устройства, которое назначено файлу, создание или распознавание литер заполнителя не будет иметь места. (3) Во время выполнения оператора OPEN (ОТКРЫТЬ) для файла, который будет создаваться, литерал-1 или значение данного, на которое ссылается имя-данного-1, используется как значение литеры заполнителя. Литера заполнитель является фиксированным свойством файла. (4) Если для файла задана фраза CODE-SET (АЛФАВИТ), преобразование литеры заполнителя, заданной литералом-1 или содержимым имени-данного-1, устанавливается для файла при его открытии. (5) Если фраза PADDING CHARACTER (ЛИТЕРА ЗАПОЛНИТЕЛЬ) не задана, значение, используемое для литеры заполнителя, определяется реализацией. (6) Если соответствующий определитель файла является внешним определителем файла, все фразы PADDING CHARACTER (ЛИТЕРА ЗАПОЛНИТЕЛЬ) в единице исполнения, связанные с этим определителем файла, должны иметь одни и те же спецификации. Если задано имя-данного-1, оно должно ссылаться на внешнее данное. |
2.8. Фраза RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ) 2.8.1. Назначение Фраза RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ) указывает способ определения длины записей переменной длины во внешней среде. 2.8.2. Общий формат 2.8.3. Синтаксические правила (1) Фраза RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ) может задаваться только для записей переменной длины. (2) Если задана фраза STANDARD-1 (СТАНДАРТ-А), внешней средой должен быть файл на магнитной ленте. 2.8.4. Общие правила |
(1) Фраза RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ) используется для указания способа определения длины записей переменной длины во внешней среде. Любой используемый способ не будет отражаться на области записи или размере записи, используемом в программе. (2) Если задана фраза STANDARD-1 (СТАНДАРТ-А), способ для определения длины записей переменной длины определяется в соответствии с Американским Национальным Стандартом Х3.27-1978 "Метки магнитных лент и структура файлов для обмена информацией" и стандартом ИСО 1001 "Метки магнитных лент и структура файлов для обмена информацией". (3) Если задано имя-реализации-1, для определения длины записей переменной длины используется метод, определяемый реализацией. (4) Если фраза RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ) не задана, способ, используемый для определения длины записей переменной длины, определяется реализацией. (5) Во время успешного выполнения оператора OPEN (ОТКРЫТЬ) ограничителем записи является ограничитель, заданный во фразе RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ) в статье управления файлом, связанной с именем-файла, указанным в операторе OPEN (ОТКРЫТЬ). (6) Если соответствующий определитель файла является внешним определителем файла, все фразы RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ) в единице исполнения, относящиеся к данному определителю файла, должны иметь одинаковые спецификации. |
2.9. Фраза RESERVE (РЕЗЕРВИРОВАТЬ) 2.9.1. Назначение Фраза RESERVE (РЕЗЕРВИРОВАТЬ) позволяет пользователю указать количество распределяемых областей ввода-вывода. 2.9.2. Общий формат 2.9.3. Общие правила (1) Фраза RESERVE (РЕЗЕРВИРОВАТЬ) позволяет пользователю задавать количество распределяемых областей ввода-вывода. Если задана фраза RESERVE (РЕЗЕРВИРОВАТЬ), количество распределяемых областей ввода-вывода равно значению целого-1. Если фраза RESERVE (РЕЗЕРВИРОВАТЬ) не задана, количество распределяемых областей ввода-вывода определяется реализацией. |
2.11. Фраза MULTIPLE FILE TAPE (НА ОДНОЙ КАТУШКЕ) 2.11.1. Назначение Фраза MULTIPLE FILE TAPE (НА ОДНОЙ КАТУШКЕ) задает расположение файлов на катушке, содержащей несколько файлов. Фраза MULTIPLE FILE TAPE (НА ОДНОЙ КАТУШКЕ) является устаревшим элементом в настоящем стандарте и будет удалена в следующей редакции стандарта. 2.11.2. Общий формат 2.11.3. Общие правила (1) Фраза MULTIPLE FILE TAPE (НА ОДНОЙ КАТУШКЕ) требуется, когда более чем один файл расположен на одной физической катушке ленты. Независимо от общего числа файлов на одной катушке, должны описываться только те файлы, которые используются в объектной программе. Если все имена файлов перечисляются в последовательном порядке, фразу POSITION (ПОЗИЦИЯ) можно не задавать. Если некоторый файл из последовательности не указан, должна задаваться позиция относительно начала ленты. Одновременно может быть открыто не более одного файла на одной и той же катушке ленты. |
б) имя файла не должно появляться более чем в одной фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ); в) если одно или более имен-файлов из фразы SAME AREA (ОБЩАЯ ОБЛАСТЬ) появляется во фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), все имена файлов из этой фразы SAME AREA (ОБЩАЯ ОБЛАСТЬ) должны появиться во фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ). Однако во фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ) могут задаваться также дополнительные имена-файлов, не встречающиеся во фразе SAME AREA (ОБЩАЯ ОБЛАСТЬ). Правило, согласно которому в любой заданный момент времени может быть открыт только один из файлов, упомянутых во фразе SAME AREA (ОБЩАЯ ОБЛАСТЬ), имеет предпочтение над правилом, что все файлы, заданные во фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), могут быть открыты в любой момент времени. |
(2) Фраза SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ) указывает, что два или более файлов, на которые ссылаются имя-файла-1, имя-файла-2, должны использовать одну и ту же область памяти для обработки текущей логической записи. Все эти файлы могут быть открыты одновременно. Логическая запись в общей области записи рассматривается как логическая запись каждого открытого как выходной файла, имя которого встречается в этой фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), а также последнего прочитанного входного файла, имя которого задано в данной фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ). Это эквивалентно неявному переопределению этой области, т.е. записи выравниваются по позиции самой левой литеры. |
3.7. Фраза LINAGE (ВЕРСТКА) 3.7.1. Назначение Фраза LINAGE (ВЕРСТКА) указывает на размер логической страницы в строках. Она также позволяет указать размер верхнего и нижнего поля на странице и номер строки тела страницы, на которой начинается область концовки. 3.7.2. Общий формат 3.7.3. Синтаксические правила (1) Имя-данного-1, имя-данного-2, имя-данного-3, имя-данного-4 должны относиться к элементарным целым числовым данным. (2) Имя-данного-1, имя-данного-2, имя-данного-3, имя-данного-4 могут уточняться. (3) Значение целого-2 должно быть не больше целого-1. (4) Значения целого-3 и целого-4 могут быть нулем. 3.7.4. Общие правила |
(1) Фраза LINAGE (ВЕРСТКА) указывает на размер логической страницы в строках. Размер логической страницы есть сумма величин, заданных в каждом варианте фразы, исключая вариант FOOTING (КОНЦОВКА). Если вариант LINES AT BOTTOM (ВЕРХНЕЕ ПОЛЕ) или LINES AT TOP (НИЖНЕЕ ПОЛЕ) не задан, размеры соответствующих полей равны нулю. Если не задан вариант FOOTING (КОНЦОВКА), условие конца страницы не возникает, независимо от того, существует условие переполнения страницы или нет. |
Размер логической страницы может устанавливаться независимо от размера физической страницы. |
(2) Целое-1 или значение данного, представленного именем-данного-1, указывает число строк, которые могут быть записаны и (или) пропущены на логической странице. Это значение должно быть больше нуля. Та часть логической страницы, на которой эти строки могут быть записаны и (или) пропущены, называется телом страницы. |
(3) Целое-2 или значение данного, представленного именем-данного-2, указывает номер строки тела страницы, на которой начинается область концовки. Это значение должно быть больше нуля, но не должно превышать целое-1 или значение данного, представленного именем-данного-1. |
Область концовки включает в себя область логической страницы между строкой, определяемой целым-2 или значением данного, представленного именем-данного-2, и строкой, определяемой целым-1 или значением данного, представленного именем-данного-1, включительно. |
(4) Целое-3 или значение данного, представленного именем-данного-3, указывает число строк, содержащихся в верхнем поле логической страницы. Это значение может быть равно нулю. |
(5) Целое-4 или значение данного, представленного именем-данного-4, указывает число строк, содержащихся в нижнем поле логической страницы. Это значение может быть равно нулю. (6) Целое-1, целое-3 и целое-4, если они указаны, используются во время открытия файла при выполнении оператора OPEN (ОТКРЫТЬ) с фразой OUTPUT (ВЫХОДНОЙ) и указывают число строк, содержащееся в каждой из названных областей логической страницы. Целое-2, если оно указано, должно использоваться во время определения области концовки. Эти значения используются для всех логических страниц, которые записываются в файл, во время выполнения данной программы (7) Значения данных, представленных именем-данного-1, именем-данного-3 и именем-данного-4, если они указаны, используются следующим образом: |
а) во время выполнения оператора OPEN (ОТКРЫТЬ) с фразой OUTPUT (ВЫХОДНОЙ) для определения количества строк в каждой из указанных областей для первой логической страницы; б) во время выполнения оператора WRITE (ПИСАТЬ) с фразой ADVANCING PAGE (ПРОДВИЖЕНИЯ СТРАНИЦЫ) или при возникновении условия переполнения страницы для определения количества строк в каждой из указанных областей для следующей страницы (п.4.7 настоящей части). (8) Значение данного, представленного именем-данного-2, во время выполнения оператора OPEN (ОТКРЫТЬ) с фразой OUTPUT (ВЫХОДНОЙ) используется для определения области концовки первой логической страницы, а во время выполнения оператора WRITE (ПИСАТЬ) с фразой ADVANCING PAGE (ПРОДВИЖЕНИЯ СТРАНИЦЫ) или при возникновении условия переполнения страницы - для определения области концовки следующей логической страницы. (9) LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) генерируется, если задана фраза LINAGE (ВЕРСТКА). Его значение в каждый момент времени указывает номер строки тела текущей логической страницы, на которую позиционировано устройство. LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) подчиняется следующим правилам: |
а) для каждого файла, описанного в секции файлов с фразой LINAGE (ВЕРСТКА), генерируется отдельный LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ); б) LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) может использоваться в операторах раздела процедур, однако только система управления вводом-выводом может изменять его значение. Если в программе LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) используется для нескольких файлов, он должен при необходимости уточняться именем файла; в) при выполнении оператора WRITE (ПИСАТЬ) связанный с файлом LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) автоматически увеличивается по следующим правилам: 1) если указан оператор WRITE (ПИСАТЬ) с фразой ADVANCING PAGE (ПРОДВИЖЕНИЯ СТРАНИЦЫ), LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) автоматически устанавливается на 1. После установки счетчика верстки на 1 его значение неявно увеличивается до тех пор, пока не превысит значение, заданное целым-1 или данным, на которое ссылается имя-данного-1; 2) если во фразе ADVANCING (ПРОДВИЖЕНИЯ) указаны идентификатора-2 или целое-1, LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) увеличивается на целое-1 или значение данного, представленного идентификатором-2; 3) если фраза ADVANCING (ПРОДВИЖЕНИЯ) в операторе WRITE (ПИСАТЬ) не указана, LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) увеличивается на 1 (п.4.7 настоящей части); |
4) когда устройство позиционируется на первую строку каждой следующей логической страницы, LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) автоматически устанавливается на 1 (п.4.7 настоящей части); |
г) при выполнении оператора OPEN (ОТКРЫТЬ) с фразой OUTPUT (ВЫХОДНОЙ) для соответствующего файла LINAGE-COUTER (СЧЕТЧИК-ВЕРСТКИ) автоматически устанавливается на 1. |
(10) Никаких дополнительных пропусков между соседними логическими страницами не делается. |
(11) Если определитель файла, соответствующий этой статье описания файла, является внешним определителем файла, все статьи описания файла в пределах одной единицы исполнения, относящиеся к этому определителю файла, должны иметь: |
а) фразу LINAGE (ВЕРСТКА), если хотя бы одна статья описания файла имеет фразу LINAGE (ВЕРСТКА); |
б) одни и те же значения соответственно для целого-1, целого-2, целого-3 и целого-4, если они заданы; |
в) одни и те же внешние данные, на которые ссылаются имя-данного-1, имя-данного-2, имя-данного-3 и имя-данного-4. |
Формат 2 |
Формат 2 (2) Статьи описания записей для файла не должны описывать записи, которые содержат меньшее количество позиций литер, чем задано целым-2, или записи, которые содержат количество позиций литер больше, чем задано целым-3. (3) Целое-3 должно быть больше целого-2. (4) Имя-данного-1 должно описывать элементарное целое без знака в секции рабочей памяти или секции связи. |
Формат 2 (4) Формат 2 используется для описания записей переменной длины. Целое-2 задает минимальное количество позиций литер, которое может содержаться в любой записи файла. Целое-3 задает максимальное количество позиций литер в любой записи файла. (5) Количество позиций литер, соответствующее статье описания записи, определяется как сумма количества позиций литер во всех элементарных данных, за исключением переопределений и переименований, плюс все неявные заполнители, обусловленные выравниванием. Если задается таблица: а) минимальное число элементов таблицы, описанной в записи, используется в вышеупомянутом суммировании для определения минимального количества позиций литер, соответствующего описанию записи; б) максимальное число элементов таблицы, описанной в записи, используется в вышеупомянутом суммировании для определения максимального количества литер, соответствующего описанию записи. (6) Если целое-2 не задано, минимальное количество позиций литер, содержащееся в любой записи файла, равно наименьшему числу позиций литер, заданному для записей этого файла. |
(7) Если целое-3 не задано, максимальное количество позиций литер, содержащееся в любой записи файла, равно наибольшему числу позиций литер, заданному для записей этого файла. (8) Если задано имя-данного-1, количество позиций литер записи должно быть помещено в данное, на которое ссылается имя-данного-1, до выполнения любого оператора REWRITE (ОБНОВИТЬ), RELEASE (ПЕРЕДАТЬ) или WRITE (ПИСАТЬ) для этого файла. (9) Если задано имя-данного-1, выполнение операторов REWRITE (ОБНОВИТЬ), RELEASE (ПЕРЕДАТЬ), WRITE (ПИСАТЬ), START (ПОДВЕСТИ) или DELETE (УДАЛИТЬ), либо неуспешное выполнение операторов RETURN (ВЕРНУТЬ) или READ (ЧИТАТЬ) не меняет содержимого данного, на которое ссылается имя-данного-1. |
(10) Во время выполнения операторов REWRITE (ОБНОВИТЬ), RELEASE (ПЕРЕДАТЬ) или WRITE (ПИСАТЬ) количество позиций литер в записи определяется следующим образом: а) если задано имя-данного-1, - содержимым данного, на которое ссылается имя-данного-1; б) если имя-данного-1 не задано и запись не содержит данных с переменным числом вхождений, - числом позиций литер в записи; |
в) если имя-данного-1 не задано и запись содержит данные с переменным числом вхождений, - суммой размеров фиксированной части и части таблицы, описанной с числом вхождений, во время выполнения оператора вывода. |
(11) Если имя-данного-1 задано, после успешного выполнения оператора RETURN (ВЕРНУТЬ) или READ (ЧИТАТЬ) для файла содержимое данного, на которое ссылается имя-данного-1, будет указывать число позиций литер только что прочитанной записи. |
(12) Если в операторе RETURN (ВЕРНУТЬ) или READ (ЧИТАТЬ) задана фраза INTO (В), количество позиций литер в текущей записи, участвующей как посылаемое данное в неявном операторе MOVE (ПОМЕСТИТЬ), определяется следующим образом: а) если задано имя-данного-1, - содержимым данного, на которое ссылается имя-данного-1; б) если имя-данного-1 не задано, - значением, которое могло быть помещено в данное, на которое ссылается имя-данного-1, если бы оно было задано. |
(1) Имя-данного-1 может быть уточнено, если необходимо, но не может индексироваться или быть описано с фразой USAGE IS INDEX (ДЛЯ ИНДЕКСА). (2) Имя-данного-1 должно быть определено в секции рабочей памяти. |
З - необязательные фразы игнорируются. Оператор CLOSE (ЗАКРЫТЬ) выполняется так, как будто нет необязательных фраз. |
(5) Если отсутствует необязательный входной файл, для файла не выполняется обработка катушки (тома) или конца файла, а указатель позиции файла и указатель текущего тома не изменяются. |
Формат оператора GLOSE (ЗАКРЫТЬ) | Выполняемые действия для различных категорий файла | ||
Без катушек (томов) | Последовательный однокатушечный (однотомный) | Последовательный многокатушечный (многотомный) | |
CLOSE (ЗАКРЫТЬ) | В | В, Ж | А, В, Ж |
CLOSE WITH LOCK (ЗАКРЫТЬ С ЗАМКОМ) | В, Д | В, Ж, Д | А, В, Д, Ж |
CLOSE WITH NO REWIND (ЗАКРЫТЬ БЕЗ ПЕРЕМОТКИ) | В, З | В, Б | А, Б, В |
CLOSE REEL/UNIT (ЗАКРЫТЬ КАТУШКУ/ТОМ) | Е | Е, Ж | Е, Ж |
CLOSE REEL/UNIT FOR REMOVAL (ЗАКРЫТЬ КАТУШКУ/ТОМ С УДАЛЕНИЕМ) | Е | Г, Е, Ж | Г, Е, Ж |
Г - удаление катушки (тома). Если это применимо, производится перемотка текущей катушки или тома и логическое удаление их из единицы исполнения. Однако катушка или том может снова стать доступной в порядке расположения катушек или томов в файле, если впоследствии за оператором CLOSE (ЗАКРЫТЬ) без фразы REEL (КАТУШКУ) или UNIT (ТОМ) для этого файла будет выполнен оператор OPEN (ОТКРЫТЬ). Д - закрыть с замком. Файл закрывается; он не может быть открыт во время выполнения данной единицы исполнения. |
(1) Фраза REVERSED (PEBEPCHO) может указываться только для последовательных файлов. (2) Фраза EXTEND (ДОПОЛНЯЕМЫЙ) не может использоваться для файлов, находящихся на одной катушке с другими файлами. (3) Фраза EXTEND (ДОПОЛНЯЕМЫЙ) может использоваться только для файлов, для которых не была указана фраза LINAGE (ВЕРСТКА). |
(9) Фразы NO REWIND (БЕЗ ПЕРЕМОТКИ) и REVERSED (РЕВЕРСНО) должны использоваться: а) только для последовательных однокатушечных (однотомных) файлов (см. п.4.2 настоящей части); б) только для последовательных файлов, целиком содержащихся на одной катушке ленты, в среде многофайловых лент (см. п.2.11 настоящей части). (10) Фразы REVERSED (РЕВЕРСНО) и NO REWIND (БЕЗ ПЕРЕМОТКИ) игнорируются, если они не применимы к внешнему носителю, на котором располагается файл. |
б) если задана фраза NO REWIND (БЕЗ ПЕРЕМОТКИ), при выполнении оператора OPEN (ОТКРЫТЬ) переустановка файла не выполняется; файл уже должен быть установлен в начало перед выполнением оператора OPEN (ОТКРЫТЬ); в) если задана фраза REVERSED (РЕВЕРСНО), при выполнении оператора OPEN (ОТКРЫТЬ) файл устанавливается в конец. (12) Если задана фраза REVERSED (РЕВЕРСНО), последующий оператор READ (ЧИТАТЬ) делает записи файла доступными в обратном порядке, начиная с последней записи. (13) Если файл, открытый с фразой INPUT (ВХОДНОЙ), является необязательным файлом, не имеющимся в наличии, оператор OPEN (ОТКРЫТЬ) устанавливает указатель позиции файла для указания того, что необязательный входной файл отсутствует. |
(15) Если задана фраза EXTEND (ДОПОЛНЯЕМЫЙ), при выполнении оператора OPEN (ОТКРЫТЬ) файл устанавливается непосредственно за последней логической записью файла. Последней логической записью последовательного файла является последняя записанная в файл запись. (16) Если задана фраза EXTEND (ДОПОЛНЯЕМЫЙ) и фраза LABEL RECORD (МЕТКИ) указывает, что записи меток присутствуют, выполнение оператора OPEN (ОТКРЫТЬ) включает следующие действия: а) начальные метки файла обрабатываются только для однокатушечных или однотомных файлов; б) начальные метки катушки (тома) обрабатываются на последней катушке (томе), как если бы файл открывался как INPUT (ВХОДНОЙ); в) имеющиеся конечные метки файла обрабатываются, как если бы файл открывался как INPUT (ВХОДНОЙ). Затем эти метки удаляются; г) затем обработка продолжается, как если бы файл был открыт как OUTPUT (ВЫХОДНОЙ). |
(19) Файл, содержащийся в среде многофайловой ленты, логически эквивалентен последовательному файлу, содержащемуся в однофайловой ленточной среде. (20) Если совокупность файлов размещена на одной катушке ленты и на один из этих файлов ссылаются в операторе OPEN (ОТКРЫТЬ), то применяются следующие правила: а) одновременно в открытом состоянии может находиться не более одного файла; б) нет ограничений на порядок, в котором файлы могут быть открыты для ввода; в) если один из файлов, на который ссылается имя файла, является субъектом оператора OPEN (ОТКРЫТЬ) с фразой OUTPUT (ВЫХОДНОЙ), во время выполнения оператора OPEN (ОТКРЫТЬ) на соответствующей катушке должны уже существовать все файлы, номер позиций которых меньше, чем номер позиции данного файла. Кроме того, в это время на катушке не могут существовать файлы, номер позиции которых больше, чем номер позиции данного файла; г) каждый файл должен быть последовательным. |
(21) | Для необязательного файла, являющегося недоступным, успешное выполнение оператора OPEN |
(ОТКРЫТЬ) с фразами I-O (ВХОДНОЙ-ВЫХОДНОЙ) или EXTEND (ДОПОЛНЯЕМЫЙ) приводит к созданию файла. Это создание происходит так, как если бы в указанном порядке выполнялись следующие операторы: OPEN OUTPUT имя-файла. CLOSE имя-файла. ОТКРЫТЬ ВЫХОДНОЙ имя-файла. ЗАКРЫТЬ имя-файла. За этими операторами следует выполнение оператора OPEN (ОТКРЫТЬ), указанного в исходной программе. |
б) катушку (том), содержащую последнюю логическую запись дополняемого файла; |
Фраза оператора | Файл доступен | Файл недоступен |
INPUT (ВХОДНОЙ) | Нормальное открытие | Открытие неуспешное |
INPUT (ВХОДНОЙ) (Необязательный файл) | Нормальное открытие | Нормальное открытие; при первом чтении возникает условие конца |
I-O (ВХОДНОЙ-ВЫХОДHOЙ) | Нормальное открытие | Открытие неуспешное |
I-O (ВХОДНОЙ-ВЫХОДНОЙ (Необязательный файл) | Нормальное открытие | Открытие приводит к созданию файла |
OUTPUT (ВЫХОДНОЙ) | Нормальное открытие; файл не содержит записей | Открытие приводит к созданию файла |
EXTEND (ДОПОЛНЯЕМЫЙ) | Нормальное открытие | Открытие неуспешное |
EXTEND (ДОПОЛНЯЕМЫЙ) (Необязательный файл) | Нормальное открытие | Открытие приводит к созданию файла |
Оператор | Допустимость сочетаний операторов ввода-вывода для вариантов оператора OPEN (ОТКРЫТЬ) | |||
INPUT (ВХОДНОЙ) | OUTPUT (ВЫХОДНОЙ) | I-O (ВХОДНОЙ-ВЫХОДНОЙ) | EXTEND (ДОПОЛНЯЕМЫЙ) | |
READ (ЧИТАТЬ) | х | - | х | - |
WRITE (ПИСАТЬ) | - | х | - | х |
REWRITE (ОБНОВИТЬ) | - | - | х | - |
б) Если указатель позиции файла указывает, что отсутствует необязательный входной файл, выполнение происходит так, как указано в общем правиле (10). |
(13) Если число позиций литер прочитанной записи меньше чем минимальный размер, указанный в статьях описания записи для имени-файла-1, то часть области записи, находящаяся справа от последней прочитанной литеры, является неопределенной. Если число позиций литер в читаемой записи больше, чем максимальный размер, указанный в статьях описания записи для имени-файла-1, то запись усекается справа до максимального размера. В любом из этих случаев оператор READ (ЧИТАТЬ) выполняется успешно и состояние ввода-вывода устанавливается для указания, что произошло нарушение длины записи (см. п.1.3 настоящей части). |
(2) Фраза NEXT (СЛЕДУЮЩУЮ) не обязательна и не влияет на выполнение оператора OPEN (ОТКРЫТЬ). |
д) если указано EXTEND (ДОПОЛНЯЕМЫХ), то соответствующая процедура выполняется при выполнении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ), для какого-либо файла, открытого для дополнения или процессе открытия для дополнения, за исключением файлов, указанных именем-файла-1 в другом операторе USE (ИСПОЛЬЗОВАТЬ), описывающем такое же условие. |
(3) Фраза ADVINCING (ПРОДВИЖЕНИЯ) мнемоническое-имя-1 не может быть указана для файла, который связан со статьей описания файла, содержащей фразу LINAGE (ВЕРСТКА). |
(6) Когда специфицируется мнемоническое-имя-1, то имя связывается с особым свойством, описанным реализацией. Мнемоническое-имя-1 определяется в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА) раздела оборудования. (7) Фразы ADVANCING (ПРОДВИЖЕНИЯ СТРАНИЦЫ) и END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ) не должны быть специфицированы в одном операторе WRITE (ПИСАТЬ). (3) Если указана фраза END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ) или NOT END-OF-PAGE (HE В КОНЦЕ СТРАНИЦЫ), то фраза LINAGE (ВЕРСТКА) должна быть указана в статье описания соответствующего файла. (9) Слова END-OF-PAGE и ЕОР являются эквивалентами. |