Wie kopiere ich ein Mitglied mit einem REXX/CLIST-Batchprogramm (kein ISPF)?
Frage
Unter z/OS möchte ich ein REXX- oder CLIST-Skript schreiben, um einen sequentiellen Datensatz in einen anderen zu kopieren und dann ein anderes Skript (REXX) auszuführen.Das andere Skript erwartet, dass ein bestimmtes Sicherheitsdatenblatt vorhanden ist, und ich möchte in der Lage sein, eine von vielen Optionen auf dieses Mitglied zu kopieren, bevor ich das zweite Skript ausführe.Dies ist von TSO, daher habe ich keinen Zugriff auf die schicken ISPF-Sachen.
Also im Grunde genommen:
Copy 'level1.level2.name.type1' to 'level1.level2.name'
runother p1 p2 p3
Der runother
Das Rexx-Skript verwendet „level1.level2.name“, um seine eigene Magie zu entfalten – ich stelle nur für jede meiner Möglichkeiten eine andere bereit.
Ich brauche also ein Skript namens „xx42“, das „level1.level2.name.42“ kopiert und das ich dann für andere Werte als 42 ändern kann.Noch besser wäre es, dieses Skript so zu parametrisieren, dass ich es einfach verwenden kann
xx 42 p1 p2 p3
oder
xx 27 p1 p2 p3
anstatt für jeden Wert ein Skript zu haben.Dies würde das angegebene Sicherheitsdatenblatt kopieren und dann Parameter übergeben p1
, p2
Und p3
durch zu runother
.
Lösung 2
Nach einigem Hin und Her habe ich herausgefunden, dass man die erforderlichen Datensätze manuell zuweisen und ausführen kann IEBGENER
um die Kopie zu machen:
/* 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
Andere Tipps
Auf der Suche nach etwas anderem bin ich auf diesen Beitrag gestoßen.(d. h.Ich habe keine zwei Jahre gebraucht, um diese Antwort zu formulieren) und dachte, dass zukünftige Mainframianer (existieren wir noch?) sie vielleicht nützlich finden könnten.
Sie könnten auch eine SMCOPY durchführen:
address TSO "SMCOPY FDS('LEVEL1.LEVEL2.NAME.42') TDS('LEVEL2.LEVEL2.NAME')"
FDS – vom Datensatz, TDS – zum Datensatz.Wenn TDS nicht vorhanden ist, erhalten Sie einen Rückkehrcode 4, die Kopie wurde jedoch ausgeführt.Sie können SMCOPY auch zum Kopieren von Bibliotheksmitgliedern verwenden.
Sie können SORT auch verwenden, um eine Kopie von SORTIN nach SORTOUT zu erstellen.Sie könnten diese JCL in einen Prozess mit Parametern einschließen oder SET-Anweisungen usw. verwenden.