Чтение последовательного файла в коболе - PullRequest
1 голос
/ 05 декабря 2011

Есть ли способ прочитать последовательный файл в cobol много раз?Например, вы достигли конца файла, а затем вернулись с самого начала файла?

Ответы [ 6 ]

2 голосов
/ 05 декабря 2011

Вы также можете прочитать файл внутри цикла или выполнить изменение.Как и в случае с другим ответом, убедитесь, что вы закрываете файл каждый раз, когда достигаете конца, и снова открываете его.

2 голосов
/ 05 декабря 2011

Закройте файл, снова откройте его и перечитайте.

Мне интересно знать, почему вы хотите это сделать?

0 голосов
/ 16 июня 2018

Вот мое решение

File1 имеет reocrds плюс ключ File2 имеет reocrds, где ключ встречается много раз

Я храню данные file1 в массиве, это означает, что вы должны знать размер данных

Я сканирую файл2 до конца файла, если ключ в файле2 совпадает с ключом в массиве, затем выполняю вычисления,

Пример Store 1 2 3 4 в массиве из файла File1, пока EOF файла1 не будет проверен на файле file21 1 4 4 2 3 Если 1 в файле2 совпадает с 1 в массиве, то вычислить Продолжайте делать, пока не достигнете конца File2

Надеюсь, это поможет

0 голосов
/ 01 февраля 2013

Было бы глупо открывать, обрабатывать, закрывать, повторно открывать, повторно обрабатывать, повторно закрывать любое количество раз, не говоря уже о 1000. Это очень, очень много времени.

В программе Cobol вы сохраняете файл меньшего размера в таблице и обрабатываете таблицу в сравнении с файлом большего размера, как было предложено.

Однако вам не нужна программа. JOINKEYS даст вам решение.

У тебя нет ключа? О, дорогой, дорогой. Вы делаете один. Вы создаете один и тот же однобайтовый ключ с одинаковым значением для каждой записи в обоих файлах. Сделайте JOINKEYS на этот ключ. Укажите SORTED на JOINKEYS (и NOSEQCK, если у вас DFSORT). У вас есть "декартово" соединение. Используйте SS (совпадение подстроки), которое может быть для всей записи или части записи. Твой фактический требуемый результат неясен, и я не думаю, что ты собираешься придумать это сейчас.

С DFSORT вы можете сделать это за один шаг. С SyncSort вы можете сделать это за один шаг, если ваша версия поддерживает файлы JNFnCMTL.

0 голосов
/ 20 мая 2012

Альтернатива: сделать копию файла 1 с помощью утилиты (или другой программы на языке COBOL).Копия, файл 1a, имеет ОТНОШЕНИЕ К ОРГАНИЗАЦИИ (возможно, VSAM RRDS).В вашей программе сканирования / сопоставления вы можете изменить положение первой записи файла 1a с помощью оператора START.

Эквивалентно, вы можете создать последовательный индексированный файл 1a, где ключ - это просто произвольный возрастающий номер, которыйслучайно совпадает с номером записи.

0 голосов
/ 09 декабря 2011

В этом случае JOINKEYS из DFSORT очень помогает.Я настоятельно не рекомендую ваш подход, если ваше требование ТОЛЬКО для поиска строки из файла1 со списком строк в файле2.

...