В процессе миграции с z/OS 1.8 на z/OS 1.13 осваиваю то новое, что появилось. Изменения радуют, некоторые давно напрашивались. О том, что реально начали использовать, постараюсь рассказать здесь. Возможно позже оформлю как статью. Тема будет постепенно дополняться, т.к. процесс идет.
В процедурах теперь можно использовать "instream data", т.е. данные в теле процедуры (DD *), что раньше было только в заданиях (JOB). Пример:
Файловую систему ZFS можно делать общей на чтение/запись для всех узлов SYSPLEX, без потери производительности.
SYSLOGD может отписывать архивы в MVS-наборы (последовательные и GDG) по расписанию и/или размеру. Для просмотра логов SYSLOGD появились специальные панели в ISPF.
Сообщение отредактировал EHabarov - Ср, 24.07.2013, 12:50
и сто лет не прошло) это ж надо было сначала стопиццот доморoщеных программ написать, которые вот это вот делали (лично я написал 3), прежде чем IBM снизошла, наконец-то, до реализации подстановки в данные входного потока.
Gregory, очень давно встречал где-то в англоязычной конференции по zOS, что чуть ли не на SHARE был сформулирован целый перечень досадных странностей системы, почему-то не реализованных поставщиком. Среди них подстановка данных во входной поток для процедур была первым пунктом. Документ датировался чуть не концом 80-х или началом 90-х, не помню уже. Там еще были заявлены определенные проблемы с файловыми системами, RACF и прочим. Главное - что устранение этих странностей не угрожала преемственности, это были действительно всякие логические неувязки, накопившиеся в процессе развития системы. Так что может быть еще до нашей с вами отставки с поля мейнфреймовской жизни мы увидим доработки их того самого ветхозаветного списка))).
...был сформулирован целый перечень досадных странностей системы, почему-то не реализованных поставщиком. Среди них подстановка данных во входной поток для процедур была первым пунктом.
результат: IEB342I INVALID SPACE ALLOCATION IEF142I ... IEBGENER - STEP WAS EXECUTED - COND CODE 0012
потому что вместо - GENERATE требуется GENERATE MAXFLDS=1
И это происходит в XXI веке - программа не в состоянии обработать операнд, если ей заранее не указать сколько таких операндов может появиться, а то программа не может запросить память для значений. Строить связанные списки программа не умеет, но уж определить MAXFLDS и MAXLITS по умолчанию равным 1000 за пятьдесят лет можно было бы.
CONTROL NOLIST N OCONLIST NOSYMLI ST NOMSG* SET LIB = PRIV.L OAD* IF &SYSD SN(&LIB) NE OK T HEN SET LIB =* STEPLIB DSN('IBM Z.SIBMZC MP' 'CEE .SCEERUN ' &LIB)* SET LIB = PRIV.C LIST*
Очень интересно, как устроены мозги у человека, который спроектировал вот этот формат вывода "по умолчанию", абсолютно бессмысленный в 100% случаев. О совершенно убогих и синтаксически и семантически управляющих операторах я уже молчу
Сообщение отредактировал Gregory - Пн, 04.11.2013, 17:11
Gregory, дык, самое страшное - это не наличие убогостей. Мало ли что, может, именно на таком странном выводе, как в Вашем примере, где-то работает что-то нужное и важное... Самое страшное, что даже то, что ТРЕБУЕТ устранения и не влияет на уже настроенные программы (да хоть как в Вашем примере с умолчаниями для MAXFLDS) не устраняется ДЕСЯТИЛЕТИЯМИ! Хотя всегда найдется теоретик, который скажет, что любое умолчание - зло, все должно быть указано явно. Я, например, таких экстремистов среди мейнфреймовцев встречал достаточно часто.
Самое страшное, что даже то, что ТРЕБУЕТ устранения и не влияет на уже настроенные программы ... не устраняется ДЕСЯТИЛЕТИЯМИ!
Пожалуй, самое страшное то, что многие несуразности и окаменелые артефакты продолжают тиражироваться при обучении и реинкарнируют в новых поколениях, потому что знания некоторых людей, обучающих молодежь z/OS, ограничены 80-ыми годами прошлого века, и то, чему они могут научить, это в лучшем случае OS/VS1...