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

Reply via email to