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