ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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