В контексте мэйнфреймов IBM в линейке S/360 набор данных (предпочтительно IBM) или набор данных — это компьютерный файл, имеющий организацию записи . Использование этого термина началось, например, с DOS/360 , OS/360 , и до сих пор используется их преемниками, включая текущую z/OS . Документация для этих систем исторически предпочитала этот термин, а не файл .
Набор данных обычно хранится на устройстве хранения данных с прямым доступом (DASD) или магнитной ленте [ 1], однако устройства единичной записи, такие как считыватели перфокарт, перфораторы, строчные принтеры и страничные принтеры, могут обеспечивать ввод/вывод (I/O) для набора данных (файла). [2]
Наборы данных не являются неструктурированными потоками байтов , а скорее организованы в различные логические записи [3] и блочные структуры, определяемые DSORG
(организацией набора данных), RECFM
(форматом записи) и другими параметрами. Эти параметры указываются во время выделения (создания) набора данных, например, с помощью операторов Job Control Language DD
. В работающей программе они хранятся в блоке управления данными (DCB) или блоке управления доступом (ACB), которые представляют собой структуры данных, используемые для доступа к наборам данных с использованием методов доступа .
Записи в наборе данных могут иметь фиксированную, переменную или «неопределенную» длину. [4]
Для OS/360 параметр DCB DSORG
определяет, как организован набор данных. Это может быть [5]
среди прочего. Наборы данных на ленте могут быть только DSORG=PS
. Выбор организации зависит от того, как будет осуществляться доступ к данным, и в частности, как они будут обновляться.
Программисты используют различные методы доступа (такие как QSAM или VSAM ) в программах для чтения и записи наборов данных. Метод доступа зависит от организации данного набора данных.
Независимо от организации, физическая структура каждой записи по сути одинакова и единообразна во всем наборе данных. Это указано в RECFM
параметре DCB. RECFM=F
означает, что записи имеют фиксированную длину, указанную с помощью LRECL
параметра. RECFM=V
указывает запись переменной длины. Записи V при сохранении на носителе имеют префикс Record Descriptor Word (RDW), содержащий целочисленную длину записи в байтах и битах флагов. С помощью RECFM=FB
и RECFM=VB
несколько логических записей группируются вместе в один физический блок на ленте или DASD. FB и VB — это fixed-blocked
, и variable-blocked
, соответственно. RECFM=U (не определено) также имеет переменную длину, но длина записи определяется длиной блока, а не полем управления.
Параметр BLKSIZE
определяет максимальную длину блока. RECFM=FBS
[6] также может быть указан, что означает fixed-blocked standard
, что все блоки, кроме последнего, должны быть полной BLKSIZE
длины. RECFM=VBS
, или variable-blocked spanned
, означает, что логическая запись может быть распространена на два или более блоков, с флагами в RDW, указывающими, продолжается ли сегмент записи в следующем блоке и/или был продолжен из предыдущего.
Этот механизм устраняет необходимость использования любого значения байта-«разделителя» для разделения записей. Таким образом, данные могут быть любого типа, включая двоичные целые числа, числа с плавающей точкой или символы, без введения ложного условия конца записи. Набор данных является абстракцией коллекции записей, в отличие от файлов как неструктурированных потоков байтов.
Разделенный набор данных ( PDS ) [7] — это набор данных, содержащий несколько элементов , каждый из которых содержит отдельный поднабор данных, аналогичный каталогу в других типах файловых систем . Этот тип набора данных часто используется для хранения загрузочных модулей (старых форматов связанных исполняемых программ), исходных библиотек программ (особенно определений макросов ассемблера), определений экрана ISPF и языка управления заданиями . PDS можно сравнить с Zip- файлом или структурированным хранилищем COM .
Разделенный набор данных может быть размещен только на одном томе и иметь максимальный размер 65 535 дорожек.
Помимо членов, PDS также содержит каталог. К каждому члену можно получить косвенный доступ через структуру каталога. После того, как член найден, данные, хранящиеся в этом члене, обрабатываются так же, как и набор данных PS (последовательный).
Всякий раз, когда элемент удаляется, занимаемое им пространство становится непригодным для хранения других данных. Аналогично, если элемент перезаписывается, он сохраняется в новом месте в конце PDS и оставляет неиспользуемое «мертвое» пространство в середине. Единственный способ восстановить «мертвое» пространство — выполнить сжатие файлов. [8] Сжатие, которое выполняется с помощью утилиты IEBCOPY , [9] перемещает все элементы в начало пространства данных и оставляет свободное используемое пространство в конце. (Обратите внимание, что на современном языке этот вид операции можно было бы назвать дефрагментацией или сборкой мусора ; сжатие данных в настоящее время относится к другой, более сложной концепции.) Файлы PDS могут находиться только на DASD , а не на магнитной ленте , чтобы использовать структуру каталогов для доступа к отдельным элементам. Разделенные наборы данных чаще всего используются для хранения нескольких языковых файлов управления заданиями , управляющих операторов утилит и исполняемых модулей.
Улучшением этой схемы является Partitioned Data Set Extended (PDSE или PDS/E, иногда просто библиотеки ), представленный с DFSMSdfp для систем MVS/XA и MVS/ESA . Библиотека PDS/E может хранить программные объекты или другие типы элементов, но не оба сразу. BPAM не может обрабатывать PDS/E, содержащий программные объекты.
Структура PDS/E похожа на PDS и используется для хранения тех же типов данных. Однако файлы PDS/E имеют лучшую структуру каталогов, которая не требует предварительного выделения блоков каталогов при определении PDS/E (и, следовательно, не исчерпывает блоки каталогов, если их было указано недостаточно). Кроме того, PDS/E автоматически сохраняет элементы таким образом, что не требуется операция сжатия для освобождения «мертвого» пространства. [8] Файлы PDS/E могут находиться только на DASD, чтобы использовать структуру каталогов для доступа к отдельным элементам.
Группа данных поколения [10] ( GDG ) [11] представляет собой группу наборов данных, не относящихся к VSAM [12], которые представляют собой последовательные поколения исторически связанных данных [13], хранящихся на мэйнфрейме IBM (работающих под управлением ОС или DOS/VSE ). [14]
GDG обычно каталогизируется. [13]
Отдельный элемент коллекции GDG называется « Набором данных поколения ». [13] [15] Последний может быть идентифицирован абсолютным числом, ACCTG.OURGDG(1234)
или относительным числом: (-1) для предыдущего поколения, (0) для текущего и (+1) для следующего поколения. [16]
Группы данных генерации определяются с помощью оператора BLDG [17] утилиты IEHPROGM или оператора DEFINE GENERATIONGROUP [18] более новой утилиты IDCAMS [19] , которая позволяет устанавливать различные параметры.
LIMIT(10)
ограничит количество поколений до 10.SCRATCH FOR (91)
будет сохранять каждого участника, вплоть до ограниченного числа поколений, по крайней мере 91 день.IDCAMS также может удалить (и при желании отменить каталогизацию) GDG. [20]
Каталогизация наборов данных на магнитной ленте ...
набор данных .. файл, содержащий одну или несколько записей.
Записи имеют либо фиксированную, либо переменную длину в заданном наборе данных.
Переменная длина, блокированный, охватываемый (VBS)
Секционированный набор данных будет содержать неиспользуемые области (иногда называемые газом), где когда-то находился удаленный элемент или старая версия обновленного элемента. Это неиспользуемое пространство восстанавливается только при копировании секционированного набора данных в новый набор данных или после успешного завершения операции сжатия на месте. Для PDSE оно не имеет значения и игнорируется при запросе.
создание и обработка группы данных поколений или GDG на ...
Группы данных поколения (GDG)
... не-VSAM ...
последовательные, исторически связанные,
{{cite book}}
: |work=
проигнорировано ( помощь )Создайте GDG... IDCAMS сделает это