Eingabe-Ausgabe-Methoden
Jedes Stapelprogramm, das über eine JCL ausgeführt wird, erfordert eine Dateneingabe, die verarbeitet und eine Ausgabe erstellt wird. Es gibt verschiedene Methoden, um dem Programm Eingaben zuzuführen und von einer JCL empfangene Ausgaben zu schreiben. Im Batch-Modus ist keine Benutzerinteraktion erforderlich, aber Eingabe- und Ausgabegeräte sowie die erforderliche Organisation werden in der JCL definiert und übermittelt.
Dateneingabe in einer JCL
Es gibt verschiedene Möglichkeiten, die Daten mithilfe von JCL einem Programm zuzuführen. Diese Methoden wurden nachfolgend erläutert:
INSTREAM-DATEN
Instream-Daten für ein Programm können mit einer SYSIN DD-Anweisung angegeben werden.
//CONCATEX JOB CLASS=6,NOTIFY=&SYSUID
//* Example 1:
//STEP10 EXEC PGM=MYPROG
//IN1 DD DSN=SAMPLE.INPUT1,DISP=SHR
//OUT1 DD DSN=SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
// LRECL=50,RECFM=FB
//SYSIN DD *
//CUST1 1000
//CUST2 1001
/*
//*
//* Example 2:
//STEP20 EXEC PGM=MYPROG
//OUT1 DD DSN=SAMPLE.OUTPUT2,DISP=(,CATLG,DELETE),
// LRECL=50,RECFM=FB
//SYSIN DD DSN=SAMPLE.SYSIN.DATA,DISP=SHR
//*
In Beispiel 1 wird die Eingabe in MYPROG über SYSIN geleitet. Die Daten werden in der JCL bereitgestellt. Zwei Datensätze werden an das Programm übergeben. Bitte beachten Sie, dass / * das Ende der instream SYSIN-Daten markiert.
"CUST1 1000" ist Datensatz1 und "CUST2 1001" ist Datensatz2. Die Datenende-Bedingung ist erfüllt, wenn beim Lesen der Daten das Symbol / * angetroffen wird.
In Beispiel 2 werden die SYSIN-Daten in einem Datensatz gespeichert, wobei SAMPLE.SYSIN.DATA eine PS-Datei ist, die einen oder mehrere Datensätze enthalten kann.
Dateneingabe über Dateien
Wie in den meisten Beispielen in den vorherigen Kapiteln erwähnt, kann die Dateneingabe in ein Programm über PS-, VSAM- oder GDG-Dateien mit relevanten DSN-Namen und DISP-Parametern sowie DD-Anweisungen erfolgen.
In Beispiel 1 ist SAMPLE.INPUT1 die Eingabedatei, über die Daten an MYPROG übergeben werden. Es wird im Programm als IN1 bezeichnet.
Datenausgabe in einer JCL
Die Ausgabe in einer JCL kann in einem Dataset katalogisiert oder an SYSOUT übergeben werden. Wie im Kapitel DD-Anweisungen erwähnt,SYSOUT=* Leitet die Ausgabe an dieselbe Klasse um, die im MSGCLASS-Parameter der JOB-Anweisung angegeben ist.
Jobprotokolle speichern
Angeben MSGCLASS=Yspeichert das Jobprotokoll im JMR (Joblog Management and Retrieval). Das gesamte JOB-Protokoll kann an die SPOOL umgeleitet und in einem Dataset gespeichert werden, indem der XDC-Befehl für den Jobnamen in der SPOOL angegeben wird. Wenn der XDC-Befehl in SPOOL angegeben wird, wird ein Bildschirm zum Erstellen von Datensätzen geöffnet. Das Auftragsprotokoll kann dann durch Angabe der entsprechenden PS- oder PDS-Definition gespeichert werden.
Auftragsprotokolle können auch in einem Dataset gespeichert werden, indem ein bereits erstelltes Dataset für SYSOUT und SYSPRINT erwähnt wird. Auf diese Weise kann jedoch nicht das gesamte Auftragsprotokoll erfasst werden (dh JESMSG wird nicht katalogisiert), wie dies in JMR oder XDC der Fall ist.
//SAMPINST JOB 1,CLASS=6,MSGCLASS=Y,NOTIFY=&SYSUID
//*
//STEP1 EXEC PGM=MYPROG
//IN1 DD DSN=MYDATA.URMI.INPUT,DISP=SHR
//OUT1 DD SYSOUT=*
//SYSOUT DD DSN=MYDATA.URMI.SYSOUT,DISP=SHR
//SYSPRINT DD DSN=MYDATA.URMI.SYSPRINT,DISP=SHR
//SYSIN DD MYDATA.BASE.LIB1(DATA1),DISP=SHR
//*
//STEP2 EXEC PGM=SORT
Im obigen Beispiel ist SYSOUT in MYDATA.URMI.SYSOUT und SYSPRINT in MYDATA.URMI.SYSPRINT katalogisiert.