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

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

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

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

Добавлен: 17.10.2024

Просмотров: 89

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Режим данных используется только для сегментированных за­ писей. Он подобен режиму пересылки. Отличие состоит в том, что в рабочей области содержится вся логическая запись, но без ука­ зателя ее длины. Длина передается через поле DCBLRECL блока управления данными.

Базисный последовательный метод доступа обеспечивает боль­ шую гибкость при работе с последовательным набором данных, но налагает на программиста больше обязанностей по программиро­ ванию ввода-вывода. Этот метод доступа предусматривает обмен с программой пользователя физическими записями. При его ис­ пользовании программист должен заниматься управлением буфе­ рами, объединением логических записей в блоки или выделением их из блоков, сегментированием логических записей, добиваться совмещения обработки записей с их вводом или выводом, следить за завершением операций ввода-вывода. Макрокоманды READ и ■WRITE только инициируют операции ввода-вывода. Для осущест­ вления контроля за завершением этих операций обычно использу­ ется макрокоманда CHECK.

Чтобы

добиться совмещения обработки

записей

с их вводом,

нужно иметь возможность выдавать подряд

несколько

макро­

команд READ, не ожидая завершения операций ввода, инициируе­

мых ими.

Для этого программист должен

использовать операнд

NCP макрокоманды DCB или параметр NCP оператора DD. Этот

параметр

определяет число макрокоманд

READ,

которые

можно выдать без промежуточных макрокоманд

CHECK. При

этом необходимо также следить за соотношением параметра NCP

и числа буферов.

 

 

 

 

Гибкость базисного последовательного метода доступа ощути­ ма при работе с наборами данных на магнитной ленте и томах прямого доступа. С помощью макрокоманды NOTE программист может получить относительный адрес любого блока данных и за­ тем, используя макрокоманду POINT, вернуться к обработке этого блока в любой момент времени в пределах одного тома. Один и тот же набор данных может использоваться для считывания дан­ ных и для записи без промежуточных процедур закрытия и откры­ тия блока управления данными. Кроме того, макрокоманды CNTRL и BSP позволяют непосредственно управлять внешними устройствами, минуя операции чтения и записи.

Рассмотрим пример использования базисного последовательно­ го метода доступа для построения последовательного набора дан­ ных из 800 записей. Набор содержит записи фиксированной дли­ ны, длина каждой записи 120 байтов.

Описание набора данных содержится в макрокоманде DCB. Если во время создания набора данных обнаруживается постоян­ ная ошибка вывода, управление получает подпрограмма ANAL, которая выдает макрокоманду ABEND для прекращения выпол­ нения программы. При этом выдается дамп памяти. Формирова­ ние набора данных осуществляется с помощью макрокоманды WRITE, которая ссылается на имя блока управления данными,

159


логически связанного с формируемым набором, и содержит адрес буфера, в котором находятся данные. Следующая за ней макро­ команда CHECK используется для контроля за завершением опе­ рации вывода. После того как набор данных записан на носитель информации, блок управления данными OUTDCB закрывается.

 

O P E N

 

L A

C I K L

W R I T E

 

C H E C K

 

B C T

 

C L O S E

A H A L

M V I '

 

В

D A M P

S R

 

IC

 

A B E N D

I N D

D C

B U F

D C

O U T D C B

D C B

( O U T D C B , ( O U T P U T ) ) 5,800

B L O K , S F , O U T D C B , B U F

B L O K 5, C I K L

( O U T D C B )

I N D , X ’l l ’

D A M P

L 1

I, I N D

( 1 ) , D U M P

X ’00'

2 0 С Д А Н Н Ы Е ’

D S O R G = P S , M A C R F = W ,

B L K S I Z E = 120, R E C F M = 1F, S Y N A D = A H A L

6.7. С Т Р У К Т У Р А Б И Б Л И О Т Е Ч Н О Г О Н А Б О Р А Д А Н Н Ы Х

Набор данных с библиотечной организацией (или просто биб­ лиотека) состоит из последовательно организованных разделов, каждый из которых имеет свое имя. Кроме того, библиотека содер­ жит оглавление, которое размещается в начале набора данных.

Оглавление библиотеки имеет последовательную структуру. Оно представляет собой совокупность блоков с ключами. Длина ключа 8 байтов, длина поля данных 256 байтов. Оглавление соз­ дается в момент выделения внешней памяти под библиотеку. Ме­ сто под оглавление запрашивается в параметре SPACE оператора DD, описывающего библиотеку, причем запрос делается путем указания числа блоков оглавления.

Каждый блок оглавления содержит один или несколько эле­ ментов разделов библиотеки. Максимальный размер элемента оглавления 74 байта, минимальный— 12 байтов. Элемент каждого раздела библиотеки включает его имя и относительный адрес внутри библиотеки. Элемент раздела библиотеки может также со­ держать относительные адреса некоторых внутренних точек разде­ ла. Таким образом, через оглавление можно найти адрес любого раздела библиотеки и даже некоторой точки внутри определенно­ го раздела, с которой можно начать обработку раздела.

Элементы оглавления упорядочены в алфавитном порядке. Ключ каждого блока оглавления есть имя раздела из последнего элемента этого блока. Ключ последнего использованного блока оглавления равен FF.

160



Библиотека представляет собой перемещаемый набор данных, так как оглавление содержит относительные адреса ее внутренних точек.

Структура библиотечного набора данных показана на рис. 27.

А дре с

Адрес

Адрес

Адрес

Неиспользованная

Оглавление

раздела

раздела

раздела

раздела

память

библиотеки

А

в

С

V

 

 

Раздел 8

 

 

 

 

 

Неиспользованная памят ь

 

Раздел А

 

 

 

Разделы

библиотеки

Раздел С

 

Раздел V

Неиспользованная

памят ь

 

Рис. 27. Структура библиотечного набора данных

6.8. МЕТОДЫ РАБОТЫ С БИБЛИОТЕКАМИ

Удобство работы с библиотекой состоит в том, что, открыв для нее блок управления данными, можно считать один или несколь­ ко разделов библиотеки или всю библиотеку, добавить или заме­ нить в ней один или несколько разделов.

Так как каждый раздел библиотеки имеет последовательную организацию, он может обрабатываться, как всякий последова­ тельный набор данных. При этом можно использовать как после­ довательный метод доступа с очередями, так и базисный последо­ вательный метод доступа.

В блоке управления данными при этом указывается последо­ вательная организация набора, а в параметре DSNAME оператора DD кроме имени библиотеки в скобках указывается имя раздела. Тогда, используя последовательный метод доступа, можно считать указанный раздел библиотеки или записать его в библиотеку. Если таким же образом требуется обработать несколько разделов библиотеки, то для каждого раздела необходимо задать свой опе­ ратор DD и в программе выполнить процедуры открытия и закры­ тия соответствующего блока управления данными. Это не очень удобно. Но при работе с несколькими разделами можно также пользоваться одним оператором DD, если в блоке управления данными задать библиотечную организацию и использовать мак­ рокоманды, специально введенные для работы с оглавлением.

Тогда после записи каждого раздела библиотеки требуется выдать макрокоманду STOW для внесения в оглавление нового элемента. Перед считыванием разделов библиотеки можно либо выдавать макрокоманду FIND для отыскания в оглавлении биб­ лиотеки адреса раздела по его имени, либо вначале выдать макрокоманду BLDL для заполнения таблицы адресов всех раз­ делов библиотеки, которые будут считываться, а перед считыва­ нием разделов выдавать макрокоманду FIND для настройки бло-

И. Заказ 3414.

1.61


ка управления данными по адресу раздела из этой таблицы. Пре­ имущество последнего способа состоит в экономии времени вы­ полнения.

Обновление раздела библиотеки на месте можно выполнять только в том случае, когда не производится изменение длин запи­ сей, не добавляются новые записи и ни одна из записей не удаля­ ется из раздела. В противном случае обновление раздела библио­ теки сводится к его перезаписи на новое место. Если для этого недостаточно места, можно воспользоваться для реорганизации библиотеки утилитами IEBCOPY или IEBUPDTE. Если переза­ пись раздела удалось произвести, то место, которое было ранее занято этим разделом, нельзя использовать для размещения новых разделов библиотеки до тех пор, пока она не будет реорганизо­ вана.

Библиотека может размещаться только на одном томе прямого доступа.

Операционная система имеет большой набор утилит для вы­ полнения различных манипуляций с библиотечными наборами данных:

для создания и реорганизации библиотек могут использоваться утилиты IEBUPDTE, IEBGENER, IEHMOVE, IEBCOPY;

для распечатки разделов библиотеки или библиотек может ис­ пользоваться утилита IEBPTPCH;

для распечатки оглавления библиотеки может использоваться утилита IEHLIST;

для переименования разделов библиотек или библиотек, а так­ же удаления разделов или библиотек может использоваться ути­ лита IEHPROGM.

Рассмотрим два примера работы с библиотечными наборами данных. Первый пример иллюстрирует считывание раздела биб­ лиотеки с помощью последовательного метода доступа с очередя­ ми. В операторе DD указывается имя библиотеки BIBLIO и имя раздела МЕМВ1. В программе для чтения этого раздела библио­ теки открывается блок управления данными INDCB, после чего чтение записей раздела МЕМВ1 осуществляется с помощью мак­ рокоманды GET в режиме пересылки. Считанная запись поме­ щается в область AREA. Далее следуют обработка записи и счи­ тывание следующей записи. По окончании входного набора дан­ ных управление передается по метке END, где выполняется закры­ тие блока управления данными INDCB.

/ / C H O P

D D

. . . , D S N = B I B L I O ( M E M B l ) , D I S P = O L D

 

O P E N

( I N D C B )

CIKL'

G E T

I N D C B , A R E A

 

В ‘

C IK L

E N D

C L O S E

( I N D C B )

I N D C B

D C B *

D S O R G = P S , M A C R F = ( G M ) , D D N A M E = C H O P ,

 

 

E O D A D = E N D

162