ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 17.10.2024
Просмотров: 86
Скачиваний: 0
выполнения в регистре 1 содержится адрес очередной логической записи. Для создания индексно-последовательного набора данных используется индексно-последовательный метод доступа с очередя ми. Макрокоманда PUT при этом работает в режиме пересылки. После каждого выполнения этой макрокоманды логическая запись, полученная из выходного набора данных, помещается в буфер для вывода. Как только этот буфер будет заполнен, его содержимое записывается на том прямого доступа. Обработка завершается по окончании входного набора данных.
|
O P E N |
( P D C B , , I S D C B , ( O U T P U T ) ) |
C 1K L |
G E T |
P D C B |
|
LR |
0,1 |
|
P U T |
I S D C B , (0) |
|
В |
C IK L |
P D C B |
Ъсв‘ |
D S O R G = P S , M A C R F = ( G L ) , D D N A M E = V V O D , |
|
|
E O D A D = E N D |
I S D C B |
D C B |
D S O R G = IS , M A C R F = ( P M ) , D D N A M E = V I V O D |
Второй пример иллюстрирует выборочное обновление индексно последовательного набора данных. Обновление производится с по мощью последовательного набора данных на магнитной ленте. Он представляет собой набор записей фиксированной длины, длина записи — 28 байтов, ключ занимает первые 20 байтов записи. По ключу из записи последовательного набора данных отыскивается запись в индексно-последовательном наборе данных, после чего в найденной записи первые 8 байтов замещаются информацией из записи последовательного набора данных. Для индексно-последо вательного набора данных используется динамическая буфериза ция.
|
O P E N |
( V V O D , , V I V O D ) |
C IK L |
G E T |
V V O D , K E Y |
|
R E A D |
B L O K , K U , M F = E |
|
C H E C K |
B L O K , D S O R G = IS |
|
L |
5, B L O K + 1 6 |
|
M V C |
0 ( 8 , 5 ) , R E P L A C E |
|
W R I T E |
B L O K , K, M F =» E |
|
C H E C K |
B L O K , D S O R G = IS |
|
В |
C I K L |
|
• > • |
i |
А Д Р Е С З А П И С И
K E Y |
D S |
OF |
D S |
C L 2 0 |
|
R E P L A C E |
D S |
C L 8 |
V V O D |
R E A D |
B L O K , K U , V I V O D , ’ S ’,’ S ’, K E Y , M F = L |
D C B |
D S O R G = P S , M A C R F = ( G M ) , D D N A M E = M A K , |
|
|
|
E O D A D = E N D |
V I V O D |
D C B |
D S O R G = IS , M A C R F = ( R U S , W U ) , |
|
|
D D N A M E = M A P E |
Для входного последовательного набора данных открывается блок управления данными VVOD, а для индексно-последователь ного — VIVOD. Считывание информации из входного набора дан ных выполняется с помощью макрокоманды GET в режиме пере
169
сылки (последовательный метод доступа с очередями). В резуль тате очередная логическая запись помещается в область KEY (дли на 28 байтов). Затем с помощью базисного индексно-последова тельного метода доступа в индексно-последовательном наборе дан ных отыскивается запись по ключу из области KEY. Эта запись модифицируется (модифицируются восемь первых ее байтов), пос ле чего помещается в индексно-последовательный набор. Поиск за писи по ключу и считывание ее осуществляется с помощью макро команды READ, KU в ней обозначает режим обновления. Так как в данном случае используется динамическая буферизация, найден ная запись индексно-последовательного набора данных помещает ся в буфер, адрес которого находится в управляющем блоке BLOK.
Обновленная запись помещается в индексно-последовательный набор данных с помощью макрокоманды WRITE, К в ней обозна чает режим обновления. Вывод осуществляется из того буфера, который указан в предшествующей макрокоманде READ. Для син хронизации операций ввода-вывода с работой программы исполь зуется макрокоманда CHECK.
В данном примере при обновлении применяется макрокоманда READ в описательной форме для построения управляющего блока BLOK, который затем используется макрокомандами READ и WRITE в исполнительной форме. Операнды макрокоманды, со держащиеся в исполнительной их форме, модифицируют управ ляющий блок BLOK. При открытии блока управления данными VIVOD не требуется указания режима обработки в макрокоманде OPEN. Обновление индексно-последовательного набора данных завершается по окончании входного набора данных.
6.10. СТРУКТУРА НАБОРОВ ДАННЫХ С ПРЯМОЙ ОРГАНИЗАЦИЕЙ И МЕТОДЫ РАБОТЫ С НИМИ
Если индексно-последовательные методы доступа опираются на вполне определенную структуру индексно-последовательного набо ра данных, то базисный прямой метод доступа предоставляет про граммисту возможность самому определить структуру набора дан ных. Прямая организация характеризуется наличием определенной связи между некоторым идентификатором блока данных и его ад ресом, обычно идентификатор является ключом блока. Если набор данных хорошо организован, то обеспечивается быстрый доступ к любому блоку набора.
Прямая организация наборов данных может основываться на прямой адресации. Г*1ри использовании прямой адресации известно местоположение каждой записи в наборе данных. Типичным при мером использования прямой адресации является введение относи тельной адресации блоков данных.
Пусть набор данных состоит из записей фиксированной длины. В этом случае на каждой дорожке тома прямого доступа содер жится одинаковое число блоков. Если каждому блоку поставить в
170
соответствие номер этого блока от начала набора, то по этому номеру управляющая программа легко вычислит относительный адрес дорожки и номер блока на этой дорожке. Недостатком такой организации набора данных является то, что место под набор дан ных приходится выделять не по числу блоков в нем, а по диапазо ну номеров, что ведет к значительным потерям памяти, если доста точно большое число номеров не используется. Этот недостаток можно обойти, если использовать таблицу адресов блоков. При за писи блока данных в набор можно получить физический или отно сительный адрес блока и поместить его в таблицу адресов вместе с идентификатором этого блока с тем, чтобы поиск в таблице по идентификатору блока давал ее адрес.
Чем больше набор данных, тем менее эффективна такая орга низация набора данных, ибо таблица адресов становится велика, занимает достаточно большой объем памяти (оперативной или внешней), соответственно увеличивается время поиска в таблице.
Кроме прямой адресации, при прямой организации наборов данных можно использовать косвенную адресацию. В таком слу чае обычно имеем более общий, но зато более сложный способ ор ганизации набора данных. При косвенной адресации адрес каждо го блока набора данных получается как результат некоторых ма тематических преобразований ключа этого блока. Такие преобра зования носят название рандомизации. Косвенная адресация при меняется, когда диапазон изменения ключей блоков данных зна чительно превышает диапазон числа блоков и, следовательно, диапазон изменения адресов блоков. Поэтому возникает необходи мость в алгоритме, с помощью которого можно осуществить отобра жение диапазона ключей блоков на диапазон их адресов.
Избранный способ должен обеспечивать, во-первых, преобра зование любого допустимого ключа в адрес заданного диапазона и, во-вторых, небольшой процент синонимов, т. е. таких блоков, пре образование ключей которых приводит к получению одного и того же адреса. Эффективное средство борьбы с синонимами — отведе ние под набор данных большего объема памяти, чем требуется. Блок, который записывается по адресу, полученному путем преоб разования его ключа в адрес, называется основным. Все другие блоки, при преобразовании ключей которых получается тот же ад рес и которые не могут быть записаны по этому адресу, называют ся блоками переполнения. Число блоков переполнения можно зна чительно снизить, если преобразовывать значение ключа в адрес дорожки, а не в адрес блока.
Если рандомизация ведется до уровня адреса блока, то каж дый синоним порождает блок переполнения. Если же рандомиза ция выполняется до уровня адреса дорожки, то синонимы не по рождают блоков переполнения до тех пор, пока дорожка не будет заполнена. Существуют различные способы рандомизации, напри мер деление с остатком, свертка, переход к другой системе счисле ния и т. д. Выбор определенного способа производится опытным путем.
171
Базисный прямой метод доступа допускает следующие способы идентификации блока данных.
1.Относительный адрес блока (3-байтовое двоичное число). Используется только для записей фиксированного формата. Управ ляющая программа преобразует относительный адрес в физиче ский адрес блока.
2.Относительный адрес дорожки (2-байтовый двоичный номер
дорожки и однобайтовый двоичный номер блока). Относительный адрес дорожки преобразуется управляющей программой в физиче ский адрес блока.
3.Относительный адрес дорожки и ключ. Управляющая про грамма вычисляет физический адрес дорожки и осуществляет по иск блока на этой дорожке по ключу.
4.Физический адрес блока. Использование физических адресоз приводит к тому, что набор данных становится неперемещаемым.
При использовании для идентификации блока данных относи тельного адреса дорожки и ключа можно запросить расширенный поиск (задание полей DCBOPTCD и DCBL1MCT блока управле ния данными), который состоит в том, что поиск блока по ключу ограничивается просмотром не одной дорожки, а некоторого коли чества дорожек или блоков, заданного программистом в блоке уп равления данными. Расширенный поиск можно использовать также при добавлении блоков для поиска свободного места в наборе дан ных.
Базисный прямой метод доступа позволяет во время чтения или записи блока данных получать в определенной области, указанной в соответствующей макрокоманде, адрес этого блока данных в форме, определенной в поле DCBOPTCD блока управления дан ными.
Если несколько подзадач выполняют одновременно обновление некоторого блока данных одного и того же набора данных, ссыла ясь при этом на один блок управления данными, то базисный пря мой метод доступа дает возможность подзадаче, первой выдавшей макрокоманду READ, предотвратить обновление этого блока дру гими подзадачами (если в макрокоманде READ указан соответст вующий операнд). Остальные подзадачи начнут работу с этим бло ком данных только после выполнения в данной подзадаче макро команды WRITE или RELEX.
Набор данных с прямой организацией создается с помощью
специального |
режима |
базисного |
последовательного |
метода досту |
п а -р еж и м а |
создания |
набора |
данных с прямой |
организацией. |
Последовательная обработка набора данных с прямой организаци ей может выполняться с помощью базисного последовательного метода доступа, а выборочная обработка — с помощью базисного прямого метода доступа.
Рассмотрим два примера, иллюстрирующие создание и обра ботку набора данных с прямой организацией. В первом примере создается набор данных с прямой организацией. Создание набора данных выполняется на базе последовательного набора данных,
172