RDW+BDW существет только для RECFM=V[B], у F[B] блоков нет никаких дескрипторов. Да, для FBS количество блоков на треке будет одинаковым, ну и что из того? У последовательных методов доступа (BSAM, QSAM) нет возможности запросить установку на запись с определеным номером, в отличие от RRDS. Установка (вызов POINT) возможна для BSAM и только на прямой адрес (в форме TTR), так что если программа обращается к записям произвольным образом, то сама программа должна вычислять TTR. При этом методу доступа вообще говоря, все равно, укороченный блок или нет...
RDW+BDW существет только для RECFM=V[B], у F[B] блоков нет никаких дескрипторов. Да, для FBS количество блоков на треке будет одинаковым, ну и что из того? У последовательных методов доступа (BSAM, QSAM) нет возможности запросить установку на запись с определеным номером, в отличие от RRDS. Установка (вызов POINT) возможна для BSAM и только на прямой адрес (в форме TTR), так что если программа обращается к записям произвольным образом, то сама программа должна вычислять TTR. При этом методу доступа вообще говоря, все равно, укороченный блок или нет...
Согласен, но была же какая то причина. Например чтобы вам было проще вычислять TTR. (?)
так я предлагаю сначала про наборы, потом про каталог и только поле этого про 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)
Поддерживаю Григория. Каталоги - после наборов. У меня, кстати, ждет своего времени статья с набором инструментальных средств по исправлению каталога и висячих ссылок, в том числе в VVDS. Так что, если после наборов - каталоги, потом - GDG или, если хочется, ленточные и вспомогательные каталоги. А SMS - по желанию, так как логика выбора тома для распределения НД все-таки вещь вторичная по сравнению с организацией самих наборов. И даже рост значимости SMS со временем не изменяет, так скажем, "сервисности", функциональной подчиненности SMS-алгоритмов алгоритмам распределения и доступа к данным.
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) - это последний созданный или также и последний редактируемый?? (тоесть отредактировав набор посредине, я перенесу его как бы в начало?)
насчет имени набора данных: если 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 я не знаю, надо будет проверить :-)
Сделал небольшое введение в начале. ВиСамы переезжают сюда. (лимит форума)
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)
насчет 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 и тд
а как Вы пытаетесь "длинное" имя создать? Тут нужен старомодный 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
А что именно получается? какая ошибка? А 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
Изменится там набор, но имя его каким было таким и останется...
Можно еще раз. При каких изменениях появляется версия 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
А что именно получается? какая ошибка? А 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
>> Какая ошибка? так знамо - 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 томов, да и прав наверное не будет, но тмя набора берется правильно...
Стоп! Кавычки! Создал - некаталогизированный, как и было обещано, но вполне живой набор. Все создалось и читается-пишется, но только через DD программой.