зато я был совершенно неправ относительно DISP=MOD и PDSE... Нельзя с помощью DISP=MOD добавить записи в конец PDSE, это я что-то напутал... Как для PDS, так и для PDSE, попытка добавлять
// EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD *
One more line
//SYSUT2 DD DSN=TEST.PDSE(TT),DISP=MOD,
// SPACE=(TRK,(1,1)),UNIT=SYSDA
//SYSIN DD DUMMY
приводит к ABEND B14:
IEC217I B14-04,IGG0201Z,FIPSADM$,IEBGENER,SYSUT2,E345,WK7835,TEST.PDS(TT)
для PDS это совершенно понятно и так было всегда, дописывать в конец непоследнего раздела просто некуда, за его концом может сразу же начинаться другой раздел. Технически для структуры PDSE дозапись в конец можно было бы делать, но это НЕ ДЕЛАЕТСЯ. Возможно, как раз для того чтобы не было разницы междуPDS и PDSE... Just a guess. А читать и писать один и тот же раздел вот таким образом
// EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=TEST.PDSE(TT),DISP=SHR
// DD *
One more line
//SYSUT2 DD DSN=TEST.PDSE(TT),DISP=SHR
//SYSIN DD DUMMY
можно и для PDS и для PDSE. Приношу свои глубокие извинения за то что ввел в заблуждение!
Добавлено (17.10.2008, 20:49)
---------------------------------------------
для полноты картины:
индексно-последовательные наборы данных (ISAM).
Архаический тип набора данных, поддержка которого, похоже, все еще существует. Функцинально ISAM подобен KSDS но без альтернативных ключей (ключ может быть только один) и с необходимостью периодической реорганизации. Использует аппаратные команды для поиска по ключу; немного меньшие накладные расходы дискового пространства на полезные данные чем у KSDS, но кому это нужно при современных дисках?! Полностью заменяется VSAM.
наборы данных с прямой организацией (DA).
Также несколько архаичный тип набора данных. Набор данных с прямой организацией и соответствующий ему метод доступа BDAM позволяет заполнять пространство, отведенное набору данных, записями практически как угодно. Вычислять местоположение записи каким угодно алгоритмом в зависимости от ее содержимого (или от фазы луны) и писать запись на свое место (рандомизация), например, логически разделить пространство на 256 кусков и писать записи в зависимости значения в первом байте в подходящий кусок; Разместить в начале набора (на первых 10 дорожках к примеру) какой-нибудь свой индекс с указателями на записи и тд. Понятно, что это требует существенно больших усилий от программиста, почему DA и сравнительно редко использовался. Однако, в PL/1 имеется штатная поддержка 3 видов прямых наборов (REGIONAL(1), REGIONAL(2), REGIONAL(3)) не требующая никаких усилий, поэтому те, кто умудрился дочитать мануал до этих описаний, иногда применяли DA :-). В DA вообще нет никакаких накладных расходов - что создали, то и имеем, и могут быть задействованы аппаратные ключи. По идее, DA может быть полезен в системах реального времени, так как при соответствующей организации данных в наборе время доступа к записи можно точно предсказать (а в VSAM KSDS вообще говоря нет, так как заранее неизвестно, сколько операций ввода-вывода потребуется, можно назвать только диапазон от .... до ...).
В общем, любопытная экзотическая зверушка...