Что означает статус файла Cobol 9Â?
Моя проблема заключается в том, что когда я пытаюсь открыть на входе огромный файл (6 ГБ), появляется сообщение:
cobol file status code 9Â
Я скомпилировал программу и у нее нет ошибок, но когда я пытаюсь запустить ее, я использую маленькую (3 ГБ например) моя программа работает правильно.
Любые идеи ?
Объявление переменной:
SELECT
MYFILE ASSIGN MYFILE
ACCESS SEQUENTIAL
STATUS IS XZ-STATUS6.
===
OPEN INPUT MYFILE
===
READ MYFILE NEXT AT END MOVE 1 TO ZFIN-F3
2 ответа
Вы можете взглянуть на эту ссылку , которая содержит некоторую информацию, которая может применяться в вашем случае. Некоторая информация, включенная туда:
- О статусе файла
Если у вас есть элемент данных о состоянии файла, определенный для файла, то после каждой операции ввода/вывода в файле (ОТКРЫТИЕ, ЗАКРЫТИЕ, ЧТЕНИЕ, ЗАПИСЬ, ПЕРЕЗАПИСЬ, ЗАПУСК и УДАЛЕНИЕ) система времени выполнения обновляет его, чтобы указать, как операция завершена.
Определение элемента данных состояния файла является необязательным. Если элемент данных о состоянии файла не объявлен и возникает серьезная ошибка файла, система времени выполнения COBOL отображает сообщение об ошибке и прерывает вашу программу.
Вы должны проверять элемент данных состояния файла после каждой операции ввода/вывода, чтобы убедиться, что операция завершена успешно.
- Об элементе данных о состоянии файла
Статус файла представляет собой двухбайтовый код. Если первый байт элемента данных состояния файла содержит значение 9, это указывает на системную ошибку времени выполнения COBOL. В этом случае второй байт представляет собой двоичное поле, содержащее код ошибки.
Пример кода (состояние ws-file соответствует вашему XZ-STATUS6)
... working-storage section. 01 ws-file-status. 05 status-key-1 pic x. 05 status-key-2 pic x. 05 binary-status redefines status-key-2 pic 99 comp-x. ... ... procedure division. ... perform check-status. ... check-status. evaluate status-key-1 when "0" next sentence when "1" display "end of file reached" ... when "9" display "run-time-system error" perform check-mf-error-message end-evaluate. ... check-mf-error-message. evaluate binary-status when 002 display "file not open" when 007 display "disk space exhausted" when 013 display "file not found" when 024 display "disk error " when 065 display "file locked " when 068 display "record locked " when 039 display "record inconsistent" when 146 display "no current record " when 180 display "file malformed " when 208 display "network error " when 213 display "too many locks " when other display "not error status " display binary-status end-evaluate.
Обратите внимание, если ваше (причудливое) значение
спасибо всем за ваши ценные отзывы, проблема была в размере массива, который я использую для вычисления некоторых больших чисел, я установил свой массив на максимум, и теперь он работает нормально