Como faço para copiar um elemento com um programa de lote REXX / CLIST (sem ISPF)?
Pergunta
De acordo com z / OS, eu quero escrever uma REXX ou script CLIST para copiar um conjunto de dados seqüencial para outro e, em seguida, executar outro script (REXX). O outro script espera de existir um SDS específicas e eu quero ser capaz de copiar uma das muitas opções para esse membro antes de executar o segundo script. Isto é de TSO então eu não têm acesso a qualquer das coisas fantasia ISPF.
Então, basicamente:
Copy 'level1.level2.name.type1' to 'level1.level2.name'
runother p1 p2 p3
Os runother
Rexx usos script 'level1.level2.name' para fazer a sua própria magia - eu apenas estou fornecendo um diferente para cada uma das minhas possibilidades
Então eu preciso de um script chamado 'xx42' que copia 'level1.level2.name.42' e então eu posso modificar isso para que não sejam 42. Mesmo melhor valores seriam para parametrizar esse script para que eu pudesse usar apenas
xx 42 p1 p2 p3
ou
xx 27 p1 p2 p3
em vez de ter um script para cada valor. Isto deve copiar os SDS dadas, em seguida, passar parâmetros p1
, p2
e p3
até runother
.
Solução 2
Depois de um pouco de brincar, eu descobri que você pode alocar manualmente os conjuntos de dados e executar IEBGENER
obrigados a fazer a cópia:
/* 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
Outras dicas
Enquanto procurava por outra coisa, me deparei com este post. (Ou seja, ele não me levou 2 anos para formular esta resposta) e achei mainframians futuros (nós ainda existe?) Pode achar que é útil.
Você também pode fazer um SMCOPY:
address TSO "SMCOPY FDS('LEVEL1.LEVEL2.NAME.42') TDS('LEVEL2.LEVEL2.NAME')"
FDS - do conjunto de dados, TDS - ao conjunto de dados. Se TDS não existe, você receberá um código de retorno 4, mas a cópia terá sido executado. Você pode usar SMCOPY para copiar os membros da biblioteca também.
Você também pode usar SORT para fazer uma cópia de SORTIN para SORTOUT. Você poderia envolver que JCL em um proc com parâmetros ou usar instruções SET, etc.