2013-02-17 1 views
0

В COBOL Я хочу прочитать последовательный файл строки. Первая строка происходит один раз. Вторая и третья линии могут повторяться несколько (неизвестных) раз. Я действительно не знаю, как это сделать.Как обрабатывать первую строку файла по-разному в COBOL?

Я думаю, что описание файла что-то вроде этого:

01 DBGEGEVENS   PIC X(200). 
01 PROJECT. (occurs unknown times) 
    03 PROJECTCODE  PIC X(10). 
    03 CSVPAD    PIC X(200). 
+1

Трудно предоставить какой-то ответ, если мы не знаем, что вы хотите сделать. Если вы просто хотите обрабатывать различные типы записей, вы их читаете (они будут в 01 (ых) под вашим FD для файла) и обрабатывают их при идентификации типа. Если вам нужно вести записи, относящиеся друг к другу, вы их идентифицируете и храните в Work-Storage. Если вам нужны все сразу, вы должны определить таблицу. Вы можете не знать фактического числа каждый раз, но вы должны знать разумный максимум. Итак, немного больше информации, пожалуйста. –

ответ

2

Это зависит от формата файла

ли вы хотите формат VB файла ???? затем

FILE-CONTROL. 
     SELECT In-File ASSIGN ..... 
    DATA    DIVISION. 
    FILE    SECTION. 
    FD Comp-File. 
    01 DBGEGEVENS   PIC X(200). 
    01 PROJECT. 
     03 PROJECTCODE  PIC X(10). 
     03 CSVPAD    PIC X(200). 

с

Read In-File 
    Read In-File 
    Read In-File 

Вы использовали бы DBGEGEVENS для первой записи и проекта SECON или subsquent записей

Для формата файлов с фиксированной шириной

FILE-CONTROL. 
     SELECT Comp-File ASSIGN ..... 
    DATA    DIVISION. 
    FILE    SECTION. 
    FD Comp-File. 
    01 input-record. 

    WORKING-STORAGE SECTION. 
    01 DBGEGEVENS   PIC X(200). 
    01 PROJECT. 
     03 PROJECTCODE  PIC X(10). 
     03 CSVPAD    PIC X(200). 

с

Read In-File into DBGEGEVENS 
    Read In-File into PROJECT. 
    Read In-File into PROJECT. 

Либо должны работать, в зависимости от того, какой формат используется

+0

Зачем вам писать по-разному для «фиксированных» или «переменных» записей? Любой метод для любого типа записей будет работать в абстрактном (как в том, что он не знает, что действительно требуется для задачи). Файл все равно «Строка». –

+0

Мне всегда нравилась версия рабочего хранилища, так как в заголовке, вероятно, есть поля, которые программа должна ссылаться при обработке других записей. –

+0

Брюс, оказалось, был вопрос о том, «как я должен читать файл, когда есть более одного типа записи», так что ваш дает хороший охват. Гилберт, прочитал файл. Если это заголовок, сохраните его. В противном случае используйте его там, где он есть. Сохраняет количество процессоров в зависимости от того, как определяются записи, и сколько в файле. Однако некоторые вещи требуют, чтобы данные были где угодно, кроме раздела ФАЙЛОВ, но затем становятся «без проблем». –

0

код, указанный указывает на файл VB - запись один 200 байт, в то время как другие записи 210 байт. В записях должен быть указатель, который описывает, каковы они и их цель. В конечном счете, вам лучше всего воспользоваться, прочитав их в WORKING-STORAGE - и я спрошу, кто передает вам файл, какие индикаторы доступны. Если, однако, вы знаете, что запись является единственной 200-байтной записью в файле, которая будет рассматриваться как заголовок, прочитанный один раз в его определении, - в то время как остальные 210-байтные записи (и я хочу подчеркнуть определение содержит 210 байтов) будет считываться в область WORKING-STORAGE, соответствующую их определению.

+0

Это не VB и FB, а LINE SEQUENTIAL, как указано в вопросе. –

Смежные вопросы