Im Rahmen von Testaktivitäten ist immer wieder Vollständigkeit von Datensätzen in Datasets zu überprüfen. Mit dem DFSORT-Tool ICETOOL lassen sich auf einfache Art und Weise eine große Anzahlen von Dateien zählen. Mit der folgenden JCL kann dies in einem JOB auf bis 255 Dateien erweitert werden:
//NZSCNTAU JOB (666045,BA), // 'MOELLER', // CLASS=K, // NOTIFY=&SYSUID, // MSGCLASS=T //RESTART EXEC PGM=IEFBR14 //ALT DD DSN=&SYSUID..NZSCOUNT.AUSUEB, // DISP=(MOD,DELETE,DELETE) // SET VAR1='$150529' //ICETOOL EXEC PGM=ICETOOL //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //IN001 DD DSN=BAT.PO.&VAR1..ZH.AL.GDG.AUSUEB, // DISP=SHR //OUT001 DD DSN=&SYSUID..NZSCOUNT.TMPAU, // DISP=(MOD,CATLG,DELETE), // RECFM=FB, // LRECL=80, // BLKSIZE=800, // SPACE=(80,(1,10000),RLSE) //TOOLIN DD * COUNT FROM(IN001) WRITE(OUT001) - TEXT('BAT.PO.&VAR1..ZH.AL.GDG.AUSUEB, :') /* //ICETOOL EXEC PGM=ICETOOL //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //IN001 DD DSN=&SYSUID..NZSCOUNT.TMPAU, // DISP=SHR //OUT001 DD DSN=&SYSUID..NZSCOUNT.AUSUEB, // DISP=(MOD,CATLG,DELETE), // RECFM=FB, // LRECL=80, // BLKSIZE=800, // SPACE=(80,(1,10000),RLSE) //TOOLIN DD * DISPLAY FROM(IN001) LIST(OUT001) - HEADER('DATEINAME') ON(1,35,CH) - HEADER('ANZAHL RECORDS') ON(45,15,UFF) - TOTAL('SUMME AUSUEB: ') /* //RESTART EXEC PGM=IEFBR14 //ALT DD DSN=&SYSUID..NZSCOUNT.TMPAU, // DISP=(MOD,DELETE,DELETE) )
Beschreibung der einzelnen Zeilen:
Zeile 01: Aufruf des Programmes ICETOOL
Zeile 02 und 03: Umleitung an die Standard-Ausgabe der Meldungen die durch das Programm ICETOOL und DFSORT erzeugt werden
Zeile 04 und 05: Einzulesende Datei (mit Variablennamen für das Fachbestandsdatum), DISP=SHR beschreibt lesenden Zugriff
Zeile 06 bis 11: Auszugebende Datei (mit System-Variablennamen für die User-ID), DISP=(MOD,CATLG,DELETE) beschreibt den schreibenden Zugriff auf eine bereits vorhandene Datei. Jede Ergebniszeile wird an die vorhandene Datei unten angehängt. Achtung: Die erzeugte Datei ist eine temporäre Datei, die im letzten Step des Jobs wieder gelöscht wird. Im letzten Step des Jobs wird aus jeder temporären Datei die Summe je Entität berechnet und in die endgültige Ausgabedatei geschrieben.
Zeile 12 bis 14: Hierbei handelt es sich um die Eingabeparameter für das Programm ICETOOL. COUNT zählt aus der und IN001 angegebenen Datei und schreibt unter die mit OUT001 benannte Datei. Das Minuszeichen am Ende der Zeile ist der Identifikator für eine weitere Parameter-Zeile. TEXT gibt einen konstanten String aus (in diesem Fall den Namen der einzulesenden Datei)
Beschreibung des Outputs
Je Job/Entität wird unter der eigenen User-ID eine Ausgabedatei erzeugt. Jedes Ausgabedatei enthält zwei Spalten (Spalte 1 = Dateiname, Spalte 2 = Anzahl der Zeilen je Datei) und eine Summenzeile.
Beispiel (Auszug):
DATEINAME ANZAHL RECORDS --------------------------------- ---------------- BAT.PO.&VAR1..ZH.AL.GDG.AUSUEB, +000000000000000 BAT.PO.&VAR1..ZH.A2.GDG.AUSUEB, +000000000007468 BAT.PO.&VAR1..ZH.BL.GDG.AUSUEB, +000000000000000 BAT.PO.&VAR1..ZH.DR.GDG.AUSUEB, +000000000027352 … SUMME AUSUEB: +000000000161479