Что означает статус файла 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

person hm amn    schedule 11.12.2020    source источник
comment
Вы используете 32 или 64 бит? С этим может быть связано ограничение ...   -  person Simon Sobisch    schedule 11.12.2020
comment
Скорее всего, 194 - слишком большой размер файла.   -  person Rick Smith    schedule 12.12.2020
comment
Какой КОБОЛ? Вы использовали все теги COBOL, которые только смогли найти. Вы должны использовать тот, который соответствует используемой вами версии. Я понятия не имею, к какому руководству обращаться.   -  person NicC    schedule 12.12.2020
comment
В ISO-8859-1 Â равно 194, поэтому определенно размер файла слишком велик.   -  person piet.t    schedule 14.12.2020


Ответы (2)


Вы можете просмотреть эту ссылку, которая включает некоторые информация, которая может относиться к вашему случаю. Некоторая информация включена там:

  1. О статусе файла

Если у вас есть элемент данных состояния файла, определенный для файла, то после каждой операции ввода / вывода в файле (OPEN, CLOSE, READ, WRITE, REWRITE, START и DELETE) исполняющая система обновляет его, чтобы указать, как операция завершена.

Определение элемента данных состояния файла необязательно. Если элемент данных состояния файла не объявлен и возникает серьезная ошибка файла, система времени выполнения COBOL отображает сообщение об ошибке и прерывает вашу программу.

Вы должны проверять элемент данных состояния файла после каждой операции ввода / вывода, чтобы убедиться, что операция завершилась успешно.

  1. Об элементе данных о статусе файла

Статус файла - двухбайтовый код. Если первый байт элемента данных состояния файла содержит значение 9, это указывает на системную ошибку времени выполнения COBOL. В этом случае второй байт - это двоичное поле, содержащее код ошибки.

  1. Пример кода (ws-file-status соответствует вашему 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.
    

Обратите внимание, если ваше (странное) значение Â будет соответствовать любому из перечисленных значений для binary-status (в пределах check-mf-error-message), но, по крайней мере, это должно помочь выяснить, как правильно отображать текущий код состояния файла.

person Pierre.Vriens    schedule 11.12.2020

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

person hm amn    schedule 19.01.2021