Состояние ввода-вывода = 07. Оператор ввода-вывода выполнен успеш­но. Тем не менее файл, на который ссылается оператор CLOSE (ЗАКРЫТЬ) с вариантом WITH NO REWIND (БЕЗ ПЕРЕМОТКИ), REEL/UNIT (КАТУШ- 'КУ/ТОМ) или FOR REMOVAL (С УДАЛЕНИЕМ), или оператор OPEN (ОТ­КРЫТЬ) с вариантом NO REWING (БЕЗ ПЕРЕМОТКИ), находится на носите­ле данных, к которому неприменимо понятие катушка (том).

Обоснование

' Соответственно ГОСТ 22558 оператор OPEN (ОТКРЫТЬ) с вариантом NO REWIND (БЕЗ ПЕРЕМОТКИ) может быть использован только для последова­тельных файлов на одной катушке (томе), и оператор CLOSE (ЗАКРЫТЬ) с ва­риантом NO REWIND (БЕЗ ПЕРЕМОТКИ), REEL/UNIT (КАТУШКУ/TOM) или FOR REMOVAL (С УДАЛЕНИЕМ) неприемлем для файлов, находящихся на носителе, к которому неприменимы понятия катушки и тома. Поэтому для фай­лов массовой памяти эти образцы операторов OPEN (ОТКРЫТЬ) и CLOSE (ЗА­КРЫТЬ) могут рассматриваться в сущности как успешные, если пересмотрены аномалии фраз NO REWIND (БЕЗ ПЕРЕМОТКИ), REEL/UNIT (КАТУШКУ/ /ТОМ) или FOR REMOVAL (С УДАЛЕНИЕМ). Новое значение 07 состояния ввода-вывода делает возможным успешное завершение, сохраняя в то же время информацию для пользователя, и предоставляя возможность предпринять опре­деленные действия.

  1. Состояние ввода-вывода = 14. Попытка выполнения последовательного оператора READ (ЧИТАТЬ) для относительного файла и число значащих цифр в относительном номере записи больше данного относительный ключ, описанного для этого файла.

Обоснование

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

  1. Состояние ввода-вывода = 24. Производится попытка писать за предела­ми внешне определенных границ относительного или индексного файла, или сде­лана попытка последовательного оператора WRITE (ПИСАТЬ) и число знача­щих цифр в относительном номере записи больше размера данного относитель­ный ключ, описанного для этого файла.

Обоснование

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

ГОСТ 22558 устанавливает, что при успешном выполнении оператора WRITE (ПИСАТЬ) для относительного файла относительный номер переданной записи будет помещен в данное относительный ключ (если он указан). Результат не определен, если номер, определяемый значащими цифрами относительного номера записи, больше данного относительный ключ.

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

  1. Состояние ввода-вывода = 35. Попытка выполнения оператора OPEN (ОТКРЫТЬ) с вариантом INPUT (ВХОДНОЙ) для файла, не определенного как необязательный, которого нет в наличии.

Обоснование

ГОСТ 22558 требует обязательного указания фразы OPTIONAL (НЕОБЯ­ЗАТЕЛЬНОГО) для входных файлов, которые могут отсутствовать в определен­ные моменты выполнения объектной программы. При этом не определено, что может случиться, когда файл, не объявленный необязательным, отсутствует. Но­вое значение 35 состояния ввода-вывода позволяет пользователю проверять это условие.

  1. Состояние ввода-вывода = 37. Попытка выполнения оператора OPEN (ОТКРЫТЬ) для файла, который должен быть файлом массовой памяти, но не является таковым.

Обоснование

Это новое значение состояния ввода-вывода сообщает, что: (1) предпринята . попытка выполнения оператора OPEN 1-0 (ОТКРЫТЬ ВХОДНОИ-ВЫХОД­НОЙ) для файла не массовой памяти, или (2) предпринята попытка выполне­ния оператора OPEN (ОТКРЫТЬ) для файла пе-массовой памяти, объявленного в программе как относительный или индексный файл.

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

Некоторые реализации обеспечивают расширение использования операторов OPEN 1-0 (ОТКРЫТЬ ВХОДНОИ-ВЫХОДНОЙ) для доступа к терминалам. Такое расширение может быть устранено новым значением 37 состояния ввода- вывода.

  1. Состояние ввода-вывода = 38. Попытка выполнения оператора OPEN (ОТКРЫТЬ) для файла, предварительно закрытого с замком.

Обоснование

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

  1. Состояние ввода-вывода = 39. Оператор OPEN (ОТКРЫТЬ) неуспешен из-за конфликтных свойств файла (несоответствие между фиксированными свой­ствами файла и свойствами файла, указанными в программе).

Обоснование

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

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

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

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

Обоснование

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

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

Обоснование

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

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

Обоснование

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

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

  1. Состояние ввода-вывода — 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. Ключ состояния коммуникации (1 КОМ).

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

Обоснование

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

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

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

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

Обоснование

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

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

Обоснование

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

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

Обоснование

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

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

Обоснование

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

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

Обоснование

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