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

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

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

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

Добавлен: 17.10.2024

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

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

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

метками на магнитной ленте и наборы данных на томах прямого доступа) при обработке уже существующего набора. Информация из оператора DD хранится операционной системой в блоке управ­ ления файлом, который размещается во внешней памяти на томе прямого доступа.

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

В операторе DD можно задать следующие операнды макро­ команды DCB: BFALN, BFTEK, BLKSIZE, BUFL, BUFNO, CODE, CYLOFL, DEN, DSORG, EROPT, KEYLEN, LIMCT, LRECL, MODE, NCP, NTM, OPTCD, PRTSP, RECFM, RKP, STACK.

В метках наборов данных могут содержаться следующие пара­ метры оператора DD:

магнитная лента — RECFM, BLKSIZE, LRECL, BFALN;

тома прямого доступа — RECFM, OPTCD, KEYLEN, DSORG, BLKSIZE, LRECL, RKP, BFALN.

Таким образом, при формировании блока управления данными наивысший приоритет имеет информация из макрокоманды DCB,

следующей по приоритету является информация из

оператора

DD, и самый меньший приоритет имеет информация

из меток

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

Наибольший эффект указанного алгоритма формирования бло­ ка управления данными можно получить при минимальном зада­ нии операндов в макрокоманде DCB.

Связь между оператором DD и блоком управления данными устанавливается с помощью имени оператора DD. Оно указывает­ ся либо в макрокоманде DCB, либо помещается программистом в блок управления данными перед выполнением процедуры OPEN.

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

14?


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

Следующий пример иллюстрирует построение такого списка параметров:

Н А К О Р *

D C B

. . , , E X L S T = L I S T

L I S T

D C

Х '0 2 ’

 

 

D C A L 3 ( B E G I N )

 

D C X ’0 5 ’

К о д п р о гр а м м ы м о д и ф и к а ц и и

 

D C A L 3 ( M O D ) А д р е с эт о й п р о гр а м м ы

 

D C

Х ’8 4 ’

 

 

D C

A L 3 ( E N D )

Программисту

предоставляется возможность модифицировать

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

Рассмотрим пример. Имеется программа, которая пользуется базисным последовательным методом доступа и буферы заводит внутри себя с помощью команды DS. Пользователь программы этого не знает, поэтому он в операторе DD определяет число буфе­ ров, равное 3, для большей совместимости работы ввода-вывода и процессора. Это приводит к тому, что управляющая программа выделит память под эти три буфера, но использоваться они не смогут. При выделении памяти под эти буферы может произойти аварийное завершение программы из-за недостатка памяти. Что­ бы предотвратить такие случаи, в программу достаточно ввести подпрограмму модификации блока управления данными, которая всегда устанавливает количество буферов в нуль. Отдельные поля блока управления данными можно модифицировать после завер­ шения процедуры его открытия.

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

Помимо окончательного формирования блока управления дан­ ными процедура OPEN выполняет ряд важных функций. Она контролирует правильность установки тома и поиск набора данных

150



на магнитных лентах и томах прямого доступа; формирует и запи­ сывает на магнитную ленту стандартные и нестандартные метки наборов данных; строит ряд управляющих блоков, которые в даль­ нейшем используются управляющей программой для управления операциями ввода-вывода; формирует программы канала, буфер­ ные пулы (при запросах на автоматическое их построение); ини­ циирует первое заполнение буферов для методов доступа с очере­ дями; загружает в область памяти, отведенную задаче, программы методов доступа, которые будут использоваться при работе с набо­ ром данных. По завершении своих функций процедура OPEN устанавливает в блоке управления данными признак успешного завершения (разряд 3 в поле DCBOFLGS). Для упрощения от­ ладки программ рекомендуется выполнять контроль этого призна­ ка после выдачи макрокоманды OPEN.

Все последующие макрокоманды ввода-вывода в программе, относящиеся к набору данных, для которого был открыт блок уп­ равления данными, ссылаются на этот блок управления данными.

Во время выполнения операций ввода-вывода могут возникать ошибки ввода-вывода. Управляющая программа ОС ЕС анализи­ рует эти ошибки и, если имеется возможность их коррекции, пред­ принимает необходимые действия, обычно путем повторения опе­ раций ввода-вывода. Если коррекция не удается, ошибка иденти­ фицируется как постоянная ошибка ввода-вывода. При такой ошибке управляющая программа выполняет действия, которые по-разному управляются программистом в зависимости от исполь­ зуемого метода доступа. Независимо от используемого метода до­ ступа программист может предусмотреть в своей программе при обнаружении управляющей программой постоянных ошибок вво­ да-вывода выход на некоторую подпрограмму для анализа этой ошибки. Адрес такой подпрограммы задается в операнде SYNAD макрокоманды DCB или непосредственно помещается в блок уп­ равления данными. Управляющая программа предоставляет в рас­ поряжение программиста для анализа ошибки специальную мак­ рокоманду SYNADAF, результат анализа может быть сообщен в виде распечатки.

Если во время обработки многотомного последовательного на­ бора данных управляющая программа обнаруживает конец тома, она автоматически переключает тома. При этом предполагается, что набор данных корректно описан в операторе DD, т. е. либо за­ дан регистрационный номер следующего тома, либо заданное чис­ ло томов превышает порядковый номер обработанного тома. Уп­ равляющая программа ОС ЕС предоставляет в распоряжение программиста макрокоманду FFOV, с помощью которой можно имитировать ситуацию конца тома в любом месте тома и, если это требуется, осуществить переключение томов.

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

151


ски передает управление по адресу, указанному в поле DCBEODAD блока управления данными. Адрес может быть поме­ щен в блок управления данными с помощью операнда EODAD макрокоманды DCB или непосредственно засылкой.

Например:

C 1K L

E N D

I N D C B

A R E A

O P E N

( I N D C B )

G E T

I N D C B , A R E A

В '

C I K L

C L O S E

( 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 = H A K O P ,

D S

E O D A D = E N D

C L 8 0

В этом примере предусмотрено открытие блока управления данными INDCB, считывание набора данных, описанного в операн­ де DD с именем НАКОР и логически связанного с блоком управ­ ления данными INDCB. Каждая логическая запись набора данных пересылается в область AREA и там обрабатывается, после чего запрашивается следующая запись и т. д. Цикл замкнут, выход из него осуществляется управляющей программой по окончании входного набора данных, при этом управление передается по мет­ ке END.

После завершения обработки набора данных программист вы­ полняет процедуру закрытия блока управления данными с помо­ щью макрокоманды CLOSE. При закрытии блок управления дан­

ными принимает тот

же вид,

который он имел

до

открытия,

т. е. разрушается его логическая связь с определенным

набором

данных. После закрытия он может использоваться

для

обслужи­

вания другого набора

данных.

 

 

 

Во время выполнения процедуры закрытия блока управления

данными, кроме восстановления

его состояния, осуществляются

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

Если программист не выдает в своей программе макрокоман­ ды CLOSE, она автоматически выдается управляющей програм­ мой по завершении шага задания.

Имеется специальный вариант закрытия блока управления данными, который выполняется только в том случае, когда в мак­ рокоманде указан операнд TYPE = T. Этот вариант может быть за­ прошен только при использовании базисного последовательного метода доступа. В этом варианте процедура закрытия блока уп­ равления данными используется лишь для подвода начала перво­ го или конца последнего блока набора данных на магнитной ленте

152