Я хотел бы получить немного больше информации о проблеме с файловым вводом-выводом
иметь. Если я правильно понимаю, вы можете без проблем сделать следующее:
- Создать новый файл
- Добавить запись
- Выход
Тогда, если вы запустите программу снова и сразу
программа бомбит с "странной ошибкой".
Возможно ли вам прочитать
и отобразить запись, которую вы написали в первом запуске? Мне интересно, если до
запись прошла успешно, что, в свою очередь, ставит под сомнение целостность файла.
Я бы предложил изучить ключевое слово OPTIONAL
для SELECT
и
добавив предложение FILE STATUS
тоже. Статус файла должен быть проверен
после каждой операции ввода / вывода (ОТКРЫТЬ, ЗАКРЫТЬ, ЗАПИСАТЬ, ПРОЧИТАТЬ и т. д.). Значение содержало
в переменной, связанной с FILE STATUS
, вам понадобится долгий путь
к решению проблемы. Следующая таблица
описывает FILE STATUS
значений.
Возможно, вы захотите просмотреть этот учебник в
обработка проиндексированных файлов в COBOL.
Возможно, я не понял, в чем проблема с файловым вводом / выводом, но я вижу
что-то еще, что позже может вызвать проблемы!
Вы использовали следующую конструкцию:
PERFORM Some-Paragraph
...
Some-Paragraph.
...
IF Some-Condition
PERFORM Some-Paragraph
END-IF
.
Последний PERFORM Some-Paragraph
входит в сферу
сам абзац. Компиляторы COBOL могут не пометить это как ошибку, но
поведение не определено. COBOL PERFORM не соответствует
к семантике CALL / RETURN, с которой вы, возможно, знакомы
Другие языки. То, что вы здесь закодировали, широко известно как
как «Логическая бомба». Подробное описание того, что я имею в виду, может
можно найти здесь .