Вторник, 26.09.2017, 01:30
Приветствую Вас Гость | RSS
Главная | Как найти имя задания? - Форум | Регистрация | Вход
Форма входа
Логин:
Пароль:
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Технические форумы » MVS (OS/390, zOS) » Как найти имя задания?
Как найти имя задания?
AlexVДата: Вторник, 19.07.2011, 11:11 | Сообщение # 1
Лейтенант
Группа: Проверенные
Сообщений: 57
Репутация: 0
Статус: Offline
Суть проблемы такова.
Пишу программу, которая будет выполняться из задания. Но программа должна определить, из какого раздела задание было запущено.
Имя задания, которое присваивается ему JES2 не годится.

Никто не знает случайно, где таковую инфу можно изыскать?
 
akostДата: Среда, 20.07.2011, 09:58 | Сообщение # 2
Admin
Группа: Администраторы
Сообщений: 473
Репутация: 4
Статус: Offline
Правильно ли я понимаю:
Раздел библиотеки - там задание с JCL. В одном из шагов задания запускается из библиотеки загрузочный модуль программы. И программе надо узнать, как называется раздел, в котором лежал JCL?
 
AlexVДата: Среда, 20.07.2011, 10:02 | Сообщение # 3
Лейтенант
Группа: Проверенные
Сообщений: 57
Репутация: 0
Статус: Offline
Правильно... Только почему "лежал", он там всегда smile
Но, похоже, это тупиковая идея... Все таблицы перерыл - не нашёл ничего подобного. На других форумах тоже молчок...

Придётся придумывать что-то другое.
 
akostДата: Среда, 20.07.2011, 11:00 | Сообщение # 4
Admin
Группа: Администраторы
Сообщений: 473
Репутация: 4
Статус: Offline
да, я тоже не встречал, где это взять напрямую.
 
XOpenДата: Среда, 20.07.2011, 16:57 | Сообщение # 5
Генерал-майор
Группа: Администраторы
Сообщений: 322
Репутация: 4
Статус: Offline
Узнать откуда запустили нельзя в принципе. Я могу из спула перезапустить джоб или по фтп прислать. Джоб попал на ридер. Как, откуда - никому неинтересно.

А так в принципе можно оформить запуск как процедуру. Тогда в выводе будет строка типа:

IEFC001I PROCEDURE SBOXPRIM WAS EXPANDED USING PRIVATE LIBRARY SYS3.TEST.PROCLIB

Вывод активного джоба можно парсить ISFAFD.

Или ввести стандартизацию на пользовательские библиотеки и передавать как DD c XXX.&SYSUID.XXX

Наверно можно еще SUB заменить на свой REXX и делать с разделом что-нибудь противоестественное.

Ой, я про библиотеки. А вы наверно хотите имя мембера (которое может не совпадать с именем джоба). Если это ваши мемберы то можно тупо поставить параметр 1,2,3 своей программе, чтобы она знала что нужно делать. Или той же ISFAFD анализировать что перед этим было. (шаги, параметры, волшебные слова)


Сообщение отредактировал XOpen - Среда, 20.07.2011, 17:05
 
akostДата: Четверг, 21.07.2011, 09:36 | Сообщение # 6
Admin
Группа: Администраторы
Сообщений: 473
Репутация: 4
Статус: Offline
Так это понятно, как узнать, если есть дисциплина.
Я так понимаю, начальная постановка была для общего случая.
 
XOpenДата: Четверг, 21.07.2011, 12:04 | Сообщение # 7
Генерал-майор
Группа: Администраторы
Сообщений: 322
Репутация: 4
Статус: Offline
Ну я и ответил, что нельзя для общего. А потом подумал а вдруг кто-то пошел не в том направлении и на самом деле ему это не нужно. Было бы интереснее услышать постановку проблемы.
 
AlexVДата: Четверг, 21.07.2011, 16:59 | Сообщение # 8
Лейтенант
Группа: Проверенные
Сообщений: 57
Репутация: 0
Статус: Offline
Пожалуй, это действительно невозможно... Хотя и была малая надежда, что источник где-нибудь хранится.

Но и постановка задачи изначально была не чёткая. В конце-концов удалось убедить заказчика на более простое решение.
Всю ситуёвину излагать будет сложно, потому как много нюансов.
Но если коротко, то есть ряд тестовых систем, по которым движется изменённый JCL, или программа. Для ряда регионов не нужно выполнять некоторые шаги задания. Для других регионов их выполнять нужно. При этом текст задания изменять нельзя.
Изначально предполагалось, что будет некий конфиг-файл, где будет описано, каким заданиям в каких регионах можно выполнять эти шаги. От конфигурации решили отказаться (тем более что уже имеется библиотека со значениями переменных для каждого региона, в крайнем случае постараемся задействовать её, хотя это тоже крайне нежелательно).
В общем, демо-вариант готов и вроде бы работает как хотелось.
 
XOpenДата: Четверг, 21.07.2011, 21:47 | Сообщение # 9
Генерал-майор
Группа: Администраторы
Сообщений: 322
Репутация: 4
Статус: Offline
В IBM France мы решали такую задачу инсталляцией наших JCL. На главном хосте создавался JCL обрамленный своими директивами, в том числе типа "IF REGION=EMEA" и прочими переменными. На каждом таргет хосте стоял рекс инсталятор с уже прописанными переменными для этого региона. После инсталляции получался чистый JCL с правильными переменными и шагами.
 
AlexVДата: Пятница, 22.07.2011, 10:09 | Сообщение # 10
Лейтенант
Группа: Проверенные
Сообщений: 57
Репутация: 0
Статус: Offline
Наскольку уловил идею, мы сделали примерно так же.
Но вот только на производственной системе никакие REXX не допускаются. Там своя отлаженная годами технология запуска заданий. Вмешиваться в неё нельзя. Поэтому все задания в тестовых регионах должны быть такими же как и в производственной системе. Единственное что делают боинговцы - перед копированием задания в производственную библиотеку заменяют переменные на реальные значения. Хотя я не понимаю, зачем это нужно - можно просто в начало задания скопировать конфигурацию, в которой всем переменным идёт присвоение значений. Я считаю, что это работало бы надёжнее.
А для запуска заданий в тестовых регионах я написал небольшой REXX, который как раз вставляет конфигурацию в начало задания и изменяет JOBLIB.
Т.е. было так:

//WIR8T210 JOB (NW,WIRTS3),'7W-41 WIRS ANALYST',
// CLASS=A,PRTY=0,MSGCLASS=U
. . . . . . . . . . . . .
//JOBLIB DD DSN=IMSVS.&IMSQUAL..RESLIB,DISP=SHR
// DD DSN=TESTLIB.WIRS.PGM&WIRJBLB.,DISP=SHR <&WIRJBLB.>

Превращается в такое:

//WIR8T210 JOB (NW,WIRTS3),'7W-41 WIRS ANALYST',
// CLASS=A,PRTY=0,MSGCLASS=U
//* JOB SOURCE: WIRS.TEST.JOBLIB.FUNC
//SETSTMT SET UPIN=TST8
//SETSTMT SET AMSQUAL=DATALIB
. . . . . . . . . . .. .
//JOBLIB DD DSN=IMSVS.&IMSQUAL..RESLIB,DISP=SHR
// DD DSN=TESTLIB.WIRS.PGMDEVX,DISP=SHR IT18
// DD DSN=TESTLIB.WIRS.PGMDEVY,DISP=SHR TST3
// DD DSN=TESTLIB.WIRS.PGMFUNC,DISP=SHR TSTD
// DD DSN=TESTLIB.WIRS.PGMSYSA,DISP=SHR TST4
// DD DSN=TESTLIB.WIRS.PGMBLKP,DISP=SHR DEFAULT

JOBLIB формируется в зависимости от того, в каком регионе задание запускается.
 
EHabarovДата: Пятница, 22.07.2011, 11:48 | Сообщение # 11
Майор
Группа: Доверенные
Сообщений: 85
Репутация: 7
Статус: Offline
А может имеет смысл "выкинуть" настройки в отдельный раздел и подключать их через JCL-оператор INCLUDE ?
Тогда в самом задании ничего менять не нужно будет, просто эти разделы должны быть разными для разных систем.
 
AlexVДата: Пятница, 22.07.2011, 12:04 | Сообщение # 12
Лейтенант
Группа: Проверенные
Сообщений: 57
Репутация: 0
Статус: Offline
Quote (EHabarov)
А может имеет смысл "выкинуть" настройки в отдельный раздел и подключать их через JCL-оператор INCLUDE ?
Тогда в самом задании ничего менять не нужно будет, просто эти разделы должны быть разными для разных систем.


Такая мысль обсуждалась, но по ряду причин от неё пришлось отказаться.
Неявное указание (через INCLUDE) всегда немного усложняет сопровождение.
И потом, нужно как-то указывать, какой именно INCLUDE брать. Это можно было бы делать, если б задания запускались командой START, но тестировщики не имеют доступа к командам MVS (как и программисты). А каждый раз руками править - не дело.
Ну и ещё кое-какие нюансы были...
 
Форум » Технические форумы » MVS (OS/390, zOS) » Как найти имя задания?
Страница 1 из 11
Поиск: