ГОСТ 22558-89 сторінка 111 з 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-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 (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ) раздела оборудования отнесена к категории устаревших элементов.
Побачили розбіжність з офіційним текстом?