Файл: Система математического обеспечения ЕС ЭВМ..pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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