Перейти до вмісту
ГОСТ 22558-89
/ 116

Обоснование

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

ГОСТ 22558 указывает, что организация файла устанавливается во время создания файла и в дальнейшем не может быть изменена. Определяется также для оператора OPEN INPUT (ОТКРЫТЬ ВХОДНОЙ), OPEN 1-0 (ОТКРЫТЬ ВХОДНОИ-ВЫХОДНОЙ) или OPEN EXTEND (ОТКРЫТЬ ДОПОЛНЯЕМЫЙ), что описание файла, включающее фразы CODE-SET (АЛФАВИТ), RECORD CONTAINS (В ЗАПИСИ) и BLOCK CONTAINS (В БЛОКЕ), должно быть ж- вивалентпым тому, что используется при создании файла. Возможность указы­вать литеру заполнитель и ограничитель записи — новые возможности Кобола. Для индексных файлов ГОСТ 22558 указывал, что описания данных и относи­тельное расположение в записи данных ключ записи и дополнительный ключ за­писи, и число дополнительных ключей записи должны быть такими же, как и при создании файла. ГОСТ 22558 обеспечивает возможность воздействия на ос­новную последовательность, используемую для ключей индексного файла.

ГОСТ 22558 не определяет что произойдет, если фиксированные свойства файла не согласуются со свойствами файла, определяемыми в программе. Новое значение 39 состояния ввода-вывода позволяет пользователю проверять это ус­ловие.

Состояние ввода-вывода = 42. Попытка выполнения оператора CLOSE (ЗАКРЫТЬ) для файла, который не был открыт.

Обоснование

ГОСТ 22558 не разрешает ссылаться в операторе CLOSE (ЗАКРЫТЬ) на файл, который не был открыт, но не определяет последствий такой ссылки. Но­вое значение 42 состояния ввода-вывода позволяет пользователю проверять это условие.

Состояние ввода-вывода = 43. Для файла массовой памяти при последо­вательном доступе последним оператором ввода-вывода, выполненным для соот­ветствующего файла до выполнения оператора DELETE (УДАЛИТЬ) или REWRITE (ОБНОВИТЬ), не был успешно выполненный оператор READ (ЧИ­ТАТЬ).

Обоснование

ГОСТ 22558 указывает, что для файла при последовательном доступе по­следним оператором ввода-вывода, выполненным для файла перед выполнением оператора DELETE (УДАЛИТЬ) или REWRITE (ОБНОВИТЬ), должен быть успешно выполненный оператор READ (ЧИТАТЬ), но не указывает, что слу­чится, если требование не удовлетворено. Новое значение 43 состояния ввода- вывода позволяет пользователю проверять это условие.

м) Состояние ввода-вывода = 44. Имеется нарушение границ из-за попытки обновить запись: (I) или в последовательном файле, (2) или в относительном файле на уровне 1 модуля относительного ввода-вывода, (3) или в индексном файле на уровне 1 модуля индексного ввода-вывода и размер записи не совпада­ет с размером заменяемой записи.

Обоснование

ГОСТ 22558 указывает, что для оператора REWRITE (ОБНОВИТЬ) число позиций литер в новой записи должно быть равно числу позиций литер в заме­няемой записи, но нс определяет, что происходит, если это требование не удов­летворено.

Новое значение 44 состояния ввода-вывода позволяет пользователю прове­рять эти условия.

Состояние ввода-вывода — 46. Сделана попытка выполнения последова­тельного оператора READ (ЧИТАТЬ) для файла, открытого в режиме ввода или ввода-вывода, и не была установлена действительная следующая запись по одной из следующих причин: (I) предшествующий оператор START (ПОДВЕС­ТИ) неуспешен, (2) предшествующий оператор READ (ЧИТАТЬ) неуспешен, ио не привел к условию «в конце», или (3) предшествующий оператор READ (ЧИ­ТАТЬ) привел к условию «в конце».

Обоснование

ГОСТ 22558 указывает, что при этих обстоятельствах выполнение оператора READ (ЧИТАТЬ) неправомочно или его выполнение неуспешно, но не определя­ет код состояния для указания такой ситуации. Новое значение 46 состояния ввода-вывода обеспечивает пользователю возможность проверять это условие Состояние ввода-вывода 46 может встретиться только тогда, когда не предпри­нято никаких корректирующих действий, следующих за предыдущим оператором READ (ЧИТАТЬ) или START (ПОДВЕСТИ).

о) Состояние ввода-вывода = 47. Имеется попытка выполнения оператора READ (ЧИТАТЬ) или START (ПОДВЕСТИ) для файла, не открытого как входной или входной-выходной.

Обоснование

ГОСТ 22558 требует, чтобы ко времени выполнения оператора READ (ЧИ­ТАТЬ) или START (ПОДВЕСТИ) файл был открыт как входной или входной- выходной, но не указывает, что происходит, если требование не удовлетворено.

Новое значение 47 состояния ввода-вывода дает возможность пользователю про­верять это условие.

п) Состояние ввода-вывода = 48. Попытка выполнения оператора WRITE (ПИСАТЬ) : (1) или для последовательного файла, не открытого для вывода или дополнения, (2) или для относительного или индексного файла, не открытого для ввода-вывода, вывода или дополнения.

Обоснование

ГОСТ 22558 требует, чтобы файл был открыт в одном из определенных ре­жимов, но не определяет, что происходит, если требование не удовлетворено. Новое значение 48 состояния ввода-вывода позволяет пользователю проверять это условие.

р) Состояние ввода-вывода — 49. Попытка выполнения оператора DELETE (УДАЛИТЬ) или REWRITE (ОБНОВИТЬ) для файла, не открытого для ввода- вывода.

Обоснование

ГОСТ 22558 требует, чтобы файл был открыт для ввода-вывода, но не опре­деляет, что происходит, если требование не удовлетворено. Новое значение 49 состояния ввода-вывода дает пользователю возможность проверять это условие.

Ключ состояния коммуникации (1 КОМ).

Добавлены новые значения ключа состояния коммуникации.

Обоснование

ГОСТ 22558 оставляют результаты некоторых ситуаций коммуникации неоп­ределенными. Настоящий стандарт определяет новые значения ключа состояния коммуникации для этих ситуаций с тем, чтобы пользователь мог выявить эти ус­ловия ошибки стандартным путем и таким образом предпринять корректирую­щие действия, подходящие для данного случая.

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

Конкретные добавленные значения ключа состояния коммуникации описаны ниже.

Ключ состояния коммуникации — 15. Символический источник, или одна или несколько очередей или адресаты уже запрещены/разрешены.

Обоснование

Если ко времени выполнения оператора DISABLE (ЗАПРЕТИТЬ) или ENABLE (РАЗРЕШИТЬ) источник, очередь или адресат уже запрещен или раз­решен соответственно, спецификации ГОСТ 22558 подразумевают, что значение ключа состояния коммуникации полагается равным 00 (нулю). Новое значение 15 ключа состояния коммуникации обеспечивает пользователя этой информацией.

Ключ состояния коммуникации — 21. Символический источник неизвестен.

Обоснование

В ГОСТ 22558 для того, чтобы определить, известно ли символическое имя исходного терминала системе управления сообщениями при выполнении операто­ра RECEIVE (ПОЛУЧИТЬ), пользователь должен сравнивать данное символи- ческий-источник с пробелами. ГОСТ 22558 не определяет, что произойдет, если символический источник в CD (ОК), на который имеется ссылка в операторе ENABHE (РАЗРЕШИТЬ) или DISABLE (ЗАПРЕТИТЬ), неизвестен. Новое значение 21 ключа состояния коммуникации предоставляет такую информацию.

Ключ состояния коммуникации = 65. Превышена вместимость выходной очереди.

Обоснование

ГОСТ 22558 не определяет, что произойдет, если превышена вместимость выходной очереди при выполнении оператора SEND (ПОСЛАТЬ). Такая ситуа­ция теперь определяется заданием нового значения 65 ключа состояния комму­

никации.

Ключ состояния коммуникации =70. Один или несколько адресатов не содержат соотнесенных им порций.

Обоснование

Это значение ключа состояния коммуникации возникает только при новом операторе PURGE (ОЧИСТИТЬ). Таким образом оно не может встретиться в программах, соответствующих ГОСТ 22558.

Ключ состояния коммуникации =80. Встретилась комбинация по крайней мере двух условий ключа состояния 10, 15 и 20.

Обоснование

Если использована возможность нескольких адресатов и один из адресатов запрещен, в то время как другой адресат неизвестен, ГОСТ 22558 не определяет, будет ли ключ состояния установлен оператором SEND (ПОСЛАТЬ) на значе­ние 10 или 20. Новое значение 80 ключа состояния коммуникации установлено для определения такой ситуации. Новое значение 80 ключа состояния коммуни­кации также устанавливается в случае оператора ENABLE (РАЗРЕШИТЬ) или DISABLE (ЗАПРЕТИТЬ), где встречаются и новое условие ключа состояния коммуникации 15 и условие ключа состояния коммуникации 20.

с) Ключ состояния коммуникации = 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-COMPU­TER (РАБОЧАЯ-МАШИНА) отнесена к категории устаревших элементов языка.

Обоснование

Эта анахроническая возможность языка сохранилась с того времени, когда многие системы требовали определения размера памяти для загрузки единицы исполнения. Емкость памяти для семейства главных моделей часто колебалась от 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 (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ) раздела оборудования отнесена к категории устаревших элементов.

Побачили розбіжність з офіційним текстом?

Повідомити про неточність

Напишіть, що саме розходиться з офіційною публікацією. Код документа вкажіть у повідомленні — так ми швидше знайдемо потрібне місце.

Перейти до форми зворотного зв'язку

Дивіться також

Весь розділ →