добавить записи в существующий файл - PullRequest
1 голос
/ 12 июля 2010

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

1 Ответ

4 голосов
/ 12 июля 2010

DISP=MOD

Это добавится к концу существующего последовательного набора данных.Если указанный набор данных еще не существует, он будет создан (в этом случае DISP = MOD и DISP = NEW эквивалентны)

Остерегайтесь следующего:

Multi-VolumeНаборы данных

Поведение DISP=MOD зависит от того, указали ли вы конкретный том или нет.Вы должны просмотреть эту ссылку для правил

Набор данных с секционированными данными

Если вы задаете имя элемента в параметре DSNAME, имя элемента не должен уже существовать .Система размещает механизм чтения / записи в конце набора данных.Если имя участника уже существует, система завершает работу.

Если вы не укажете имя члена, система помещает механизм чтения / записи в конец набора данных.Система не делает автоматическую запись в каталог.

Добавление данных в конец члена PDS / PDSE является хитростью.Как правило, вам нужно удалить и переписать весь элемент, добавив в него новые записи.

Последовательные наборы данных и глагол COBOL OPEN

Существует некоторое "взаимодействие" междуDISP, данное в JCL и глаголе COBOL OPEN.

Если вы укажете DISP=MOD в своем JCL, программа на COBOL добавит записи в конец последовательного набора данных для OPEN OUTPUT иOPEN EXTEND.

Если в JCL указать DISP=OLD, программа на COBOL добавит записи в конец последовательного набора данных для OPEN EXTEND.Если вы откроете последовательный набор данных как OPEN OUTPUT, исходное содержимое набора данных будет удалено, и вы фактически снова начнете с пустого набора данных (как если бы вы удалили и перераспределили его).

Наборы данных VSAM

Файлы метода доступа к виртуальному хранилищу (VSAM) представляют собой совершенно другой источник рыбы.Наборы данных VSAM доступны в различных организациях:

  • KSDS (набор данных с последовательным ключом)
  • ESDS (набор данных с последовательным вводом)
  • RRDS (набор данных относительной записи))
  • LSD (набор данных линейного пространства)

Каждая организация имеет свои собственные характеристики и применения.

Наборы данных VSAM должны быть предварительно определены перед программой COBOLможет ссылаться на них.Это часто делается как отдельная работа IDCAMS .Как только набор данных VSAM определен, к нему можно получить доступ через программу COBOL (или другую).Эта ссылка предоставляет хороший обзор для манипулирования наборами данных VSAM в COBOL.Раздел: Добавление записей в набор данных VSAM охватывает особенности добавления записей в набор данных VSAM из программы COBOL.Используйте OPEN EXTEND версию оператора open COBOL для добавления записей в конец существующего набора данных ESDS или KSDS VSAM.Обратите внимание, что для наборов данных KSDS записи должны добавляться в порядке возрастания по отношению к ключу.

JCL, используемый для подключения набора данных VSAM к программе, на самом деле довольно прост и описан здесь .Использование DISP=MOD аналогично DISP=OLD для существующих наборов данных VSAM (используйте любой из них - без разницы).Используйте DISP=SHR, если вы не обновляете набор данных и не хотите блокировать другие программы от одновременного доступа.

...