Программы зависают при открытии индексированного файла COBOL
Я недавно начал COBOL
конечно и из-за конфигурации моего компьютера (Windows 7 64 Bits
а также GNU/Linux 64Bits)
Я должен использовать Dosbox
компилировать и выполнять программы.
Все идет хорошо, но я нахожу некоторые проблемы, когда я пытаюсь открыть Indexed file
, или I-O
или же Ouput
Режим. Я могу скомпилировать и связать, но во время выполнения, dosbox
замерзнуть
Моя версия компилятора MS-COBOL 5.0
а также DosBox
0,74 (последняя версия).
У кого-нибудь была эта проблема? Может кто-нибудь сказать, как это исправить.
Мой код вот этот.
Заранее спасибо.
ИДЕНТИФИКАЦИОННЫЙ ОТДЕЛ. ПРОГРАММА-ID. ПОВЕСТКА ДНЯ. АВТОР. ХОЗЕ МАРИЯ РАМИРЕС МИРА. ДАТА-НАПИСАНО. 06/05/2014. ДАТА-платформенный. 06/05/2014. ОТДЕЛ ОКРУЖАЮЩЕЙ СРЕДЫ. РАЗДЕЛ КОНФИГУРАЦИИ. SOURCE-COMPUTER. IBM-PC. OBJECT-COMPUTER. IBM-PC. SPECIAL-NAMES. ДЕСЯТИЧНАЯ ТОЧКА - КОММА. РАЗДЕЛ ВВОДА-ВЫВОДА. FILE-CONTROL. ВЫБРАТЬ ПОВЕСТКУ ДНЯ НА ДИСК "ПОВЕСТКА ДНЯ" ОРГАНИЗАЦИЯ УКАЗАНА ДОСТУП СЛУЧАЙНЫЙ ЗАПИСЬ КЛЮЧ ЕСТЬ AG-NICK СОСТОЯНИЕ ФАЙЛА AG-STATUS. ОТДЕЛ ДАННЫХ. РАЗДЕЛ ФАЙЛА. ПОВЕСТКА ДНЯ ЗАПИСЬ СОДЕРЖИТ 112 СИМВОЛОВ ЭТИКЕТКА ЗАПИСИ СТАНДАРТНАЯ ЗАПИСЬ ДАННЫХ - AG-PERSONA. 01 AG-PERSONA. 03 AG-NIC PIC X(25). 03 AG-NOMBRE PIC X(25). 03 AG-APELLIDOS PIC X(50). 03 AG-TELEFONO PIC X(12). РАЗДЕЛ РАБОЧЕГО ХРАНЕНИЯ. 77 AG-STATUS PIC 99. 88 EXITO VALUE 00. 88 КЛЕВ-ДУПЛИКАДА ЗНАЧЕНИЕ 22. 88 CLAVE-NO-ENCONTRADA ЗНАЧЕНИЕ 23. 88 SIN-ESPACIO-EN-DISCO VALUE 34. 88 FICHERO-NO-EXISTE VALUE 35. 88 EOF VALUE 10. ПРОЦЕДУРА ОТДЕЛА. ОСНОВНОЙ ПОРЯДОК. ДИСПЛЕЙ "ПРОЦЕДО АБРИР ЭЛЬ АРХИВО". ПОВЕСТКА ДНЯ ОТКРЫТОГО СОСТАВА. ЕСЛИ ВЫХОДИТ ТОГДА ДИСПЛЕЙ "EL ARCHIVO SE HA ABIERTO" ELSE ОЦЕНИТЬ ИСТИНУ КОГДА ФИЧЕРО-НЕТ СУЩЕСТВОВАТЬ ДИСПЛЕЙ "EL ARCHIVO NO EXISTE" END-ОЦЕНИТЬ END-IF. ЗАКРЫТЬ ПОВЕСТКУ ДНЯ. СТОП РАБОТАЕТ. ПОВЕСТКА ДНЯ ПРОГРАММЫ.
3 ответа
Вы пытались выбрать файл, используя опциональную фразу. Например,
SELECT OPTIONAL AGENDA ASSIGN TO DISK "AGENDA.DAT"
ORGANIZATION IS INDEXED
ACCESS IS RANDOM
RECORD KEY IS AG-NICK
FILE STATUS IS AG-STATUS.
Необязательная фраза должна быть указана для файлов, открытых для INPUT, IO или EXTEND, которые не должны присутствовать при запуске программы.
Против этого является то, что вы утверждаете, что проблема также возникает с OPEN OUTPUT, и в любом случае программа должна выдавать какие-то выходные данные, но, как другие отметили, версия COBOL недостаточно известна.
Кстати, я подключил вашу программу к онлайновому COBOL по адресу http://www.compileonline.com/compile_cobol_online.php и он отлично работал, вызывая имя условия FICHERO-NO-EXISTE.
Но это поднимает еще один момент. В моем руководстве по Microfocus код состояния файла 35 указан как возвращаемый при попытке ОТКРЫТЬ ВХОД, ВХОД или ВЫДЕЛИТЬ для НЕОБЯЗАТЕЛЬНОГО файла, который не существует. Статус файла 05 возвращается, если вы использовали ФАКУЛЬТАТИВНУЮ фразу, и файл не существует во время выполнения OPEN.
Каков абсолютный путь к AGENDA.DAT
?
Иногда с устаревшими программами DOS вы не можете читать / записывать файлы внутри папок с пробелами в названии. Скажем, если ваша текущая папка C:\ms cobol\
переименуйте его в C:\mscobol\
,
Стоит попробовать, если это ваш случай.
DOSBox был разработан для игр. Проблема может быть в том, что в DOSBox отсутствует блокировка файла и записи. DOSBox имеет больше проблем, таких как внутреннее кэширование файлов, бомба замедленного действия с многопользовательскими программами. Вы можете попробовать vDos: http://sourceforge.net/projects/vdos/. Это только Windows, но лучше интегрируется с ней.