ADD идентификатор/литерал ТО идентификатор-литерал GIVING иденти­фикатор

СЛОЖИТЬ идентификатор/литерал С идентификатор-литерал ПОЛУЧАЯ идентификатор.

  1. Вариант NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) оператора ADD (СЛОЖИТЬ) (1 ЯДР). Вариант NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛ­НЕНИЯ) предоставляет программисту возможность указывать процедуры, ко­торые должны быть выполнены, когда не выполняется условие переполнения для оператора ADD (СЛОЖИТЬ).

  2. Оператор CALL (ВЫЗВАТЬ) (2 МПС). Вариант BY CONTENT (ЗНА­ЧЕНИЕ) указывает, что вызываемая программа не может изменять значение параметра фразы USING (ИСПОЛЬЗУЯ) в операторе CALL (ВЫЗВАТЬ), но вызываемая программа может изменять значение соответстцующего данного в заголовке раздела процедур программы. Вариант BY REFERENCE (ССЫЛКУ) означает, что параметр фразы USING (ИСПОЛЬЗУЯ) оператора CALL (ВЫЗ­ВАТЬ) должен рассматриваться так же, как и параметр в ГОСТ 22558.

Оператор CALL (ВЫЗВАТЬ) (I МПС). Параметры, передаваемые в операторе CALL (ВЫЗВАТЬ), могут быть данными, имеющими уровни, отлич­ные от 01 или 7 7. Параметры, передаваемые в операторе CALL (ВЫЗВАТЬ), мо­гут быть индексированы или указываться модификацией ссылки.

  1. Варианты ON EXCEPTION (ПРИ ОШИБКЕ) и NOT ON EXCEPTION (БЕЗ ОШИБКИ) оператора CALL (ВЫЗВАТЬ) (2 МПС). Вариант ON EXCEP­TION (ПРИ ОШИБКЕ) оператора CALL (ВЫЗВАТЬ) эквивалентен варианту ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) оператора CALL (ВЫЗВАТЬ). Ва­риант NOT ON EXCEPTION (БЕЗ ОШИБКИ) обеспечивает программисту воз­можность указать процедуры, которые должны выполняться, когда программа, указанная в операторе CALL (ВЫЗВАТЬ), может быть доступна для выполне­ния.

  2. Вариант REEL/UNIT (КАТУШКУ/ТОМ) оператора CLOSE (ЗАКРЫТЬ) (1 ПОД, 1 ГОТ). Вариант REEL/UNIT (КАТУШКУ/TOM) оператора CLOSE (ЗАКРЫТЬ) может относиться к файлам на одной катушке (томе) и разрешена в данном стандарте для файла отчетов.

  3. Вариант FOR REMOVAL (С УДАЛЕНИЕМ) оператора CLOSE (ЗАК­РЫТЬ) (2 ПОД, 1 ГОТ). Вариант FOR REMOVALjC УДАЛЕНИЕМ) операто­ра CLOSE (ЗАКРЫТЬ) разрешается для последовательного файла на одной ка- тушке/томе

  4. Вариант NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) оператора COMPUTE (ВЫЧИСЛИТЬ) (2 ЯДР). Вариант NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) оператора COMPUTE (ВЫЧИСЛИТЬ) предоставляет про­граммисту возможность указывать процедуры, которые должны быть выполне­ны, когда для оператора COMPUTE (ВЫЧИСЛИТЬ) не выполняется условие переполнения.

  5. Оператор CONTINUE (ПРОДОЛЖИТЬ) (1 ЯДР). Оператор CONTI­NUE (ПРОДОЛЖИТЬ) указывает, что нет в наличии выполнимого оператора, и приводит к неявной передаче управления следующему выполнимому оператору.

  6. Вариант NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) оператора DELETE (УДАЛИТЬ) (1 ОТД, 1 ИНД). Вариант NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) оператора DELETE (УДАЛИТЬ) предоставляет програм­мисту возможность указать процедуры, которые должны быть выполнены, когда для оператора DELETE (УДАЛИТЬ) не выполняется условие ошибки ключа.

  7. Оператор DISPLAY (ВЫДАТЬ) (1 ЯДР). Для оператора DISPLAY (ВЫДАТЬ) разрешена стандартная константа ALL литерал (ВСЕ литерал).

В ГОСТ 22558 стандартная константа ALL литерал (ВСЕ литерал) не раз­решалась в операторе DISPLAY (ВЫДАТЬ).

  1. Вариант NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) оператора DIVIDE (РАЗДЕЛИТЬ) (1 ЯДР). Вариант NOT ON SIZE ERROR (БЕЗ ПЕ­РЕПОЛНЕНИЯ) оператора DIVIDE (РАЗДЕЛИТЬ) обеспечивает программис­ту возможность указывать процедуры, которые должны быть выполнены, когда для оператора DIVIDE (РАЗДЕЛИТЬ) не выполняется условие переполнения.

  2. Вариант WITH NO ADVANCING (БЕЗ ПРОДВИЖЕНИЯ) оператора DISPLAY (ВЫДАТЬ) (2 ЯДР). Вариант WITH NO ADVANCING (БЕЗ ПРОД­ВИЖЕНИЯ) оператора DISPLAY (ВЫДАТЬ) обеспечивает программисту воз­можность взаимодействия с устройством, обладающим вертикальным позициони­рованием.

  3. Оператор EVALUATE (ОЦЕНИТЬ) (2 ЯДР). Оператор EVALUATE (ОЦЕНИТЬ) описывает многоветвящуюся, многосвязную структуру, в которой оценивается несколько условий для определения последующих действий объект­ной программы.

  4. Оператор EXIT PROGRAM (ВЫИТИ ИЗ ПРОГРАММЫ) (1 МПС). Оператор EXIT PROGRAM (ВЫИТИ ИЗ ПРОГРАММЫ) не обязательно дол­жен быть единственным оператором в параграфе.

  5. Оператор GO ТО DEPENDING ON (ПЕРЕЙТИ 3 ЗАВИСИМОСТИ) ЯДР). Число имен-процедур, требуемых в операторе GO ТО DEPENDING (ПЕРЕЙТИ В ЗАВИСИМОСТИ), снижено до единицы.

  6. Оператор IE (ЕСЛИ) (1 ЯДР). Необязательное слово THEN (ТО) до­бавлено в общий формат оператора IF (ЕСЛИ).

  7. Оператор INITIALIZE (ИНИЦИИРОВАТЬ) (2 ЯДР). Оператор INITIALIZE (ИНИЦИИРОВАТЬ) обеспечивает возможность устанавливать выб­ранные типы полей данных в предопределенные значения.

  8. Оператор INSPECT (ПРОСМОТРЕТЬ) (2 ЯДР). Многократные пов­торения варианта BEFORE/AFTER (ДО/ІЮСЛЕ) позволяют начать операцию подсчета/замепы после того, как начался просмотр начал данных, и/ил и закон­чить до конца просмотра концов данных.

  9. Оператор INSPECT (ПРОСМОТРЕТЬ) (2 ЯДР). Слова АШІ..ЕА- DING (ВСЕ/ВЕДУЩИЕ) могут быть размещены среди многих идентификато- ров/литералов и возможны многократные повторения варианта REPLACING CHARACTERS (ЗАМЕНЯЯ ЛИТЕРЫ).

  10. Оператор INSPECT CONVERTING (ПРОСМОТРЕТЬ ПРЕВРАЩАЯ) (2 ЯДР). Вариант CONVERTING (ПРЕВРАЩАЯ) обеспечивает новую разно­видность оператора INSPECT (ПРОСМОТРЕТЬ).

  11. Оператор MERGE (СЛИТЬ) (1 СРТ). В варианте GIVING (ПОЛУ­ЧАЯ) оператора MERGE (СЛИТЬ) разрешается несколько имен-файлов. Фай­лы, указанные в операторе MERGE (СЛИТЬ), могут содержать записи перемен­ной длины. Файл, указанный в варианте USING (ИСПОЛЬЗУЯ) или GIVING (ПОЛУЧАЯ) оператора MERGE (СЛИТЬ), может быть относительным или ин­дексным файлом.

  12. Оператор MOVE (ПОМЕСТИТЬ) (2 ЯДР). Числовое редактируемое данное может быть помещено в числовое или числовое редактируемое данное; таким образом, имеет место доредактирование.

  13. Вариант NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) оператора MULTIPLY (УМНОЖИТЬ) (1 ЯДР). Вариант NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) обеспечивает программисту возможность указать процеду­ры, которые должны быть выполнены, когда для оператора MULTIPLY (УМНО­ЖИТЬ) не выполняется условие переполнения.

  14. Вариант EXTEND (ДОПОЛНЯЕМЫЙ) оператора OPEN (ОТКРЫТЬ) (2 ОТД, 2 ЙЇІД). Вариант EXTEND (ДОПОЛНЯЕМЫЙ) оператора OPEN (ОТКРЫТЬ) может быть использован для относительного или индексного файла.

  15. Оператор PURGE (ОЧИСТИТЬ) (2 КОМ). Оператор PURGE (ОЧИС­ТИТЬ) побуждает систему управления сообщениями ликвидировать любое неза­вершенное сообщение, которое было передано одним или несколькими операто­рами SEND (ПОСЛАТЬ).

  16. Оператор PERFORM (ВЫПОЛНИТЬ) (1 ЯДР). Имя-процедуры мо­жет быть опущено, что равнозначно последовательному выполнению повелитель­ных операторов, предшествующих фразе END-PERFORM (КОНЕЦ-ВЫПОЛ- НИТЬ), закапчивающей этот оператор PERFORM (ВЫПОЛНИТЬ).

  17. Оператор PERFORM (ВЫПОЛНИТЬ) (2 ЯДР). Вариант TEST AFTER (С ПРОВЕРКОЙ ПОСЛЕ) означает, что проверка условия должна проводить­ся после выполнения указанного набора операторов. Вариант TEST BEFORE (С ПРОВЕРКОЙ ДО) означает, что проверка условий должна проводиться до вы­полнения указанного набора операторов.

  18. Оператор PERFORM (ВЫПОЛНИТЬ) (2 ЯДР). В варианте VARYING (МЕНЯЯ) оператора PERFORM (ВЫПОЛНИТЬ) должно быть разрешено по крайней мере шесть фраз AFTER (ЗАТЕМ). В предыдущем стандарте разреша­лось максимум две фразы AFTER (ЗАТЕМ).Оператор READ (ЧИТАТЬ) (2 ПОД, 2 ОТД, 2 ИПД). Если оператор READ (ЧИТАТЬ) используется с вариантом INTO (В), разрешаются записи пе­ременной длины. Вариант NEXT (СЛЕДУЮЩУЮ) разрешен в операторе READ (ЧИТАТЬ), ссылающемся на файл с последовательной организацией.

  19. Вариант NOT AT END (НЕ В КОНЦЕ) оператора READ (ЧИТАТЬ (I ПОД, 1 ОТД, 1 ИНД). Вариант NOT AT END (НЕ В КОНЦЕ) оператора READ (ЧИТАТЬ) обеспечивает программисту возможность указывать процеду­ры, которые должны быть выполнены, если для оператора READ (ЧИТАТЬ) не выполняется условие «в конце».

  20. Вариант NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) оператора READ (ЧИТАТЬ) (I ОТД, 1 ИИД). Вариант NOT INVALID KEY (БЕЗ ОШИБ­КИ КЛЮЧА) оператора READ (ЧИТАТЬ) обеспечивает программисту возмож­ность указывать процедуры, которые должны быть выполнены, когда условие ошибки ключа для оператора READ (ЧИТАТЬ) не выполняется.

  21. Вариант WITH РАТА (ЕСТЬ ДАННЫЕ) оператора RECEIVE (ПО­ЛУЧИТЬ) (1 КОМ). Вариант WITH DATA (ЕСТЬ ДАННЫЕ) оператора RECE­IVE (ПОЛУЧИТЬ) предоставляет программисту возможность указать процеду­ры, которые должны быть выполнены, когда система управления сообщениями делает данные доступными во время выполнения оператора RECEIVE (ПОЛУ­ЧИТЬ).

  22. Оператор REPLACE (ЗАМЕНИТЬ) (2 ОИТ). Оператор REPLACE (ЗА­МЕНИТЬ) приводит к замене каждого вхождения указанного текста в исходной программе на соответствующий текст, указанный в операторе REPLACE (ЗА­МЕНИТЬ).

  23. Оператор RETURN (ВЕРНУТЬ) (1 СРТ). Записи переменной длины разрешены, если в операторе RETURN (ВЕРНУТЬ) имеется вариант INTO (В).

  24. Вариант NOT AT END (НЕ В КОНЦЕ) оператора RETURN (ВЕР­НУТЬ) (1 СРТ). Вариант NOT AT END (НЕ В КОНЦЕ) оператора RETURN (ВЕРНУТЬ) предоставляет программисту возможность указывать процедуры, которые должны быть выполнены, если для оператора RETURN (ВЕРНУТЬ) не выполняется условие «в конце».

  25. ) Оператор REWRITE (ОБНОВИТЬ) (2 ОТД, 2 ИПД). Запись в отно­сительном или индексном файле может заменяться записью другой длины

  26. Вариант NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) оператора REWRITE (ОБНОВИТЬ) (1 ОТД, 1 ИПД). Вариант NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) оператора REWRITE (ОБНОВИТЬ) предоставляет прог­раммисту возможность указывать процедуры, которые должны быть выполнены, если условие ошибки ключа для оператора REWRITE (ОБНОВИТЬ) не выпол­няется.

  27. Оператор SEND (ПОСЛАТЬ) (2 КОМ). Вариант REPLACING LINE (ЗАМЕНЯЯ СТРОКУ) предоставляет новую возможность оператора SEND (ПОСЛАТЬ).

  28. Оператор SET (УСТАНОВИТЬ) (1 ЯДР). В ряде операндов, пред­шествующих слову ТО (В) оператора SET (УСТАНОВИТЬ), теперь могут одно­временно встречаться и имена-индексов и идентификаторы. Два новых варианта оператора SET (УСТАНОВИТЬ) позволяют изменять установку внешнего пере­ключателя и значение условной переменной.

Оператор SORT (СОРТИРОВАТЬ) (1 СРТ). В варианте GIVING (ПОЛУЧАЯ) оператора SORT (СОРТИРОВАТЬ) разрешается несколько имен- файлов. Файл, указанный в операторе SORT (СОРТИРОВАТЬ), может содер­жать записи переменной длины. Файл, указанный в варианте USING (ИСПОЛЬ­ЗУЯ) или GIVING (ПОЛУЧАЯ) оператора SORT (СОРТИРОВАТЬ), может быть относительным или индексным файлом. Файлы, указанные в вариантах 760USING .(ИСПОЛЬЗУЯ) и GIVING (ПОЛУЧАЯ), могут находиться на одной и тол же физической катушке. Если указан вариант DUPLICATES (С ДУБЛИРО­ВАНИЕМ), записи, значения ключей которых идентичны, остаются после завер­шения сортировки в том же порядке, в котором они были при вводе в процесс сортировки.

  1. Операторы SORT (СОРТИРОВАТЬ) и MERGE (СЛИТЬ) (1 СРТ), Процедуры ввода и вывода операторов SORT (СОРТИРОВАТЬ) и MERGE (СЛИТЬ) могут содержать явные передачи управления в точки вне процедуры ввода или вывода. Остальная часть раздела процедур может содержать переда­чи управления в точки внутри процедуры ввода или вывода. Имя-параграфа мо­жет быть указано в варианте INPUT PROCEDURE (ПРОЦЕДУРА ВВОДА) или OUTPUT PROCEDURE (ПРОЦЕДУРА ВЫВОДА).

  2. Вариант NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) оператора START (ПОДВЕСТИ) (1 ОТД, 1 ИПД). Вариант NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) предоставляет программисту возможность указывать про­цедуры, подлежащие выполнению, если для оператора START (ПОДВЕСТИ) не выполняется условие ошибки ключа.

  3. Оператор STRING (СОБРАТЬ) (2 ЯДР). Идентификатор в варианте INTO (В) оператора STRING (СОБРАТЬ) может быть групповым данным.

  4. Вариант NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ) оператора STRING (СОБРАТЬ) (2 ЯДР). Вариант NOT ON OVERFLOW (БЕЗ ПЕРЕ­ПОЛНЕНИЯ) обеспечивает программисту возможность указывать процедуры, подлежащие выполнению, если для оператора STRING (СОБРАТЬ) выполняет­ся условие переполнения.

  5. Вариант NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) оператора SUBTRACT (ОТНЯТЬ) (1 ЯДР). Вариант NOT ON SIZE ERROR (БЕЗ ПЕРЕ­ПОЛНЕНИЯ) обеспечивает программисту возможность указывать процедуры, подлежащие выполнению, если для оператора SUBTRACT (ОТНЯТЬ) не выпол­няется условие переполнения.

  6. Вариант NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ) оператора UNSTRING (РАЗОБРАТЬ) (2 ЯДР). Вариант NOT ON OVERFLOW (БЕЗ ПЕ­РЕПОЛНЕНИЯ) обеспечивает программисту возможность указывать процеду­ры, подлежащие выполнению, если для оператора UNSTRING (РАЗОБРАТЬ) не выполняется условие переполнения.

  7. Оператор USE (ИСПОЛЬЗОВАТЬ) (1 ПОД, 1 ОТД, J ИПД). Декла­ративный оператор USE AFTER EXCEPTION/ERROR (ИСПОЛЬЗОВАТЬ ПОС­ЛЕ ОШИБКИ), указывающий имя файла, имеет приоритет над декларативным оператором, указывающим режим открытия файла.

  8. Оператор USE (ИСПОЛЬЗОВАТЬ) (2 МПС). Вариант GLOBAL (ГЛОБАЛЬНО) указывает, что соответствующие декларативные процедуры вы­зываются во время выполнения любой программы, содержащейся в программе, включающей в себя оператор USE (ИСПОЛЬЗОВАТЬ).

  9. Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫ­ДАЧИ) (2 МПС). Вариант GLOBAL (ГЛОБАЛЬНО) указывает, что соответст­вующие декларативные процедуры вызываются во время выполнения любой программы, содержащейся в программе, включающей в себя оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ).

  10. Вариант NOT END-OF-PAGE (НЕ В КОНЦЕ СТРАНИЦЫ) операто­ра WRITE (ПИСАТЬ). Вариант NOT END-OF-PAGE (НЕ В КОНЦЕ СТРАНИ­ЦЫ) обеспечивает программисту возможность указывать процедуры, подлежа­щие выполнению, если для оператора WRITE (ПИСАТЬ) не выполняется усло­вие конца страницы.

  11. Вариант NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) оператора WRITE (ПИСАТЬ) (1 ОТД, 1 ИПД). Вариант NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) обеспечивает программисту возможность указывать проце­дуры, подлежащие выполнению, если для оператора WRITE (ПИСАТЬ) не вы­полняется условие ошибки ключа.

  1. Существенные изменения, потенциально влияющие на имеющиеся про­граммы

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

Основные изменения вызваны стремлением повысить переносимость про­грамм и облегчить написание новых программ, а также дать уточнение неясных или двусмысленных правил. Добавления новых средств также преследуют цель снизить стоимость разработки программ. Ожидается, что затраты на изменение существующих программ должны окупиться экономией при разработке и сопро­вождении программ. В этол части содержится список изменений, потенциально влияющих па имеющиеся программы. В тех случаях, где в ГОСТ 22558 имелись неясности, сделаны уточнения в соответствии с фактическим промышленным стан­дартом, если таковой имелся. В любом случае уточняющие разъяснения не при­водят к несовместимости стандартов; они могут только привести к возможности ■несовместимости между некоторой отдельной реализацией и настоящим стан­дартом. Обоснования, включенные в следующий список, относятся прежде всего к воздействию изменений па Кобол-программы, соответствующие правилам ГОСТ '22558. Остается неясным влияние изменений на программы, в которых: