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

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

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

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

Добавлен: 17.10.2024

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

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

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

35. ОПЕРАТОРЫ ПРОЦЕДУРЫ И КОНЦА ПРОЦЕДУРЫ

Оператор процедуры имеет следующий формат:

//имя PROC операнды комментарии

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

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

параметр=значение

или

параметра

В последнем случае считается, что в качестве стандартного значения параметр заменяется на пусто. Рассмотрим пример про­ цедуры:

IIРР

P R O C

T Y P E = 5 0 5 0 , S T A T U S =

/ / P I

E X E C

R G M = A

/ / м м

D D

D S N = & N A M E , D I S P = ( & S T A T U S , K E E P ) ,

//

 

U N I T = & T Y P E

Процедура РР содержит три параметра NAME, STATUS и TYPE. Для двух из них в операторе PROC определены стандарт­ ные значения. Таким образом, при вызове данной процедуры не­ обходимо обязательно определить значение для параметра NAME, а для остальных значение можно не определять, если стандартное значение является удовлетворительным. Допустим, некоторый пункт задания использует процедуру РР следующим образом:

//S T 1

Е Х Е С

Р Р , N A M E = K A T

Процедура будет выполнена как следующий пункт задания:

/ / P I

E X E C

P G M - A

/ / М М

D D

D S N = KA T, D I S P = ( , K E E P ) ,

/ /

 

U N I T = 5 0 5 0

Теперь рассмотрим другое использование процедуры:

// Т Т

Е Х Е С

Р Р , N A M E = К А Т , S T A T U S = O L D ,

/ /

 

T Y P E = 5010

Процедура будет выполнена как следующий пункт задания:

/ / P I

Е Х Е С

P G M = A

/ / М М

D D

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

/ /

 

U N I T = 5 0 ! 0

9(4



Оператор конца процедуры 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