¿Cómo copio un miembro con un programa por lotes REXX / CLIST (sin ISPF)?
Pregunta
En z / OS, quiero escribir un script REXX o CLIST para copiar uno conjunto de datos secuencial a otro y luego ejecutar otro script (REXX). El otro script espera un SDS específico de existir y quiero ser capaz de copiar una de las muchas opciones a este miembro, antes de ejecutar el segundo guión. Esto es de TSO, así que no tengo acceso a ninguna de las cosas ISPF fantasía.
Así que, básicamente:
Copy 'level1.level2.name.type1' to 'level1.level2.name'
runother p1 p2 p3
El script REXX runother
utiliza 'level1.level2.name' para hacer su propia magia - Sólo estoy proporcionando una diferente para cada uno de mis posibilidades
Así que necesito un script llamado 'xx42' que copia 'level1.level2.name.42' y luego se modifican que para valores distintos a 42. Aún mejor sería para parametrizar el guión, así que podría simplemente utilizar
xx 42 p1 p2 p3
o
xx 27 p1 p2 p3
en lugar de tener un guión para cada valor. Esto sería copiar el SDS dado a continuación, pasar parámetros p1
, p2
y p3
hasta runother
.
Solución 2
Después de un poco de tocar el violín alrededor, me di cuenta de que puede asignar manualmente los conjuntos de datos necesarios y ejecutar IEBGENER
hacer la copia:
/* 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
Otros consejos
En la búsqueda de algo más, me encontré con este post. (Es decir que no me llevó 2 años para formular esta respuesta) y pensó mainframians futuras (¿todavía existimos?) Podría encontrar útil.
También puede hacer un SMCOPY:
address TSO "SMCOPY FDS('LEVEL1.LEVEL2.NAME.42') TDS('LEVEL2.LEVEL2.NAME')"
FDS - del conjunto de datos, TDS - al conjunto de datos. Si no existe TDS, obtendrá un código de retorno 4, pero se han ejecutado la copia. Se puede utilizar para copiar SMCOPY miembros de la biblioteca también.
También puede utilizar ORDENAR para hacer una copia de SORTIN a SORTOUT. Se podría concluir que JCL en un proc con parámetros o utilizar instrucciones SET, etc.