Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Система математического обеспечения ЕС ЭВМ

..pdf
Скачиваний:
24
Добавлен:
22.10.2023
Размер:
10.92 Mб
Скачать

Оператор конца процедуры PEND должен быть последним оператором процедуры во входном потоке. Он имеет следующий формат:

//и м я P E N D к о м м е н т а р и и

Имя и комментарии в операторе могут отсутствовать.

3.6. ПРОЦЕДУРЫ

 

 

 

Процедура может содержать

один

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

ЕХЕС, за которыми следуют необходимые операторы DD. Проце­

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

операторов

JOBLIB DD, операторов DD с параметрами DATA или *, операто­

ров ЕХЕС, вызывающих другие

процедуры, ограничительных и

пустых операторов. Процедура может

находиться

в библиотеке

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

Чтобы вызвать каталогизированную процедуру, необходимо в операторе ЕХЕС указать имя процедуры, под которым она запи­ сана в библиотеке процедур. Если процедура имеет оператор PROC в качестве первого оператора, то его имя не рассматри­ вается как имя процёдуры и может вообще отсутствовать. Запись новых и модификация существующих процедур в библиотеке осу­ ществляется утилитой IEBUPDTE.

Процедуры во входном потоке следует помещать перед первым оператором ЕХЕС. Каждая процедура должна начинаться опера­ тором PROC и заканчиваться оператором PEND. Допускается до 15 процедур в каждом задании. Оператор PROC обязательно дол­ жен иметь имя, которое является именем процедуры во входном потоке. Вызов процедуры осуществляется путем указания этого имени в операторе ЕХЕС.

При вызове процедуры необходимо присвоить значения пара­ метрам процедуры. Парахметрам, имеющим стандартные значения, присвоенные в процедуре, можно не присваивать новые значения при вызове процедуры.

При вызове процедуры можно изменить или добавить пара­ метры операторов ЕХЕС процедуры. Для этого в операторе вызо­ ва процедуры необходимо кодировать:

п а р а м е т р , и м я п у н к т а п р о ц е д у р ы = зн ач ен и е

Пусть процедура Р содержит следующие операторы ЕХЕС:

/ / S T l

Е Х Е С

P G M = A , P A R M = 7 7 7

/ / S T 2

Е Х Е С

P G M = B , C O N D = (12, L E )

При вызове процедуры необходимо значение параметра PARM опустить, добавить к оператору ST1 параметр COND=(12, EQ) и заменить в операторе ST2 параметр COND на COND=(12, EQ).

91

Для этого необходимо кодировать следующее обращение к проце­ дуре:

/ / Р Р

E X E C

Р , P A R M . ST 1 = , C O N D . S T I = (12, E Q ),

II

 

C O N D . S T 2 = (12, E Q )

После подстановки параметров получим:

/ / S T I

E X E C

P G M = A ,

C O N D = (12, E Q )

/ / S T 2

E X E C

P G M = B ,

C O N D - (12, E Q )

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

// и м я п ун к т а п р о ц е д у р ы , и м я dd D D п а р а м е т р = зн ач еи и е

Пусть процедура Р содержит следующие операторы:

/ / T l

E X E C

P G M = A

/ / M i

D D

D S N = K A T , D I S P = ( O L D , K E E P ) ,

II

 

D C B = ( B L K S I Z E = 160, R E C F M = F ) , V O L = S E R = i l i

При вызове процедуры необходимо заменить имя набора дан­ ных на CAT, добавить указание устройства 5050 и убрать указание серийного номера тома. Для этого необходимо кодировать следую­ щие операторы:

 

/ / Р Р

E X E C

Р

 

//Т 1 .М 1

D D

D S N = C A T , U N I T = 5050, V O L =

После подстановки параметров получим:

/ / T l

E X E C

P G M = A

/ / M l

D D

D S N = C A T , D i S P = (O L D , K E E P ) ,

II

 

D C B =

( B L K S I Z E = 160, R E C F M = F ) , U N I T = 5050

Если в операторе DD необходимо изменить только один под­ параметр DCB, то не следует кодировать все подпараметры. На­ пример, если в предыдущем примере размер блока нужно изме­ нить на 320, следует кодировать:

IIР Р

E X E C

Р

//Т 1 .М 1

D D

D C B = ( B L K S I Z E = 320)

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

// и м я п ун к т а п р о ц е д у р ы , и м я dd D D . . .

Пусть к процедуре Р из предыдущего примера надо добавить оператор DD с именем ММ. Для этого необходимо кодировать следующие операторы:

/ / Р Р

E X E C

Р

/ / T l . M M

D D

S Y S O U T = A

Имя добавляемого оператора DD должно отличаться от имен ' операторов DD пункта процедуры.

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

92

3.7. ОПЕРАТОРЫ КОМАНД, КОММЕНТАРИЙ, ОГРАНИЧИТЕЛЬНЫЕ И ПУСТЫЕ ОПЕРАТОРЫ

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

II к о м а н д а о п е р а н д ы к ом м е н т ар и и

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

II* к ом м ен т ар и и

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

/* к о м м е н т а р и и

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

3.8. ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ ОПЕРАТОРОВ ЯЗЫКА УПРАВЛЕНИЯ ЗАДАНИЯМИ

Пусть некоторый набор данных создается программой А, моди­

фицируется программой В и используется

программой С. После

этого он не нужен. Все три программы выполняются

последова­

тельно, как пункты одного задания.

Класс

задания

В, приори­

тет— 7. Объем памяти, необходимый

для

выполнения

задания,

составляет 50К. Имя задания ВТ. Набор данных размещается на

диске 5050.

Первичное

количество памяти

25 дорожек, вторич­

ное— 5. Так

как набор

данных существует

только в пределах

одного задания, он является временным. Программа А использует входной набор данных, находящийся во входном потоке. Програм­ ма С вырабатывает выходной набор данных на устройство систем­

93

ного вывода (класс А). Задание может выглядеть следующим образом:

/ / В Т

J O B

/ / S T I

E X E C

/ / D D N 1

D D

II

D D

/ / I N P U T

в х о д н о й н а б о р д а н н ы х

C L A S S = B , P R T Y = 7 , R E G I O N - 5 0 K 1 P G M = A

U N I T = 5 0 5 0 , D I S P = ( N E W , P A S S ) , S P A C E = ( T R K , (25, 5 ) )

*

I*

/ / S T 2

E X E C

P G M = B

/ / D D N 2

D D

D S N = * . S T 1 . D D N 1 , D I S P = ( M O D , P A S S )

/ / S T 3

E X E C

P G M = C

/ / D D N 3

D D

D S N = * . S T 1 . D D N 1 , D I S P = ( O L D , D E L E T E )

/ / O U T P U T ' D D

S Y S O U T = A

Так как набор данных является временным, имя ему можно не присваивать.

Если тот же набор данных используется в различных заданиях, то он не может быть временным. Пусть его имя будет BETA и он располагается на томе 222222 устройства 5050. Необходимо выпол­ нить те же самые программы, но в различных заданиях. Набор данных BETA сохранить. Предусмотреть автоматический рестарт пункта задания для программ А и С.

Задание, создающее набор данных BETA:

/ / B T l

J O B

C L A S S = B , P R T Y = 7, R E G I O N = 5 0 К

/ / S T I

E X E C

P G M = A , R D = R

/ / D D N l

D D

D S N = B E T A , D I S P = ( N E W , K E E P , D E L E T E ) ,

/ /

U N I T =

5050, V O L = S E R = 222222,

If

S P A C E = ( T R K , (2 5 ,5 ))

/ / I N P U T

D D

*

в х о д н о й н а б о р д а н н ы х

!*

Задание, модифицирующее набор данных BETA:

// В Т 2

J O B

C L A S S = B , P R T Y = 7 , R E G I O N = 50K!

/ / S T 2

E X E C

P G M = B

/ / D D N 2

D D

D S N = B E T A , U N I T = 5 0 5 0 ,

/ /

V O L = S E R = 222222, D I S P = ( M O D , K E E P )

Задание, использующее набор данных BETA:

// В Т 2

J O B

C L A S S = B , P R T Y = 7 , R E G I O N = 50K

/ / S T 3

E X E C

P G M = C , R D = R

/ / D D N 3

D D

D S N = B E T A , U N I T = 5 0 5 0 ,

/ /

V O L = S E R = 2 2 2 2 2 2 , D I S P = ( O L D , D E L E T E , K E E P )

/ / O U T P U T D D

S Y S O U T = A

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

Задание, создающее набор данных BETA:

// В Т 1

// STJ IID D N 1

//

//

/ / I N P U T

J O B

C L A S S = B , P R T Y = 7 , R E G I O N = 5 0 K

E X E C

P G M = A , R D = R

D D

D S N = B E T A , D I S P = ( N E W , C A T L G , D E L E T E ) ,

U N I T = 5 0 5 0 , V O L = S E R = 2 2 2 2 2 2 ,

S P A C E = ( T R K , (2 5 ,5 ))

D D

*

в х о д н о й н а б о р д а н н ы х

I *

Задание, модифицирующее набор данных BETA*

// В Т 2

J O B

C L A S S = B , P R T Y = 7 , R E G I O N = 50K

//S T 2

E X E C

P G M = B

/ / D D N 2

D D

D S N = B E T A , D I S P = ( M O D , C A T L G )

Задание, использующее набор данных BETA:

// В Т З

J O B

C L A S S = B , P R T Y = 7 , R E G I O N = 5 0 K

/ / S T 3

E X E C

P G M = C , R D = R

/ / D D N 3

D D

D S N = B E T A , D I S P = (O L D , D E L E T E )

/ / O U T P U T D D

S Y S O U T = A

4. СУПЕРВИЗОР

4.1. ОБЩИЕ СВЕДЕНИЯ

Супервизор входит в состав управляющей программы. Он пред­ ставляет собой набор программ, выполняемых в ответ на запросы, поступающие из различных источников. Запросы реализуются через систему прерываний. Источниками запросов могут быть как аппаратные средства (завершение операции ввода-вывода, истече­ ние заданного интервала времени, внешние события, сбои в аппа­ ратуре и т. д.), так и программы. Запросы из программ представ­ ляют собой запланированные обращения к супервизору (напри­ мер, запрос на инициирование операции ввода-вывода), а также незапланированные действия программ (например, нарушение защиты памяти, переполнение и т. д.). Обслуживая запросы, су­ первизор выполняет управляющие действия, связанные с обеспе­ чением загруженности центрального процессора и координацией использования других ресурсов вычислительной системы.

Большинство программ супервизора является составной ча­ стью управления задачами. Супервизор ввода-вывода входит в состав управления данными. Многие программы супервизора включены в ядро операционной системы и постоянно находятся в оперативной памяти. Некоторые программы супервизора являются транзитными и загружаются в память по мере надобности. Про­ граммы супервизора выполняются в состоянии «супервизор», что позволяет им выполнять привилегированные команды.

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

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

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

96

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

регистр 1,Т

предусматривает, что «регистр 1» при написании макрокоманды необходимо заменить на конкретное значение, а сочетание «,Т» непосредственно употребить в макрокоманде. После замены ука­ занная выше запись может выглядеть следующим образом:

2,Т

где 2 является значением переменной «регистр 1».

2. Фигурные скобки { }, содержащие несколько расположен­ ных столбиком операндов, обозначают, что нужно сделать выбор одного из них. Например, обозначение

UJ

говорит о том, что необходимо употребить либо А, либо В.

3. Квадратные скобки [ ], содержащие один или несколько расположенных столбиком операндов, указывают на то, что нужно сделать выбор одного из них либо опустить запись. Например, обозначение

Ш

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

4. Многоточие «...» обозначает, что операнд, предшествующий многоточию, может быть повторен подряд несколько раз. Напри­ мер, обозначение

[ ц и ф р а ], . . .

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

ц и ф р а ,

. . .

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

4,2. СОГЛАШЕНИЯ О СВЯЗЯХ

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

7. Заказ 3414,

. 973

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

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

Соглашения о связях затрагивают сохранение и восстановление содержимого регистров, использование регистров связи при пере­ дачах управления, способы передачи и возврата управления.

При обсуждении соглашений всегда рассматривается пара, состоящая из вызываемой и вызывающей программ. Эти соглаше­ ния относятся ко всем вызываемым и вызывающим программам в системе. Каждая программа, которая получает управление при выполнении пункта задания от другой программы, первоначально является вызываемой программой. Во время выполнения этой про­ граммы может потребоваться работа какой-либо другой програм­ мы и первая программа становится вызывающей.

4.3. РЕГИСТРЫ СВЯЗИ

Регистры общего назначения 0, 1, 13, 14 и 15 называются реги­ страми связи и используются: управляющей программой. Рекомен­ дуется использовать их и при передаче управления от одной про­ граммы пользователя к другой независимо от того, осуществляется эта передача посредством управляющей программы или нет. Со­ держимое регистров связи может изменяться управляющей про­ граммой при выполнении передач управления и при использовании системных макрокоманд. Управляющая программа не изменяет содержимое регистров 2—12.

Регистры 0 и 1 используются для передачи параметров управ­ ляющей или вызываемой программе. В системных макрокомандах значения параметров засылаются в регистр 0 или 1 или оба реги­ стра. После этого производится обращение к программе суперви­ зора, использующей эти параметры. Эти действия выполняются в макрорасширении системной макрокоманды. Сама программа супервизора в макрорасширение не входит.

При передаче параметров от одной программы к другой число параметров может быть произвольным. В этом случае в регистр 1 записывается адрес списка параметров (рис. 18). Список парамет­ ров содержит одно слово на каждый параметр, выравненное по границе полного слова. Каждое слово содержит начальный адрес значения соответствующего параметра. Последнее слово в списке параметров отмечается «1» в старшем бите. Таким образом управ­ ляющая программа передает программе пункта задания информа-

98

дню из поля PARM оператора

 

ЕХЕС.

В этом

случае список

 

параметров

состоит из одного

 

слова, так

как

считается, что

 

передается один параметр.

 

Регистр

13 содержит

адрес

 

области сохранения для про­

 

граммы,

которой

передается

 

управление. Управляющая про­

 

грамма

может

использовать

 

эту область

при обработке за­

 

просов, сделанных с помощью

 

системных макрокоманд. Про­

 

грамма,

которой

передается

 

управление, может использо­

 

вать эту область сохранения с

 

помощью макрокоманды SAVE.

 

Регистр 14 при передаче уп­

 

равления вызываемой програм­

 

ме содержит либо

адрес

воз­

 

врата к вызывающей програм­

 

ме, либо адрес возврата

к уп­

Р и с . 18. П е р е д а ч а п а р а м е т р о в

равляющей

программе,

куда

 

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

Регистр 15 может быть использован различным образом. При передаче управления из управляющей программы в нем находится адрес точки входа. При передаче управления любой другой про­ грамме необходимо адрес точки входа загрузить в регистр 15. В макрорасширениях системных макрокоманд в регистр 15 засы­ лается адрес списка параметров для управляющей программы. При возврате управления из вызываемой программы регистр 15 может содержать код возврата.

4.4. СОХРАНЕНИЕ РЕГИСТРОВ

Первым действием каждой программы должно быть сохране­ ние содержимого общих регистров, которые изменяются в процес­ се выполнения программы. Регистры 0, 1, 13, 14, 15 необходимо сохранять в любом случае, так как их содержимое, а также при­ знак результата изменяются при использовании системных мак­ рокоманд супервизора и управления данными.

Общие регистры запоминаются в области сохранения разме­ ром 18 слов, которая должна выделяться вызывающей програм-

7*

99

А д р е с С о д е р ж и м о е

0

— 3

И с п о л ь з у е т с я п р о г р а м м а м и , н ап и сан н ы м и на П Л /1

4 — 7

А д р е с п р е д ы д у щ е й о б л а с т и с о х р а н е н и я

8 — 11

( з а п о м и н а е т с я в ы зы в а ю щ ей п р о гр а м м о й )

А д р е с с л е д у ю щ е й о б л а с т и с о х р а н е н и я

12 — 15

( з а п о м и н а е т с я т е к у щ е й п р о гр а м м о й )

Р е ги с т р 14 ( а д р е с в о зв р а т а )

1 6 — 19

Р е г и с т р

15

( а д р е с точки в х о д а )

2 0 — 2 3

Р е ги с т р 0

 

2 4 - 2 7

Р е ги с т р 1

 

2 8 — 31

Р е ги с т р 2

 

3 2 — 3 5

Р еги ст р

3

 

3 6 — 3 9

Р е ги с т р

4

 

4 0 — 4 3

Р е ги с т р 5

 

4 4 — 4 7

Р е ги с т р 6

 

4 8 — 51

Р е ги с т р

7

 

5 2 — 5 5

Р е ги с т р

8

 

5 6 — 59

Р е ги с т р

9

 

6 0 - 6 3

Р еги ст р

10

 

6 4 — 67

Р е ги с т р 11

 

6 8 — 71

Р е ги с т р

12

 

 

Р я с .

19. Ф о р м а т

о б л а с т и с о х р а н е н и я

мой. На рис. 19 приведен формат этой области. При передаче уп­ равления вызываемой программе адрес области сохранения дол­ жен содержаться в регистре 13. Содержимое каждого регистра запоминается в определенном месте области сохранения. Напри­ мер, регистр 0 всегда запоминается в 20—23 байтах области со­ хранения, регистр 2 — в 28—31 байтах и т. д. Проще всего запо­ минать все регистры. При этом последующие изменения в про­ грамме не приведут к изменению содержимого регистров.

Для сохранения регистров можно использовать команду груп­ повой записи (STM) либо макрокоманду SAVE. Последняя имеет следующий формат:

[и м я ]

S A V E

(р е ги ст р 1 [, регистр

2] ) , [Т ]

[, и д е н т и ф и к а т о р ]

 

Регистры 1 и 2

обозначают, от какого и до

какого регистра

не­

обходимо

осуществить сохранение.

Регистры

указываются в

том

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

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

Если указан идентификатор одним из перечисленных способов, то в макрорасширении, отступив 4 байта после адреса, приведен­ ного в регистре 15 (адрес точки входа), помещается 1 байт с ука-

Соседние файлы в папке книги из ГПНТБ