Вт, 26.11.2024, 10:49
Приветствую Вас Гость | RSS
Главная | Виды наборов данных z/OS (dataset types) - Страница 2 - Форум | Регистрация | Вход
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Виды наборов данных z/OS (dataset types)
GregoryДата: Чт, 16.10.2008, 20:04 | Сообщение # 16
Генерал-майор
Группа: Доверенные
Сообщений: 482
Репутация: 22
Статус: Offline
RDW+BDW существет только для RECFM=V[B], у F[B] блоков нет никаких дескрипторов. Да, для FBS количество блоков на треке будет одинаковым, ну и что из того? У последовательных методов доступа (BSAM, QSAM) нет возможности запросить установку на запись с определеным номером, в отличие от RRDS. Установка (вызов POINT) возможна для BSAM и только на прямой адрес (в форме TTR), так что если программа обращается к записям произвольным образом, то сама программа должна вычислять TTR. При этом методу доступа вообще говоря, все равно, укороченный блок или нет...
 
XOpenДата: Чт, 16.10.2008, 20:15 | Сообщение # 17
Генерал-майор
Группа: Администраторы
Сообщений: 325
Репутация: 4
Статус: Offline
Quote
1.5 Набор поколений
Я бы предложил излагать это позже, после описания каталога.

Это очень сложный вопрос - что после кого... ибо Каталог = KSDS + ESDS (вроде как ВиСАМ)

Добавлено (16.10.2008, 20:15)
---------------------------------------------

Quote (Gregory)
RDW+BDW существет только для RECFM=V[B], у F[B] блоков нет никаких дескрипторов. Да, для FBS количество блоков на треке будет одинаковым, ну и что из того? У последовательных методов доступа (BSAM, QSAM) нет возможности запросить установку на запись с определеным номером, в отличие от RRDS. Установка (вызов POINT) возможна для BSAM и только на прямой адрес (в форме TTR), так что если программа обращается к записям произвольным образом, то сама программа должна вычислять TTR. При этом методу доступа вообще говоря, все равно, укороченный блок или нет...

Согласен, но была же какая то причина. Например чтобы вам было проще вычислять TTR. (?)

зы: жарко тут сегодня. biggrin Сорри, продолжим завтра...


Худая корова еще не газель!
 
GregoryДата: Чт, 16.10.2008, 20:30 | Сообщение # 18
Генерал-майор
Группа: Доверенные
Сообщений: 482
Репутация: 22
Статус: Offline
так я предлагаю сначала про наборы, потом про каталог и только поле этого про GDG, а то про GDG трудно будет объяснять, а там не все так очевидно.
А каталог нынешний (ICF-каталог, нонче все что было до того не поддерживается) в самом деле есть один KSDS (который называется BCS) + много-много ESDS, по одному на каждом томе (которые называются VVDS).

По поводу GDG:
- определен GDG base, например MY.GDG
- выполнено задание которое записало в MY.GDG(+1), появилось G0001V00
- выполнено задание которое записало в MY.GDG(+1), поколений стало два, G0001V00 и G0002V00.
- выполнено задание которое записало в MY.GDG.G0010V00, их стало три? (ответ - да)
- выполнено задание которое записало в MY.GDG.G0005V00, их стало четыре? (ответ - да)
- и что же теперь такое MY.GDG(0), это G0005V00 или G0010V00 ? (ответ - 0 это G0005V00, G0010V00 это -1)

 
XOpenДата: Пт, 17.10.2008, 11:59 | Сообщение # 19
Генерал-майор
Группа: Администраторы
Сообщений: 325
Репутация: 4
Статус: Offline
Quote (Gregory)
быть произвольным набором символов длиной до 44 байт, но практически всегда используются не произвольные, а "регулярные" имена.

Не понял? Что, правда можно создать длинное имя без точек ??? surprised

Добавлено (17.10.2008, 11:49)
---------------------------------------------

Quote (Gregory)
1.4 Не могу согласиться с тем что "С точки зрения пользователя PDS ничем не отличается от PDSE". PDSE позволяет дописывать данные в конец раздела (DISP=MOD,DSN=LIBRARY(MEMBER)). В PDS для того чтобы дописать данные в конец раздела нужно переписать весь раздел, DISP=MOD запрещено. Кроме этого, PDSE обеспечивает более широкие возможности совместного использования набора данных,
ну и, как отмечено выше автором, не требует реорганизации. Некоторые данные, как то программые объекты, могут размещаться только в PDSE. В то же время некоторые наборы данных операционной системы не могут быть PDSE и должны быть только классическими PDS.

Пытаюсь читать доку и не нахожу что DISP=MOD запрещено. Да, для расширения раздела, его надо перезаписать на новое место, но это также справедливо и для PDSE.

Добавлено (17.10.2008, 11:59)
---------------------------------------------
Про GDG - не знал, спасибо за инфу. (у нас это как архивы состояний и мы их только читаем) Один вопрос по теме. GDG(0) - это последний созданный или также и последний редактируемый?? (тоесть отредактировав набор посредине, я перенесу его как бы в начало?)


Худая корова еще не газель!
 
GregoryДата: Пт, 17.10.2008, 13:20 | Сообщение # 20
Генерал-майор
Группа: Доверенные
Сообщений: 482
Репутация: 22
Статус: Offline
насчет имени набора данных: если RACF позволит... Если имя содержит символы отличные от алфавитно-цифровых, то DSN='имя' в DD...
JCL reference DD DSNAME:
- Any data set name enclosed in apostrophes on the DSNAME parameter will be treated as an unqualified name. Data sets with an unqualified name cannot be cataloged. │
- Blanks can be included in a data set name if the name is enclosed in apostrophes, such as DSNAME='AB CD'.
и тд.

Кстати в связи с этим интересно вот что: в предшественных OS390, z/OS системах было возможно такое:
//SYSUT1 DD DSN='???????????....??', DISP=SHR,VOL=SER=ZZZZZZ,UNIT=3330
где ? это шестнадцатеричное '04'x
Такой "набор данных" описывает VTOC (оглавление тома), и открытие этого набора позволяло читать VTOC (RECFM=FB, LRECL=96,KEYLEN=44). Естественно, классическое оглавление тома а не VVDS. На современных SMS - managed томах классический VTOC остался но действует ли описанное выше в z/OS я не знаю, надо будет проверить :-)

 
akostДата: Пт, 17.10.2008, 13:24 | Сообщение # 21
Admin
Группа: Администраторы
Сообщений: 619
Репутация: 5
Статус: Offline
Quote

Quote (Gregory)
быть произвольным набором символов длиной до 44 байт, но практически всегда используются не произвольные, а "регулярные" имена.

Не понял? Что, правда можно создать длинное имя без точек ??? surprised


ОПС!
А длинное имя без точек я не создал - никак. Только точки через 8 символов и остальное бла-бла-бла...
 
XOpenДата: Пт, 17.10.2008, 13:33 | Сообщение # 22
Генерал-майор
Группа: Администраторы
Сообщений: 325
Репутация: 4
Статус: Offline
Сделал небольшое введение в начале. ВиСамы переезжают сюда. (лимит форума)

2. VSAM наборы
Существует 5 видов VSAM наборов: RRDS, ESDS, KSDS, VRRDS, LINEAR.

ESDS
Подобен последовательному файлу:
- Записи могут быть разной длины
- Записи можно добавлять только в конец
- Удалить запись нельзя, но можно пометить ее неактивной
- Запись можно поменять, но при этом нельзя изменить ее длину
- У любой записи можно получить ее относительный адрес (RBA - Relative Byte Address)
- Не имеет первичного индекса, но можно построить альтернативный индекс

RRDS
Подобен столбику кирпичиков(слотов):
- Получить запись можно по её порядковому номеру 1,2,3...(RRN - Relative Record Number). Номера идут по возрастанию и допускаются пропуски. (1,2,5,6,9...) Номер записи - это атрибут записи и он не может быть изменен.
- Записи можно удалять, добавлять, редактировать
- Все записи одинаковой длины
- Не может содержать индексов

KSDS
Индексный набор данных, подобен маленькой базе данных:
- Все записи имеют ассоциированный с ними ключ. Ключи хранятся в обязательном первичном индексе.
- Ключ - это часть записи, с определенной позиции, определенной длины
- Записи могут иметь разную длину
- Записи можно удалять, добавлять, редактировать. Допускается менять длину записи.
- Возможно создание альтернативного ключа (индекса)

VRRDS
Фактически представляет собой реализацию RRDS на базе KSDS:
- Получить запись можно по её порядковому номеру
- Существует неявно задаваемый первичный индекс (содержит порядковые номера записей)
- Записи могут быть разной длины

Linear
Стоящий особняком набор данных и отличается по принципу работы с ним. В отличии от остальных наборов данных, Linear VSAM не имеет записей, а состоит как бы из 4К окошек. Вы можете задать соответствие выбранного участка памяти(4К*n) и участка набора данных. Участок может быть по смещению от начала набора(4К*m). В результате создания этой связи(функция MAP) данные копируются в этот участок памяти и дальнейшая работа происходит как с обычной памятью. По завершении работы необходимо сохранить данные обратно в набор (функция SAVE)

(продолжение следует...)


Худая корова еще не газель!
 
GregoryДата: Пт, 17.10.2008, 13:50 | Сообщение # 23
Генерал-майор
Группа: Доверенные
Сообщений: 482
Репутация: 22
Статус: Offline
насчет GDG:
>> GDG(0) - это последний созданный или также и последний редактируемый?? (тоесть отредактировав набор посредине, я перенесу его как бы в начало?)
только GDG(+1, +2 ... и распределение нового GggggV00 изменит порядок. Все просто: DEFINE GDG, то есть определение base создает в каталоге n пустых индексных слотов где n число поколений. +1 или распределение с последним квалификатором GxxxxVyy занимает очередной слот; в том примере что выше что получается:
(1) G0001V00
(2) G0002V00
(3) G0010V00
(4) G0005V00
(5) пусто
обращение к (0) выберет квалификатор из последнего непустого слота, к -1 из предпоследнего и тд
Чтобы редактировать какой-то существующий набор он описывается либо как MY.GDG(-2) либо с абсолютным MY.GDG.G0002V00. Изменится там набор, но имя его каким было таким и останется...
То есть можно сказать что GDG есть механизм автоматической генерации имен. Подключается этот механизм на этапе планирования задания и в общем-то именно поэтому в TSO использовать относительные имена нельзя а можно только абсолютные :-)

Добавлено (17.10.2008, 13:50)
---------------------------------------------
а как Вы пытаетесь "длинное" имя создать? Тут нужен старомодный DD с VOL=SER и UNIT, причем этот том не может быть SMS managed насколько я понимаю...
Вообще по моему мнению это все является только поддержкой совместимости так что наверное лучше вообще об этом не писать.
В современнном состоянии все тома SMS-managed как правило, вот я и предлагаю людям, не обремененных знаниями древних ОС чтобы они использовали современные формы а не архаические то есть DSN...,DISP=(NEW,CATLG),DATACLS= писали IF-THEN-ELSE а не маловразумительный COND, использовали PDSE а не PDS и тд

 
akostДата: Пт, 17.10.2008, 14:15 | Сообщение # 24
Admin
Группа: Администраторы
Сообщений: 619
Репутация: 5
Статус: Offline
Quote

а как Вы пытаетесь "длинное" имя создать? Тут нужен старомодный DD с VOL=SER и UNIT, причем этот том не может быть SMS managed насколько я понимаю...
Вообще по моему мнению это все является только поддержкой совместимости так что наверное лучше вообще об этом не писать.
В современнном состоянии все тома SMS-managed как правило, вот я и предлагаю людям, не обремененных знаниями древних ОС чтобы они использовали современные формы а не архаические то есть DSN...,DISP=(NEW,CATLG),DATACLS= писали IF-THEN-ELSE а не маловразумительный COND, использовали PDSE а не PDS и тд

так с помощью DD и создаю на не-SMS-управляемых томах через IEFBR14
а вот VTOC читаю как в IBM-примерах, с помощью AMASPZAP и DD
DD DISP=OLD,UNIT=3390,VOL=SER=HHHHHH,DCB=(KEYLEN=44),DSN=FORMAT4.DSCB
 
GregoryДата: Пт, 17.10.2008, 14:52 | Сообщение # 25
Генерал-майор
Группа: Доверенные
Сообщений: 482
Репутация: 22
Статус: Offline
А что именно получается? какая ошибка?
А AMASPZAP (IMASPZAP) вот именно таким методом VTOC и читает... делает OPEN TYPE=J с именем набора (44)'04'x когда в DSN FORMAT4.DSCB:
http://tech.groups.yahoo.com/group/hercules-390/files , далее искать IMASPZAP.txt не знаю может зарегистироваться надо а может и так сойдет... (Yahoo! Groups --> Hercules390 ---> Files)
Так из программы можно читать, например на PL/1 :-)

отредактировано akost - ссылка была динамической. регистрация в Yahoo группе нужна.

Сообщение отредактировал Gregory - Пт, 17.10.2008, 14:53
 
XOpenДата: Пт, 17.10.2008, 15:31 | Сообщение # 26
Генерал-майор
Группа: Администраторы
Сообщений: 325
Репутация: 4
Статус: Offline
Quote (Gregory)
Изменится там набор, но имя его каким было таким и останется...

Можно еще раз. При каких изменениях появляется версия 01 в GDG ? (не generation)

После изменения или ?? И становится ли версионный набор последним? GDG(0)

Добавлено (17.10.2008, 15:31)
---------------------------------------------
Еще одно переселение...

1.4 Библиотечные наборы данных (partitioned dataset)

На z/OS не существует привычных папок (folder) как в других ОС, однако потребность группировать объекты существует. Библиотечный набор можно представить как папку первого уровня. Этот набор может содержать в себе как бы другие последовательные файлы, называемые - разделы (members). Библиотечный набор не может содержать в себе другой библиотечный набор. Разделы в свою очередь не могут иметь имя длиннее 8 символов. Библиотечные наборы делятся на: PDS (oн же PO) и PDSE (он же PO-E, он же LIBRARY). С точки зрения пользователя PDS почти ничем не отличается от PDSE, однако последний имеет более продвинутую внутреннюю структуру. Осоновные преимущества PDSE:
- не надо периодически сжимать (IEBCOPY compress)
- Одновременно несколько пользователей могут править разные разделы
- повышенная производительность доступа к разделам

1.5 Группа поколений данных (GDG - Generation Data Group)

Уже известные нам типы наборов можно объединять в группы поколений данных. Создается специальная запись в каталоге (GDG base) - общее имя всех наборов в данной группе. Система у всех новых наборов будет достраивать в имени порядковый номер (Generation number) и номер версии (Version number).

Пример набора из GDG: VASYA.DEVGRP.PROJECT1.G0001V00
При этом в каталоге есть запись VASYA.DEVGRP.PROJECT1, которая видится как набор, но на самом деле, просто запись в каталоге (GDG base)

В результате чего в JCL, при обращении к набору из групы, мы можем указывать как абсолютное имя, так и относительное:
GDGBASE(0) - последний созданный набор.
GDGBASE(-1) - предыдущий созданный набор. (номер генерации в имени может быть и выше)
GDGBASE(+1) - новый набор. Система сама назначит ему имя согласно правилам выше.
Тоесть вы можете 5 раз запустить один и тот же JCL и получить 5 разных наборов от каждого запуска. (в обычной жизни приходиться править JCL чтобы задать новое имя набора данных)
Кроме этого можно задать, сколько вы желаете хранить поколений. Например, если вы задали 5, то при создании 6го набора, 1й автоматически удаляется. (поведение при опции по умолчанию - NOEMPTY)

1.6 Индексно-последовательный набор данных (ISAM - Indexed Sequential Access Method)

Тип набора данных, поддержка которого прекращена с z/OS V1R7 (даже функция OPEN). Функцинально ISAM подобен KSDS но без альтернативных ключей (ключ может быть только один) и с необходимостью периодической реорганизации. Использует аппаратные команды для поиска по ключу; немного меньшие накладные расходы дискового пространства на полезные данные чем у KSDS. Идейным наследником является VSAM. В системах предшествующих z/OS V1R7 можно осуществить конвертацию из ISAM в VSAM.

1.7 Набор данных с прямой организацией (DA - Direct dataset).

Набор данных с прямой организацией и соответствующий ему метод доступа BDAM позволяет заполнять пространство, отведенное набору данных, записями практически как угодно. Вычислять местоположение записи каким угодно алгоритмом в зависимости от ее содержимого (или от фазы луны) и писать запись на свое место (рандомизация), например, логически разделить пространство на 256 кусков и писать записи в зависимости значения в первом байте в подходящий кусок; Разместить в начале набора (на первых 10 дорожках к примеру) какой-нибудь свой индекс с указателями на записи и тд. Понятно, что это требует существенно больших усилий от программиста, почему DA и сравнительно редко используется. В DA вообще нет никакаких накладных расходов - что создали, то и имеем, и могут быть задействованы аппаратные ключи.

1.8 Наборы данных с запрошенным track overflow

z/OS больше не поддерживает возможность track overflow. Характеризовались такие наборы буквой T, например FBT.

1.9 Наборы данных с контрольными символами

Все записи всех форматов, кроме VSAM, могут содержать контрольные символы для принтера. Существует 2 группы контрольных символов: машинные коды (mashine code) и ANSI коды. Машинные коды характеризуются наличием буквы М, тогда как ANSI характиризуются наличием буквы A. Примеры: FBM, FBA, FBSM, UM и тд


Худая корова еще не газель!

Сообщение отредактировал XOpen - Вт, 21.10.2008, 17:45
 
akostДата: Пт, 17.10.2008, 16:11 | Сообщение # 27
Admin
Группа: Администраторы
Сообщений: 619
Репутация: 5
Статус: Offline
Quote (Gregory)
А что именно получается? какая ошибка?
А AMASPZAP (IMASPZAP) вот именно таким методом VTOC и читает... делает OPEN TYPE=J с именем набора (44)'04'x когда в DSN FORMAT4.DSCB:
http://tech.groups.yahoo.com/group/hercules-390/files , далее искать IMASPZAP.txt не знаю может зарегистироваться надо а может и так сойдет... (Yahoo! Groups --> Hercules390 ---> Files)
Так из программы можно читать, например на PL/1 :-)

от я так и думал, что они так читают. значит, старый механизм работает.
Какая ошибка? так знамо - IEF6421I EXCESSIVE PARAMETER LENGTH IN THE DSNAME FIELD
 
GregoryДата: Пт, 17.10.2008, 16:38 | Сообщение # 28
Генерал-майор
Группа: Доверенные
Сообщений: 482
Репутация: 22
Статус: Offline
>> Какая ошибка? так знамо - IEF6421I EXCESSIVE PARAMETER LENGTH IN THE DSNAME FIELD
имя набора данных в кавычках? DSN='long_data_set_name' вот я тут попробовал прямо сейчас:

1 //FIPSADM$ JOB MSGLEVEL=1,MSGCLASS=X,NOTIFY=&SYSUID
IEFC653I SUBSTITUTION JCL - MSGLEVEL=1,MSGCLASS=X,NOTIFY=FIPSADM
2 //DUMMY EXEC PGM=IEFBR14
3 //D DD DISP=NEW,DSN='LONG_DATA_SET_NAME',
// SPACE=(TRK,(1,1)),UNIT=SYSDA
4 //
]] END OF JES SPOOL FILE ]]
STMT NO. MESSAGE
-
3 IGD01018I DATA SET LONG_DATA_SET_NAME
HAS A NONSTANDARD DATA SET NAME
AND IS NOT ELIGIBLE TO BE SMS-MANAGED
ICH70001I FIPSADM LAST ACCESS AT 14:34:07 ON FRIDAY, OCTOBER 17, 2008
ICH408I USER(FIPSADM ) GROUP(SWMDEV ) ...
LONG_DATA_SET_NAME CL(DATASET ) VOL(VSL9C1)
DEFINE - RESOURCE NOT PROTECTED
IEF344I FIPSADM$ DUMMY D - ALLOCATION FAILED DUE TO DATA FACILITY SYSTEM ERROR

создать я конечно не могу, в этой системе нет non-SMS томов, да и прав наверное не будет, но тмя набора берется правильно...

 
akostДата: Пт, 17.10.2008, 16:54 | Сообщение # 29
Admin
Группа: Администраторы
Сообщений: 619
Репутация: 5
Статус: Offline
Стоп!
Кавычки!
Создал - некаталогизированный, как и было обещано, но вполне живой набор. Все создалось и читается-пишется, но только через DD программой.
 
GregoryДата: Пт, 17.10.2008, 17:00 | Сообщение # 30
Генерал-майор
Группа: Доверенные
Сообщений: 482
Репутация: 22
Статус: Offline
> Можно еще раз. При каких изменениях появляется версия 01 в GDG ? (не generation)
> После изменения или ?? И становится ли версионный набор последним? GDG(0)
ни при каких... версия изменяется только вручную:

SC26-7410-04 z/OS DFSMS: Using Data Sets
3.10.2 Absolute Generation and Version Numbers

...

The version number lets you perform normal data set operations without disrupting the management of the GDG. For example, if you want to update the second generation in a 3-generation group, replace generation 2, version 0, with generation 2, version 1. Only one version is kept for each generation.

You can catalog a generation using either absolute or relative numbers. When a generation is cataloged, a generation and version number is placed as a low-level entry in the GDG. To catalog a version number other than V00, you must use an absolute generation and version number.

You can catalog a new version of a specific generation automatically by specifying the old generation number along with a new version number. For example, if generation A.B.C.G0005V00 is cataloged and you now create and catalog A.B.C.G0005V01, the new entry is cataloged in the location previously occupied by A.B.C.G0005V00. The old entry is removed from the catalog, to make room for the newer version, and may or may not be scratched depending on what limit processing options are specified for the GDG base. For system-managed data sets, if scratch is specified, the older version is scratched from the volume. If noscratch is specified, or if the attempt to scratch the DSCB fails, the older version
is not scratched and the generation data sets is recataloged as a non-VSAM data set with the GnnnnVnn name not associated with the GDG base. For non-system-managed data sets, the older version is also governed by the GDG base limit processing options. If noscratch is specified for the base, the older GDS version is not scratched. To scratch the old version and make its space available for reallocation, include a DD statement, describing the data set to be deleted, with DISP=(OLD,DELETE) when the data set is to be replaced by the new version.

 
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск: