Макро ввода-вывода операционной системы OS - Макрокоманды OPEN и CLOSE

Началу непосредственной обработки данных любого набора должно предшествовать его открытие. Для этой цели используется макрокоманда OPEN, выполнение которой означает подготовку к обработке данных набора, включая подготовку самой обрабатывающей программы, операционной системы и периферийного устройства. Макро OPEN имеет два обязательных параметра, в качестве одного из которых выступает имя DCB, соответствующего данному набору. С помощью другого параметра задается вид требуемой обработки. Итак, макро OPEN в простейшем виде выглядит как

OPEN dcbимя, вид

Наиболее часто встречающимися видами обработки являются следующие:

INPUT: набор данных используется только для ввода. Это значение параметру присваивается по умолчанию.

OUTPUT: набор данных используется только для вывода.

UPDAT: набор данных обновляется. За вводом некоторой записи набора в память следует ее обработка, и преобразованная запись по команде вывода помещается на свое прежнее место.

Итак, для того чтобы открыть набор, выводимый на печать, DCB которого имеет имя PRNTFILE, следует написать

OPEN PRNTFILE,OUTPUT

Для того чтобы открыть набор данных, предназначенный для ввода, следует написать

OPEN CARDDCB, INPUT

или

OPEN CARDDCB

так как значение INPUT параметру, определяющему вид обработки, присваивается по умолчанию.

С помощью макрокоманды OPEN можно одновременно открыть несколько наборов. Для этого множество пар соответствующих каждому набору операндов следует заключить в круглые скобки. Рассмотренные выше два набора данных могут быть открыты с помощью макрокоманд

OPEN (CARDDCB, INPUT, PRNTFILE,

OUTPUT)

или

OPEN (CARDDCB„PRNTFILE,OUTPUT)

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

Выполнение макрокоманды OPEN состоит в следующем. Сначала системой производится сбор необходимой информации из DCB, заданного программой, DD-предложения, соответствующего этому набору данных, и Блока управления набором данных. Если сведения, полученные из этих трех различных источников, заданы в надлежащей форме и согласуются между собой, формируется Блок управления данными. В память загружаются подпрограммы требующегося метода доступа, если они уже не находятся в памяти, и выделяются буферы ввода-вывода. Наконец, производится подготовка периферийного устройства к выполнению необходимых операций. Если открывается последовательный набор, предназначенный для ввода, то несколько его первых блоков сразу помещаются в буфер. Если открывается последовательный набор данных, предназначенный для вывода, то производится подготовка периферийного устройства к выводу первого блока набора.

После того как набор данных открыт, можно пользоваться для выполнения операций ввода-вывода макрокомандами GET, PUT, READ и WRITE. По окончании обработки файла необходимо сообщить об этом системе с помощью макро CLOSE. Так же как и OPEN, CLOSE имеет по два параметра, соответствующих каждому закрываемому набору:

CLOSE dcbимя, вид

Параметр «вид» макрокоманды CLOSE может иметь одно из трех значений: REREAD, что означает требование перевода устройства в состояние, необходимое для повторного ввода набора, LEAVE, что соответствует отсутствию каких-либо действий, и DISP. DISP говорит о необходимости использовать значение параметра DISP DD-предложения. DISP считается значением параметра «вид» по умолчанию.

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



 
Статьи раздела