2009-11-04 21 views
1

Sous z/OS, je souhaite écrire un script REXX ou CLIST pour copier un jeu de données séquentiel dans un autre, puis exécuter un autre script (REXX). L'autre script s'attend à ce qu'un SDS spécifique existe et je veux être capable de copier une des nombreuses options à ce membre avant d'exécuter le second script. Cela vient de TSO, donc je n'ai accès à aucun des trucs de l'ISPF.Comment copier un membre avec un programme batch REXX/CLIST (sans ISPF)?

Donc, en gros:

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

Le script Rexx runother utilise « level1.level2.name » pour faire sa propre magie - je suis juste fournir un différent pour chacun de mes possibilités.

J'ai donc besoin d'un script appelé 'xx42' qui copie 'level1.level2.name.42' et je peux ensuite modifier cela pour des valeurs autres que 42. Encore mieux serait de paramétrer ce script afin que je puisse simplement utiliser

xx 42 p1 p2 p3 

ou

xx 27 p1 p2 p3 

plutôt que d'avoir un script pour chaque valeur. Cela copiera le SDS donné, puis passera les paramètres p1, p2 et p3 jusqu'à runother.

Répondre

0

Après un peu de bidouiller, je compris que vous pouvez affecter manuellement les ensembles de données nécessaires et exécuter IEBGENER pour faire la copie:

/* 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

Alors que la recherche de quelque chose d'autre, je suis tombé sur ce poste. (c'est-à-dire qu'il ne m'a pas fallu 2 ans pour formuler cette réponse) et pensé que les futurs mainframiens (existe-t-il encore?) pourraient le trouver utile.

Vous pouvez également faire un SMCOPY:

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

FDS - du dataset, TDS - à ensemble de données. Si TDS n'existe pas, vous obtiendrez un code de retour 4, mais la copie aura été exécutée. Vous pouvez également utiliser SMCOPY pour copier les membres de la bibliothèque.

0

Vous pouvez également utiliser SORT pour copier SORTIN vers SORTOUT. Vous pouvez envelopper ce JCL dans un proc avec des paramètres ou utiliser des instructions SET, etc.