Auf einem IBM Mainframe unter z / OS führen Sie ein Dienstprogramm aus, das eine Datenmenge (Datei) in eine andere Datenmenge (Datei) kopiert. Die Eingabe ist die Quelle der JCL (Job Control Language), die Sie zur Ausführung übergeben haben. Der Ausgang ist der interne Leser (INTRDR). Sie müssen auch sicherstellen, dass Ihr System die Ausführung mehrerer identischer Jobnamen nicht zulässt. Es ist gut, eine Jobklasse zu verwenden, die nur einen Initiator hat (Ort, an dem ein Job im Batch ausgeführt werden kann).
Es sind keine PIDs beteiligt (in z / OS), daher schlägt der Abfragesatz fehl.
Sie stoppen den Prozess durch Ablassen und / oder Spülen. Wenn etwas schief gelaufen ist, durch Ablassen und / oder Spülen, Fluchen, Treten, einen Warmstart und schließlich durch einen Kaltstart versuchen oder den großen roten Knopf drücken (und auf den Programmierer schießen).
Ich habe auf dem Weg vielleicht übertrieben, aber versuche das nicht bei der Arbeit ...
Beispiel mit SORT. Details auf der Jobkarte sind sehr standortabhängig. Die Site-Richtlinien verbieten oder verhindern möglicherweise die Verwendung von INTRDR. Für die Verwendung von INTRDR ist möglicherweise eine bestimmte Klasse erforderlich. Wenn Ihre Website-Richtlinie die Verwendung verbietet, verwenden Sie sie nur, wenn Sie Ihre Habseligkeiten für einen Spaziergang in einem Pappkarton mitnehmen möchten.
Obwohl es gute Verwendungen für das INTRDR gibt, verwenden Sie es nicht für diesen Zweck . Sie werden nicht einmal eine Chance haben, Ihre Box zu bekommen.
//jobname JOB rest is to your site standards
//*
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTOUT DD SYSOUT=(,INTRDR) minimum required, site may require more
//SYSIN DD *
OPTION COPY
//SORTIN DD DISP=SHR,DSN=YOUR.LIBRARY.WITHJOB(JOBMEMBR)
Andere Dienstprogramme sind verfügbar. Ein schnelles Programm wäre ebenfalls einfach zu erstellen. Lesen Sie einfach eine Datei und schreiben Sie eine Datei.
Wenn Sie möchten, dass ein Beispiel dafür nicht funktioniert, versuchen Sie Folgendes : http://ibmmainframes.com/viewtopic.php?p=282414#282414
Die herkömmliche Methode zum Kopieren eines Datasets besteht darin, das IBM-Dienstprogramm IEBGENER zu verwenden, wie ugoren in ihrem Kommentar anspielt.
Heutzutage wird IEBGENER an vielen Standorten auf ICEGENER "ausgerichtet" sein. ICEGENER wird, wenn möglich, IBMs DFSORT (oder seinen Rivalen SyncSort) verwenden, um eine Kopie zu erstellen, da die SORT-Produkte für E / A wesentlich besser optimiert sind als IEBGENER.
Ich schneide nur den Mittelsmann mit SORT aus.
Wenn Sie an einem IBM Mainframe-Standort arbeiten, kennen Sie das Format der JOB-Karte, die Sie verwenden sollten. Die minimale JOB-Karte ist, wie ich gezeigt habe, ohne Kommentar. Der Kommentar ist wichtig, da Sie möglicherweise beispielsweise Buchhaltungsinformationen angeben. Der Jobname wird wahrscheinlich ein standortspezifisches Format haben.
Einige Websites verbieten oder verhindern die Verwendung von INTRDR. Sei vorsichtig.
Auf einigen Sites können mehrere Jobs mit demselben Namen gleichzeitig ausgeführt werden. Sei vorsichtig.
Obwohl Sie als Systemprogrammierer keine solche Klasse einrichten können, sollten Sie nach einer Klasse suchen, die nur einen Initiator zulässt. Damit ist der Prozess ziemlich sicher - aber seien Sie sich absolut sicher, dass die Klasse wie beschrieben funktioniert. Prüfung. Nicht bei diesem Job.
Wenn Sie ein Programmierer des Systems sind, wissen Sie, dass Sie nichts außerhalb Ihres Zuständigkeitsbereichs tun dürfen. 'nuff sagte.
Bei einem Job mit demselben Namen, der zur selben Zeit zulässig ist, und einem einzelnen Initiator ist dies ein konstanter Strom von Jobstart / -ende, nächster Jobstart / -ende, bis Sie die Spool (eine andere schlechte Aufgabe) mit der Ausgabe von füllen Tausende von Jobs (oder keine Jobnummern mehr). Überwachen Sie eine JES-Konsole auf Warnmeldungen.
Tu das im Grunde nicht. Wenn Sie es tun, tun Sie es nicht auf einer Produktionsmaschine.
Mit ein wenig Nacharbeit werde ich eine andere Antwort für die Vorgehensweise unter einem anderen IBM Mainframe-Betriebssystem betrachten: z / VSE ... z / VSE verwendet JCL. z / OS verwendet JCL. Sie sind anders :-)
exec
Linux funktioniert?