Прежде всего, я вижу, что вы уже отправились на контрактный стол с OCCURS после вашего последнего вопроса. Я думаю, что это неправильно. Это лучше.
01 FILE-TABLE.
05 FILE-TABLE-ROW
OCCURS 10 TIMES
INDEXED BY I.
10 FILE-TABLE-COL
OCCURS 10 TIMES
INDEXED BY J.
15 FILE-TABLE-COL PIC X(1).
Просто точка я не упоминал ранее, так как вы можете назвать, чтобы помочь вам, как новичок, вам не нужно называть поля, если вы не собираетесь их использовать.
01 FILE-TABLE.
05 FILE-TABLE-ROW
OCCURS 10 TIMES
INDEXED BY I.
10 FILLER
OCCURS 10 TIMES
INDEXED BY J.
15 FILE-TABLE-COL PIC X(1).
Обратите внимание, что с 1985 года стандарта, слово Наполнитель может быть написано невидимыми чернилами:
05 FILLER PIC X(20).
05 PIC X(20).
Заготовку во имя неявное ФИЛЛЕР. Отметим также, что 05
может быть записано как 5
, так как каждый номер уровня, начинающийся с нуля.
ПРОЧИТАЙТЕ ФАЙЛ, НАПИСАТЬ ЗАПИСЬ, как говорится в старой поговорке. «Запись» в этом контексте является уровнем 01 под DF. Вы пытаетесь написать что-то, что является подчиненной частью записи, и это не сработает. Кажется, путают компилятор.
Я не вижу FD, но предполагаю, что он есть. Поместите свой стол в РАБОЧЕЕ ХРАНЕНИЕ (или ЛОКАЛЬНОЕ ХРАНЕНИЕ). Определите 10-байтовую запись в вашем FD, MOVE FILE-TABLE-ROW для этой вновь определенной записи или используйте WRITE FROM FILE-TABLE-ROW.
Вы не можете записать часть записи (уровень 01) в разделе ФАЙЛА. Вы можете использовать MOVE или WRITE ... FROM ... для доступа к данным на уровне, отличном от 01, и получить эти данные на ваш уровень 01, чтобы разрешить WRITE.
WORKING-STORAGE SECTION,
01 some-thing PIC X.
Тогда
MOVE some-thing TO output-record
WRITE output-record
Или
WRITE output-record FROM some-thing
Есть два способа написать WRITE
, что вас интересуют здесь:
WRITE record-name
WRITE record-name FROM somewhere-else
Для первых, вы неполносимметричных определите свой поставьте под свой FD, поместите значения в нужные поля и затем НАПРАВЛЯЕТ запись.
Для второго вам потребуется только минимальное определение под FD (достаточно, чтобы определить длину записи, которая может быть переменной, вы, вероятно, придете к ней позже), и вы поместите значения во все поля, которые вы при необходимости, подчиняться другому элементу группы. Определение под FD может быть полным, просто так оно и не должно быть.
Эти данные могут быть в любом месте раздела DATA DIVISION. Это может быть даже из где-то еще в разделе ФАЙЛА (запись записи WRITE FROM из входной записи - это то, что вы увидите).
FROM
на WRITE, как INTO
на READ, является неявным MOVE
. MOVE formatted-data Для записи вывода и записи WRITE, это то, что говорит WRITE ... FROM ...
.
Как вы читаете файл? – gazzz0x2z
@ gazzz0x2z open для организации записи является последовательным –