Hello ,
I have put together this set of SORT control statements to scan through an
IEBPTPCH dump of a JCL or PROC PDS.
The DFSORT statements will look for any JOB Steps that execute program
DMBATCH (this is an NDM Program).
The statements will gather up some DD Statement information related to the
program.
I wanted to collect the DMNETMAP, DMMSGFIL and the SYSIN Control Statements
data set names.
The SYSIN could be a concatenated sequence of datasets.
The control statements below work fine. They do what I wanted.
Today my question is if these SORT Control statements can be optimized?
This is not urgent.
Any ideas are appreciated.
Thanks,
**********************************************************************
* *
* SCAN THROUGH THE IEBPTPCH STREAM AND GENERATE AN OUTPUT FILE. *
* *
* WE IGNORE ALL COMMENT RECORDS. *
* WE ONLY SELECT RECORDS WITH THE SCANNED PDS MEMBER NAME AND *
* RECORDS THAT EXECUTE PROCNAME *
* THE OUTPUT FROM THE PROCESS WILL HAVE *
* JCL/PROC LIBRARY NAME IN 001 THROUGH 003 *
* JCL/PROC MEMBER NAME IN 005 THROUGH 012 *
* DMNETMAP DATASET NAME IN 014 THROUGH 058 *
* DMMSGFIL DATASET NAME IN 060 THROUGH 104 *
* SYSIN DATASET NAME IN 106 THROUGH 150 *
* *
**********************************************************************
OMIT COND=(02,03,CH,EQ,C'//*',OR, * SKIP COMMENTS
(02,02,CH,NE,C'//',AND,
2,11,CH,NE,C'MEMBER NAME')) * SKIP DATA RECORDS
*
* THE MEMBER GROUP STARTS WITH THE "MEMBER NAME" RECORD.
*
INREC IFTHEN=(WHEN=GROUP,
BEGIN=(2,11,CH,EQ,C'MEMBER NAME'),
PUSH=(082:SEQ=8, * SEQUENCE #
091:15,08)), * JCL MEMBER NAME
*
* THE DMBATCH GROUP APPLIES TO THE ENTIRE DMBATCH STEP.
* IT BEGINS WITH "PGM=DMBATCH" AND WILL END AFTER THE
* DMBATCH STEP.
*
IFTHEN=(WHEN=GROUP,
BEGIN=(4,40,SS,EQ,C'PGM=DMBATCH'),
END=(004,05,CH,NE,C'SYSIN',AND,
004,05,CH,NE,C' ',AND,
1 PUSH=(099:04,08)), *
STEP NAME
*
* THE DMNETMAP GROUP APPLIES TO THE ENTIRE DMBATCH STEP.
* IT BEGINS WITH THE DDNAME, AND ENDS WITH THE NEXT
* EXEC STATEMENT.
*
IFTHEN=(WHEN=GROUP,
BEGIN=(4,08,CH,EQ,C'DMNETMAP'),
END=(4,20,SS,EQ,C' EXEC '),
PUSH=(107:21,40)), * DMNETMAP DSN
*
* THE DMMSGFIL GROUP APPLIES TO THE ENTIRE DMBATCH STEP.
* IT BEGINS WITH THE DDNAME, AND ENDS WITH THE NEXT
* EXEC STATEMENT.
*
IFTHEN=(WHEN=GROUP,
BEGIN=(4,08,CH,EQ,C'DMMSGFIL'),
END=(4,20,SS,EQ,C' EXEC '),
PUSH=(147:21,40)), * DMMSGFIL DSN
*
* GROUP STARTS WITH SYSIN DD STATEMENT AND ENDS
* WHEN ANY CONCATENATION SEQUENCE ENDS.
*
IFTHEN=(WHEN=GROUP,
BEGIN=(4,05,CH,EQ,C'SYSIN'),
END=(4,05,CH,NE,C'SYSIN',AND,
4,05,CH,NE,C' '),
PUSH=(187:04,05)), * SYSIN
IFTHEN=(WHEN=(187,05,CH,EQ,C'SYSIN',AND, * INSTREAM RECORDS
012,40,SS,EQ,C' * '),
BUILD=(001:JP1, * LIBRARY DATASET
C',',
005:091,08, * MEMBER NAME
C',',
014:107,40, * DMNETMAP DATASET
C',',
055:147,40, * DMMSGFIL DATASET
C',',
096:C'INSTREAM SYSIN DD * DATA ',
C',',
137:099,08, * DMBATCH STEP NAME
145:C'*')),
IFTHEN=(WHEN=(187,05,CH,EQ,C'SYSIN',AND, * DATASET NAME
017,40,SS,EQ,C'DSN='),
BUILD=(001:JP1, * LIBRARY DATASET
C',',
005:091,08, * MEMBER NAME
C',',
014:107,40, * DMNETMAP DATASET
C',',
055:147,40, * DMMSGFIL DATASET
C',',
096:021,40, * SYSIN DATASET
C',',
137:099,08, * DMBATCH STEP NAME
145:C'D'))
SORT FIELDS=(001,03,CH,A, * LIBRARY NAME
005,08,CH,A) * JCL MEMBER NAME
OUTFIL FNAMES(TRACEIT)
OUTFIL FNAMES(SORTOUT),
OMIT=(001,03,CH,NE,JP1,OR,
014,01,CH,EQ,C' ',OR,
055,01,CH,EQ,C' ',OR,
096,01,CH,EQ,C' ',OR,
137,08,CH,EQ,C' '),
*
* SOMETIMES WE SEE DISP=SHR,DSN=... AND OTHER TIMES
* WE SEE DSN=....,DISP=SHR
* IN ANY EVENT, WE WANT TO GRAB THE SYSIN DATASET NAME.
*
IFTHEN=(WHEN=(96,03,CH,EQ,C'SHR'),
PARSE=(%01=(ENDBEFR=C',', * LIBRARY DATASET
FIXLEN=3),
%02=(ENDBEFR=C',', * MEMBER NAME
FIXLEN=8),
%03=(ENDBEFR=C',', * DMNETMAP DATASET
FIXLEN=38),
%04=(STARTAFT=C',', * DMMSGFIL DATASET
ENDBEFR=C',',
FIXLEN=39),
%05=(STARTAFT=C',', * DISP=SHR,
ENDBEFR=C',',
FIXLEN=39),
%06=(ENDBEFR=C',', * SYSIN DATASET
FIXLEN=39)),
BUILD=(%01,C', ', * LIBRARY DATASET
%02,C', ', * MEMBER NAME
%03,C', ', * DMNETMAP DATASET
%04,C', ', * DMMSGFIL DATASET
104,30,9X)), * SYSIN DATASET
IFTHEN=(WHEN=NONE,
PARSE=(%07=(ENDBEFR=C',', * LIBRARY DATASET
FIXLEN=3),
%08=(ENDBEFR=C',', * MEMBER NAME
FIXLEN=8),
%09=(ENDBEFR=C',', * DMNETMAP DATASET
FIXLEN=38),
%10=(STARTAFT=C',', * DMMSGFIL DATASET
ENDBEFR=C',',
FIXLEN=39),
%11=(STARTAFT=C',', * SYSIN DATASET
ENDBEFR=C',',
FIXLEN=39),
%12=(ENDBEFR=C',', * ,DISP=SHR
FIXLEN=39)),
BUILD=(%07,C', ', * LIBRARY DATASET
%08,C', ', * MEMBER NAME
%09,C', ', * DMNETMAP DATASET
%10,C', ', * DMMSGFIL DATASET
%11)) * SYSIN DATASET
END
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN