Состояние ввода-вывода = 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 состояния ввода-вывода делает возможным успешное завершение, сохраняя в то же время информацию для пользователя, и предоставляя возможность предпринять определенные действия.
Состояние ввода-вывода = 14. Попытка выполнения последовательного оператора READ (ЧИТАТЬ) для относительного файла и число значащих цифр в относительном номере записи больше данного относительный ключ, описанного для этого файла.
Обоснование
ГОСТ 22558 устанавливает, что успешное выполнение оператора READ (ЧИТАТЬ) формата 1 для относительного файла обновляет содержимое данного относительный ключ (если он указан) и оно становится равным относительному номеру записи, доступной в этот момент. ГОСТ 22558 не определяет результат, если номер, определенный значащими цифрами относительного номера записи, больше данного относительный ключ. Новое значение 14 состояния ввода-вывода определяет этот результат.
Состояние ввода-вывода = 24. Производится попытка писать за пределами внешне определенных границ относительного или индексного файла, или сделана попытка последовательного оператора WRITE (ПИСАТЬ) и число значащих цифр в относительном номере записи больше размера данного относительный ключ, описанного для этого файла.
Обоснование
В ГОСТ 22558 значение состояния ввода-вывода 24 означало только попытку писать за пределами внешне определенных границ относительного или индексного файла. В настоящем стандарте Кобола значение 24 состояния ввода-вывода также включает последовательный оператор WRITE (ПИСАТЬ) для относительного файла, когда число значащих цифр в относительном номере записи больше размера данного относительный ключ, описанного для этого файла.
ГОСТ 22558 устанавливает, что при успешном выполнении оператора WRITE (ПИСАТЬ) для относительного файла относительный номер переданной записи будет помещен в данное относительный ключ (если он указан). Результат не определен, если номер, определяемый значащими цифрами относительного номера записи, больше данного относительный ключ.
Это изменение может повлиять только на те программы, которые последовательно записывают больше записей, чем максимальное значение, допускаемое шаблоном данного относительный ключ.
Состояние ввода-вывода = 35. Попытка выполнения оператора OPEN (ОТКРЫТЬ) с вариантом INPUT (ВХОДНОЙ) для файла, не определенного как необязательный, которого нет в наличии.
Обоснование
ГОСТ 22558 требует обязательного указания фразы OPTIONAL (НЕОБЯЗАТЕЛЬНОГО) для входных файлов, которые могут отсутствовать в определенные моменты выполнения объектной программы. При этом не определено, что может случиться, когда файл, не объявленный необязательным, отсутствует. Новое значение 35 состояния ввода-вывода позволяет пользователю проверять это условие.
Состояние ввода-вывода = 37. Попытка выполнения оператора OPEN (ОТКРЫТЬ) для файла, который должен быть файлом массовой памяти, но не является таковым.
Обоснование
Это новое значение состояния ввода-вывода сообщает, что: (1) предпринята . попытка выполнения оператора OPEN 1-0 (ОТКРЫТЬ ВХОДНОИ-ВЫХОДНОЙ) для файла не массовой памяти, или (2) предпринята попытка выполнения оператора OPEN (ОТКРЫТЬ) для файла пе-массовой памяти, объявленного в программе как относительный или индексный файл.
ГОСТ 22558 не определяет, что происходит при таких обстоятельствах. Новое значение 37 состояния ввода-вывода позволяет пользователю проверять это условие ошибки.
Некоторые реализации обеспечивают расширение использования операторов OPEN 1-0 (ОТКРЫТЬ ВХОДНОИ-ВЫХОДНОЙ) для доступа к терминалам. Такое расширение может быть устранено новым значением 37 состояния ввода- вывода.
Состояние ввода-вывода = 38. Попытка выполнения оператора OPEN (ОТКРЫТЬ) для файла, предварительно закрытого с замком.
Обоснование
ГОСТ 22558 указывает, что реализация должна обеспечить, чтобы файл, закрытый с замком, не мог быть открыт опять во время текущего выполнения единицы исполнения, но не определяет, что случится, если сделана попытка вновь открыть этот файл. Новое значение 38 состояния ввода-вывода позволяет пользователю проверять это условие.
Состояние ввода-вывода = 39. Оператор OPEN (ОТКРЫТЬ) неуспешен из-за конфликтных свойств файла (несоответствие между фиксированными свойствами файла и свойствами файла, указанными в программе).
Обоснование
Фиксированные свойства файла - это свойства, отмеченные при создании файла и которые не могут изменяться на протяжении жизненного цикла файла. К этим свойствам (атрибутам) относятся организация, кодовый набор, минимальный и максимальный размер логической записи, тип записи (фиксированной или переменной длины) коэффициент блокирования, литера заполнитель и ограничитель записи. Для индексных файлов (только для них) дополнительными фиксированными свойствами файла являются основной ключ записи, дополнительный ключ записи и основная последовательность ключей.
ГОСТ 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.