с) Ключ состояния коммуникации = 9х. Состояние, определяемое реализацией.
Обоснование
Этот новый диапазон значений ключа состояния коммуникации позволяет реализации определять множество различных условий ошибки. Это предоставляет возможность пользователю проверять условия ошибки, определяемые реализацией, подобно возможности ГОСТ 22558 для проверки значений состояния ввода-вывода для ошибок ввода-вывода, определяемых реализацией.
Ключ ошибки коммуникации (1 КОМ). Добавлены новые значения ключа ошибки коммуникации. Эти новые значения описаны ниже.
Значение ключа ошибки коммуникации = 2. Символический адресат запрещен.
Обоснование
Был выполнен оператор SEND (ПОСЛАТЬ) и адресат, к которому относится этот ключ ошибки, запрещен. В ГОСТ 22558 это условие не распознавалось пользователем.
Значение ключа ошибки коммуникации = 5. Символический адресат уже разрешен (запрещен).
Обоснование
Был выполнен оператор ENABLE (РАЗРЕШИТЬ) или DISABLE (ЗАПРЕТИТЬ) и адресат, к которому относится этот ключ ошибки, уже разрешен (запрещен). В ГОСТ 22558 это условие не распознавалось пользователем.
Значение ключа ошибки коммуникации = 6. Превышена вместимость выходной очереди.
Обоснование
Был выполнен оператор SEND (ПОСЛАТЬ) и система управления сообщениями не смогла включить в очередь сообщение, сегмент сообщения или порцию сообщения или сегмента сообщения, поскольку выходная очередь адресата, к которому относится это значение ключа ошибки коммуникации, заполнена. В ГОСТ 22558 это условие пользователем не распознавалось.
Значение ключа ошибки коммуникации = А до Z. Условие, определяемое реализацией.
Обоснование
Система управления сообщениями получила определенное реализацией условие ошибки, не входящее в имеющиеся значения ключа ошибки коммуникации. Согласно ГОСТ 22558 реализация не могла предоставить пользователю такую информацию.
ПРИЛОЖЕНИЕ 2
СПИСКИ ЭЛЕМЕНТОВ ЯЗЫКА
Список устаревших элементов языка
Назначение категории устаревших элементов языка — ограничить влияние удаляемых средств, которые рассматриваются как устаревшие или не должным ебразом определенные и будут удалены в следующей редакции стандарта. Хотя элементы этой категории устаревшие, немедленное удаление их из стандарта принесло бы неудобства пользователям. Средства, отнесенные к категории устаревших элементов, имеют следующие характеристики:
элементы языка, которые подлежат удалению из стандарта Кобола, определяются в настоящем стандарте как устаревшие элементы языка (до их удаления);
взаимоотношение между устаревшими элементами и другими элементами языка не определено, если только не оговорено другое;
устаревшие элементы языка будут удалены в следующей редакции стандарта;
требуется, чтобы соответствующая стандарту реализация Кобола поддерживала устаревшие элементы языка для подмножеств и уровней необязательных модулей, для которых объявлена поддержка.
Далее следует список элементов языка, объявляемых в настоящем стандарте устаревшими. Для каждого элемента списка приводится обоснование отнесения этого элемента к категории устаревших элементов.
Замена литеры двумя литерами (1 ЯДР). Если набор литер состоит менее чем из 51 (72) литер, вместо одной литеры могут представляться две литеры. Эта возможность отнесена к категории устаревших элементов.
Обоснование
Эта спецификация привнесена с тех времен, когда оборудование не могло обеспечить полный набор литер Кобола. Такое ограничение на количество литер, допускаемых оборудованием, больше не существует.
ALL литерал (ВСЕ литерал) и числовое или числовое редактируемое данное (2 ЯДР). Стандартная константа ALL литерал (ВСЕ литерал), когда она связана с числовым или числовым редактируемым данным и когда длина литерала больше единицы, относится к категории устаревших элементов.
Обоснование
Причиной считать этот элемент устаревшим послужило то, что результат перемещения ALL литерал (ВСЕ литерал) в числовое данное часто непредсказуем. Например, соответственно интерпретации, операторы
01 A PIC 99V99. 01 А Ш 99Т99.
MOVE ALL «99» ТО А. ПОМЕСТИТЬ ВСЕ «99» В А.
MOVE ALL «123» ТО А. ПОМЕСТИТЬ ВСЕ «123» В А.
дадут соответственно значения 99.00 и 31.00.Параграфы AUTHOR (АВТОР), INSTALLATION (ПРЕДПРИЯТИЕ), DATE-WRITTEN (ДАТА-НАПИСАНИЯ), DATE-COMPILED- (ДАТА-ТРАНС- ЛЯЦИИ) и SECURITY (ПОЛНОМОЧИЯ) (1 ЯДР). Эти параграфы раздела оборудования отнесены к категории устаревших элементов.
Обоснование
Назначение параграфов AUTHOR (АВТОР), INSTALLATION (ПРЕДПРИЯТИЕ), DATE-WRITTEN (ДАТА-НАПИСАНИЯ), DATE-COMPILED (ДАТА- ТРАНСЛЯЦИИ) и SECURITY (ПОЛНОМОЧИЯ) может быть достигнуто посредством использования строк комментария в разделе идентификации, поскольку эти параграфы не влияют на работу Кобол-программы.
Чистка и регуляризация языка Кобол достигается объявлением устаревшими многих определяемых реализацией элементов. Форматы параграфов DATE- COMPILED (ДАТА-ТРАНСЛЯЦИИ) и SECURITY (ПОЛНОМОЧИЯ) являются примером параграфов статьи-комментария, определяемых реализацией.
Взаимодействие оператора COPY (КОПИРОВАТЬ) со статьями комментариев в параграфах AUTHOR (АВТОР), INSTALLATION (ПРЕДПРИЯТИЕ), DATE-WRITTEN (ДАТА-НАПИСАНИЯ), DATE-COMPILED (ДАТА-ТРАНСЛЯЦИИ) и SECURITY (ПОЛНОМОЧИЯ) часто неоднозначно, например, наличие слова COPY (КОПИРОВАТЬ) в статье-комментарии и использование оператора COPY (КОПИРОВАТЬ) в статье-комментарии.
Фраза MEMORY SIZE (РАЗМЕР ПАМЯТИ) (1 ЯДР).
Фраза MEMORY SIZE (РАЗМЕР ПАМЯТИ) параграфа OBJECT-COMPUTER (РАБОЧАЯ-МАШИНА) отнесена к категории устаревших элементов языка.
Обоснование
Эта анахроническая возможность языка сохранилась с того времени, когда многие системы требовали определения размера памяти для загрузки единицы исполнения. Емкость памяти для семейства главных моделей часто колебалась от 8К до 64К максимум. Кобол-программы используют фразу MEMORY SIZE (РАЗМЕР ПАМЯТИ) для генерирования объектов для специальных моделей.
Эта возможность рассматривается как функция операционной системы в современной вычислительной среде. В стандарте Кобола фраза MEMORY SIZE (РАЗМЕР ПАМЯТИ) необязательна. Таким образом нет стандартных соответствующих реализаций Кобола, требующих использования фразы MEMORY SIZE (РАЗМЕР ПАМЯТИ) для определения размера памяти объектной машины.
Фраза RERUN (ПЕРЕПРОГОН) (1 ПОД, 1 ОТД, 1 ИПД), Фраза RERUN (ПЕРЕПРОГОН) параграфа I-O-CONTROL (УПРАВЛЕНИЕ-ВВО- ДОМ-ВЫВОДОМ) отнесена к категории устаревших элементов.
Обоснование
Обеспечиваются семь форм фразы RERUN (ПЕРЕПРОГОН). Требуется, чтобы реализация поддерживала по крайней мере одну из них.
Эта возможность рассматривается как функция операционной системы в современной вычислительной среде.
Фраза RERUN (ПЕРЕПРОГОН) обеспечивает только наполовину возможности перепрогона/рестарта. То есть синтаксис и семантика для рестарта не определены. Из-за разнообразия форм фразы RERUN (ПЕРЕПРОГОН) нет гарантии, что программа, использующая эту фразу, будет переносимой (мобильной).
Фраза MULTIPLE FILE ТАРЕ (НА ОДНОЙ КАТУШКЕ) (2 ПОД, 1 ГОТ). Фраза MULTIPLE FILE ТАРЕ (НА ОДНОЙ КАТУШКЕ) параграфа I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ) раздела оборудования отнесена к категории устаревших элементов.
Обоснование
Фраза MULTIPLE FILE ТАРЕ (НА ОДНОЙ КАТУШКЕ) могла бы быть функцией операционной системы, а не отдельной Кобол-программы. Поэтому фраза MULTIPLE FILE ТАРЕ (НА ОДНОЙ КАТУШКЕ) отнесена к категории устаревших элементов.
Фраза LABEL RECORDS (МЕТКИ) (1 ПОД, 1 ОТД, 1 ИПД, 1 ГОТ). Фраза LABEL RECORDS (МЕТКИ) статьи описания файла отнесена к категории устаревших элементов и рассматривается как необязательная фраза.
Обоснование
Фраза LABEL RECORDS (МЕТКИ) рассматривается как необязательная фраза категории устаревших элементов. Определение наличия меток файла рассматривается как функция операционной системы и поэтому не относится к Ко- бол-программе.
Фраза VALUE OF (ЗНАЧЕНИЕ) (1 ПОД, 1 ОТД, 1 ИПД, 1 ГОТ). Фраза VALUE OF (ЗНАЧЕНИЕ) статьи описания файла отнесена к категории устаревших элементов.
Обоснование
Описание элементов метки файла рассматривается как функция операционной системы и не относится к Кобол-программе. Поэтому фраза VALUE OF (ЗНАЧЕНИЕ) отнесена к категории устаревших элементов.
Фраза DATA RECORDS (ЗАПИСИ ДАННЫХ) (1 ПОД, 1 ОТД, 1 ИПД). Фраза DATA RECORDS (ЗАПИСИ ДАННЫХ) статьи описания файла отнесена к категории устаревших элементов.
Обоснование
Фраза DATA- RECORDS (ЗАПИСИ ДАННЫХ) избыточна и может привести к несоответствию документации.
Оператор ALTER (ИЗМЕНИТЬ) (1 ЯДР).
Оператор ALTER (ИЗМЕНИТЬ) отнесен к категории устаревших элементов. Обоснование
ІТспользование в программе оператора ALTER (ИЗМЕНИТЬ) приводит к затруднению понимания программы и ее поддержки. Оператор ALTER (ИЗМЕНИТЬ) не имеет уникального назначения, поскольку оператор GO ТО DEPENDING (ПЕРЕЙТИ В ЗАВИСИМОСТИ ОТ) служит для той же цели.
Фраза KEY (КЛЮЧ) оператора DISABLE (ЗАПРЕТИТЬ) (2 КОМ). Фраза KEY (КЛЮЧ) оператора DISABLE (ЗАПРЕТИТЬ) отнесена к категории устаревших элементов и рассматривается как необязательная фраза.
Обоснование
Фраза KEY (КЛЮЧ) оператора DISABLE (ЗАПРЕТИТЬ) используется как парольное средство доступа для оператора DISABLE (ЗАПРЕТИТЬ). Тем не менее не указаны правила для определения, когда значение в фразе KEY .„ (КЛЮЧ) соответствует системному паролю, вследствие чего ситуация определяется реализацией. Таким образом, функция, обеспечиваемая фразой KEY (КЛЮЧ), немобильна.
Фраза KEY (КЛЮЧ) оператора ENABLE (РАЗРЕШИТЬ) (2 КОМ). , Фраза KEY (КЛЮЧ) оператора ENABLE (РАЗРЕШИТЬ) отнесена к категории устаревших элементов и рассматривается как необязательная фраза
Обоснование
Фраза KEY"(КЛЮЧ) оператора ENABLE (РАЗРЕШИТЬ) используется как парольное средство доступа для оператора ENABLE (РАЗРЕШИТЬ). Тем не менее правила для определения, когда значение в фразе KEY (КЛЮЧ) соответствует системному паролю, не указаны, вследствие чего ситуация определяется реализацией. Таким образом, функция, обеспечиваемая фразой KEY (КЛЮЧ), немобильна.
Оператор ENTER (ВРИТИ) (1 ЯДР). Оператор ENTER (ВОЙТИ) отнесена к категории устаревших элементов.
Обоснование
Оператор ENTER (ВОЙТИ) был предвестником оператора CALL (ВЫЗ- . ВАТЬ) и вызова внешних подпрограмм. Оператор ENTER (ВОЙТИ) не обеспечивает мобильность, поскольку является необязательным и определяется реализацией; поэтому оператор ENTER (ВОЙТИ) не является хорошим объектом для стандартизации.
Необязательность имени-процедуры-1 в операторе GO ТО (ПЕРЕЙТИ К) (2 ЯДР). Необязательность имени-процедуры-1 в операторе GO ТО (ПЕРЕЙТИ К) отнесено к категории устаревших элементов.
Обоснование
Необязательность имени-процедуры-1 в операторе GO ТО (ПЕРЕЙТИ К) зависит от оператора ALTER (ИЗМЕНИТЬ). Если имя-процедуры-1 не указано в формате 1 оператора GO ТО (ПЕРЕЙТИ К), то оператор ALTER (ИЗМЕНИТЬ), ссылающийся на этот оператор GO ТО (ПЕРЕЙТИ К), должен быть выполнен до выполнения оператора GO ТО (ПЕРЕЙТИ). Поскольку оператор ALTER (ИЗМЕНИТЬ) отнесен к категории устаревших элементов языка, необязательность имени-процедуры-1 в операторе GO ТО (ПЕРЕЙТИ К) также отнесена к категории устаревших элементов.
Фраза REVERSED (РЕВЕРСНО) оператора OPEN (ОТКРЫТЬ) (2 ПОД). Фраза REVERSED (РЕВЕРСНО) оператора OPEN (ОТКРЫТЬ) отнесена к категории устаревших элементов.
Обоснование
Последовательный файл может быть открыт для ввода с чтением в обратном порядке. Оборудование, необходимое для обеспечения таких действий, используется не очень широко. Следовательно, это средство редко реализуется и не является хорошим объектом для стандартизации. Поскольку это средство из списка средств, зависящих от оборудования, оно является необязательным и может быть по желанию реализовано или не реализовано.
Оператор STOP литерал (ОСТАНОВИТЬ литерал) (1 ЯДР). Вариант литерал оператора STOP (ОСТАНОВИТЬ) отнесен к категории устаревших элементов.
Обоснование
Общее правило (4) оператора STOP (ОСТАНОВИТЬ) гласит: «Если указан вариант STOP литерал-1 (ОСТАНОВИТЬ литерал-1), выполнение единицы исполнения приостанавливается, а литерал-1 сообщается оператору. Продолжение функционирования единицы исполнения начинается со следующего выполнимого' оператора в том случае, когда подключена зависящая от реализации процедура управления возобновлением единицы исполнения».
Назначение оператора STOP литерал (ОСТАНОВИТЬ литерал) по существу определяется реализацией и поэтому программы, использующие его, немобильны.
Модуль сегментации. Модуль сегментации отнесен к категории устарев ших элементов.
Обоснование
К настоящему моменту функция, обеспечиваемая модулем сегментации, обеспечивается на уровне операционной системы, внешнем по отношению к исходному коду Кобола. Поэтому средства сегментации остаются в настоящем стандарте как устаревший элемент, подлежащий удалению в следующей редакции стандарта.
Решение сделать модуль сегментации необязательным позволяет имеющимся реализациям по-прежнему предлагать это средство с целью совместимости, не вынуждая при этом новые реализации обеспечивать средства, базирующиеся на устаревшей технологии.
Модуль отладки. Модуль отладки отнесен к категории устаревших элементов.
Обоснование
К настоящему моменту функция, обеспечиваемая модулем отладки, зачастую обеспечивается средством диалоговой отладки, не требующим исходных ■операторов Кобола. Поэтому средства отладки остаются в настоящем стандарте как устаревший элемент, подлежащий удалению в следующей редакции стандарта.
Решение сделать модуль отладки необязательным позволяет имеющимся реализациям по-прежнему предлагать это средство с целью совместимости, не вынуждая при этом новые реализации обеспечивать средства, базирующиеся на устаревшей технологии.