Как мне скопировать участника с помощью пакетной программы REXX / CLIST (без ISPF)?

StackOverflow https://stackoverflow.com/questions/1671578

  •  13-09-2019
  •  | 
  •  

Вопрос

В z / OS я хочу написать скрипт REXX или CLIST для копирования одного последовательного набора данных в другой, а затем запустить другой скрипт (REXX).Другой скрипт ожидает, что определенный SDS будет существовать, и я хочу иметь возможность скопировать один из многих параметров этому участнику перед запуском второго скрипта.Это от TSO, так что у меня нет доступа ни к каким навороченным материалам ISPF.

Итак, в основном:

Copy 'level1.level2.name.type1' to 'level1.level2.name'
runother p1 p2 p3

В runother Rexx script использует 'level1.level2.name ', чтобы творить свою собственную магию - я просто предоставляю другую для каждой из моих возможностей.

Итак, мне нужен скрипт с именем 'xx42', который копирует 'level1.level2.name.42', и затем я могу изменить его для значений, отличных от 42.Еще лучше было бы параметризовать этот скрипт, чтобы я мог просто использовать

xx 42 p1 p2 p3

или

xx 27 p1 p2 p3

вместо того, чтобы иметь скрипт для каждого значения.Это скопировало бы заданный SDS, а затем передало бы параметры p1, p2 и p3 вплоть до runother.

Это было полезно?

Решение 2

Немного повозившись, я выяснил, что вы можете вручную выделить необходимые наборы данных и запустить IEBGENER чтобы сделать копию:

/* REXX */

"ALLOC FI(SYSPRINT) DUMMY REUSE"
"ALLOC FI(SYSIN) DUMMY REUSE"
"ALLOC FI(SYSUT1) DA('LEVEL1.LEVEL2.NAME.42') SHR REUSE"
"ALLOC FI(SYSUT2) DA('LEVEL1.LEVEL2.NAME') SHR REUSE"
"IEBGENER"
RC2 = RC
"FREE FI(SYSUT1)"
"FREE FI(SYSUT2)"
"FREE FI(SYSPRINT)"
"FREE FI(SYSIN)"
IF RC2 ^= 0 THEN DO
  SAY "IEBGENER FAILED."
  END
ELSE DO
  RUNOTHER P1 P2 P3
  END

Другие советы

В поисках чего-то еще я наткнулся на этот пост.(т.е.мне не потребовалось 2 лет, чтобы сформулировать этот ответ) и подумал, что будущие мейнфреймовцы (мы все еще существуем?) могли бы найти это полезным.

Вы также могли бы сделать SMCOPY:

address TSO "SMCOPY FDS('LEVEL1.LEVEL2.NAME.42') TDS('LEVEL2.LEVEL2.NAME')"

FDS - из набора данных, TDS - в набор данных.Если TDS не существует, вы получите код возврата 4, но копирование будет выполнено.Вы также можете использовать SMCOPY для копирования членов библиотеки.

Вы также можете использовать SORT для копирования из SORTIN в SORTOUT.Вы могли бы обернуть этот JCL в proc с параметрами или использовать инструкции SET и т.д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top