2014-02-23 2 views
0

У меня есть следующий код для обработки индексированного файла, но я получаю ошибку времени выполнения, «индексированная файловая система недоступна» при запуске программы. Однако я не уверен, как закодировать индексный файл и файл данных. Правильно ли я выполняю инициализацию? Что я делаю неправильно?Индексированная обработка файлов в ошибке Cobol?

   IDENTIFICATION DIVISION. 
    PROGRAM-ID. INDEXFILE. 

    ENVIRONMENT DIVISION. 
    INPUT-OUTPUT SECTION. 
    FILE-CONTROL. 

     SELECT VENDOR-FILE ASSIGN TO DISK 
     ORGANIZATION IS INDEXED 
     ACCESS MODE IS RANDOM 
     RECORD KEY IS VENDOR-NUMBER. 


    DATA DIVISION. 
    FILE SECTION. 

    FD VENDOR-FILE 
     LABEL RECORDS ARE STANDARD 
     VALUE OF FILE-ID IS "input.txt" 
     DATA RECORD IS VENDOR-RECORD.   

    01 VENDOR-RECORD. 
     05 VENDOR-NUMBER PIC 9(5). 
     05 VENDOR-NAME  PIC X(30). 

    WORKING-STORAGE SECTION. 

    01 VNAME PIC X. 

    PROCEDURE DIVISION. 
    PARA1. 
     OPEN INPUT VENDOR-FILE. 
     DISPLAY 'ENTER VENDOR NO: '. 
     ACCEPT VENDOR-NUMBER. 
     DISPLAY VENDOR-NUMBER. 
     READ VENDOR-FILE 
      INVALID KEY DISPLAY 'NO SUCH RECORD'. 

     CLOSE VENDOR-FILE. 
     STOP RUN.   
+1

Пожалуйста, сообщите нам, какой компилятор вы используете, и предоставите полный текст сообщения об ошибке, которое вы получаете. Сообщение об ошибке должно содержать номер (ы) линии, к которому он применяется. – cschneid

+0

Я использую DSBOX как свой компилятор. Я редактировал код, и ошибка показывает ошибку времени выполнения, индексированная файловая система недоступна. – user3211403

+0

Что такое DSBOX? У вас есть подробности об этом? Вы должны использовать FILE STATUS для всех файлов (при условии, что он вам доступен) и проверить хороший статус после каждого доступа к файлу. Когда вы получаете ненулевое значение для OPEN, например, фактический код STALUS FILE может предоставить вам больше информации. Вы уверены, что файл, который вы выделяете, является индексированным файлом? Является ли ваш .txt-файл индексированным файлом? Если это так, я бы дал ему другой тип файла, чтобы сохранить путаницу. –

ответ

0

Все, что мы действительно знаем, что вы работаете что-то, что позволяет старое программное обеспечение для работы, как это было некоторое время в прошлом (DOSBox).

Мы не знаем, какой у вас компилятор. Вы должны попытаться найти имя, просмотрев любой текстовый вывод, созданный при компиляции вашей программы, или попробуйте «переключатели», например, /? /h /help -? -h -help --help, добавленные к тому, что у вас есть при компиляции программы.

Есть ли у вас документы для компилятора? Как только вы узнаете, какой компилятор он есть, вы сможете найти их с любимым поисковым движком.

Чтобы создать свой первый проиндексированный файл, напишите небольшую программу, которая открывает индексный файл для OUTPUT. WRITE записи, которые вы хотите, затем CLOSE файл и остановить программу.

Этого будет достаточно, чтобы получить индексированный файл. Затем вы сможете использовать этот файл как INPUT или I-O в другой программе.

Всегда полезно использовать FILE STATUS. Если вы не знаете, как это использовать, и у вас пока нет руководства, посмотрите документацию GNU COBOL в SourceForge.

1

DOSBOX эмулирует операционную систему MS-DOS, поскольку она будет работать на более старом компьютере IBM PC Compatible. DOSBOX был разработан в основном для поддержки запуска старых компьютерных игр на новых машинах с обновленными операционными системами. DOSBOX не является компилятором , который вы используете - это операционная система. Таким образом, мы все еще не знаем, какой «вкус» COBOL вы пытаетесь использовать здесь. Все это в сторону, сообщение, которое вы получаете: Индексированная файловая система недоступна, и это намекает на то, что вам недостает некоторых библиотек поддержки времени выполнения для используемой версии COBOL.

Индексные файловые системы напрямую не поддерживаются операционной системой MS-DOS (или любой другой операционной системой типа ПК, если на то пошло). Для доступа к файлам, отличным от простого последовательного, требуется некоторый тип поддержки во время выполнения, и я подозреваю, что вам не хватает этих компонентов в вашей операционной среде. Перспектива получить гораздо больше, не обнаружив недостающих компонентов, является низкой.