//* Contributed by Chris Hoelscher - //* Above the Line Newsletter - Issue #11 //* February 11, 1999 *Want to make sure that your SMP/E target library is in sync with your runtime loadlib? Following is a job that will walk your SMP/E looking for applied APARS. It will then find all CSECTs modified by the APARs, all load modules into which the modified CSECTs are included, and creates a list of all APARs for each load module. This list can be compared to a browse of each load module idr space in the runtime loadlib; any APARs listed on the report but not in the IDR space indicate an out-of-sync condition (or you have had too many zaps against the module and filled the idr space). For many modules, you will see APARs in the idr space that represent pre-maintenance tape APARS. This is to be expected and does not present a problem or out-of-sync condition. //LISTLMOD JOB (951L-G1ITCIT,020),'12.0 INSTALL', // CLASS=B,MSGLEVEL=(1,1),MSGCLASS=X, // TIME=1440,NOTIFY=G1IT01T //SMPPROC PROC //SMPGO EXEC PGM=GIMSMP,REGION=0M,PARM='DATE=U' //SMPCSI DD DSN=SYSSMPE.&CLIENT..IDMS1201.CSI,DISP=OLD //SMPHOLD DD DUMMY //SMPOUT DD DUMMY //SMPRPT DD DUMMY //SMPCNTL DD DDNAME=SYSIN //SYSIN DD DUMMY // DD DUMMY // PEND //CULPPROC PROC //CULPRIT EXEC PGM=CULPRIT,REGION=0M //STEPLIB DD DSN=SYSSMPE.&CLIENT..IDMS1201.LOADLIB,DISP=SHR //SYSOUT DD DUMMY //SYSPRINT DD SYSOUT=* //SORTPRNT DD SYSOUT=* //SORTMSG DD DUMMY //SYS004 DD SYSOUT=X,DCB=BLKSIZE=133 //SYS005 DD DSN=&&SYS005,DISP=(NEW,DELETE),UNIT=SYSDA, // DCB=(RECFM=FB,LRECL=320,BLKSIZE=23360), // SPACE=(CYL,(60,15),RLSE) //SYS006 DD DSN=&&SYS006,DISP=(NEW,DELETE),UNIT=SYSDA, // DCB=(RECFM=VB,LRECL=22528,BLKSIZE=22532), // SPACE=(CYL,(10,10)) //SYS007 DD DSN=&&SYS007,DISP=(NEW,DELETE),UNIT=SYSDA, // DCB=(RECFM=F,LRECL=80,BLKSIZE=23440), // SPACE=(CYL,(10,3)) //SYS008 DD DSN=&&SYS008,DISP=(NEW,DELETE),UNIT=SYSDA, // DCB=(RECFM=VB,LRECL=22528,BLKSIZE=22532), // SPACE=(CYL,(10,10)) //SORTWK01 DD DSN=&&WRKAWOR1,UNIT=SYSDA,SPACE=(CYL,(10,10),RLSE) //SORTWK02 DD DSN=&&WRKAWOR2,UNIT=SYSDA,SPACE=(CYL,(10,10),RLSE) //SORTWK03 DD DSN=&&WRKAWOR3,UNIT=SYSDA,SPACE=(CYL,(10,10),RLSE) //SORTWK04 DD DSN=&&WRKAWOR4,UNIT=SYSDA,SPACE=(CYL,(10,10),RLSE) //SORTWK05 DD DSN=&&WRKAWOR5,UNIT=SYSDA,SPACE=(CYL,(10,10),RLSE) //SORTWK06 DD DSN=&&WRKAWOR6,UNIT=SYSDA,SPACE=(CYL,(10,10),RLSE) //CULSRT1I DD DSN=SYSSMPE.&CLIENT..IDMS1201.DISTSRC(SORT1),DISP=SHR //SYSIN4 DD DUMMY,DCB=BLKSIZE=80 //VSAMCTRL DD DUMMY //CULLIB DD DSN=SYSSMPE.&CLIENT..IDMS1201.DISTSRC,DISP=SHR // PEND //************************************************************** //*** LIST APARS *** //************************************************************** //STEP0001 EXEC SMPPROC,CLIENT=xxx //SMPLIST DD DSN=&&xxx01,DISP=(,PASS),UNIT=SYSDA, // DCB=(RECFM=FB,LRECL=121,BLKSIZE=27951), // SPACE=(CYL,(1,1),RLSE) //SYSIN DD * SET BOUNDARY(IDMSTGT). LIST SYSMODS. /* //STEP0002 EXEC CULPPROC,CLIENT=xxx //INF DD DSN=&&xxx01,DISP=(OLD,DELETE) //OFA DD DSN=&&xxx02,DISP=(,PASS),UNIT=SYSDA, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920), // SPACE=(CYL,(1,1),RLSE) //SYSIN DD * IN 121 F PS DD=INF REC I-LIT-1 012 004 REC I-TYPE 030 012 REC I-APAR-NAME 002 008 REC I-LIT-2 022 003 REC I-DATE 030 006 REC I-TIME 038 008 REC MOD-GROUP 030 GROUP MG 10.9 REC MOD-NAME 001 008 ELMNT MG 01OUT 080 D PS DD=OFA 01SORT O-MOD-NAME O-DATE O-TIME 010 O-DATE 'XXXXXX' 010 O-TIME 'XXXXXXXX' 010 O-MOD-NAME 'XXXXXXXX' 010 O-APAR-NAME 'XXXXXXXX' 010 FLAG 0 010 SUB1 0 01510001 'A' 01510011 O-MOD-NAME SZ=008 01510021 O-APAR-NAME SZ=008 01510031 O-DATE SZ=006 01510041 O-TIME SZ=008 017 IF FLAG = 0 000 017 IF FLAG = 1 100 017 IF FLAG = 2 200 017 IF FLAG = 3 201 017 DROP 017000 IF I-LIT-1 NE 'TYPE' DROP 017 IF I-TYPE NE ('USERMOD' 'APAR ') DROP 017 MOVE I-APAR-NAME TO O-APAR-NAME 017 MOVE 1 TO FLAG 017 DROP 017100 IF I-LIT-2 NE 'INS' DROP 017 MOVE I-DATE TO O-DATE 017 MOVE I-TIME TO O-TIME 017 MOVE 2 TO FLAG 017 DROP 017200 IF I-LIT-1 NE 'SZAP' DROP 017201 MOVE 0 TO FLAG 017 IF MOD-NAME.1 EQ ' ' DROP 017 MOVE 0 TO SUB1 017210 SUB1 + 1 SUB1 017 IF SUB1 GT 9 DROP 017 IF MOD-NAME.SUB1 EQ ' ' DROP 017 IF SUB1 LT 9 215 017 MOVE 3 TO FLAG 017215 MOVE MOD-NAME.SUB1 TO O-MOD-NAME 017 RELS 017 B 210 //STEP0003 EXEC CULPPROC,CLIENT=xxx //INF DD DSN=&&xxx02,DISP=(OLD,PASS) //OFA DD DSN=&&xxx03,DISP=(,PASS),UNIT=SYSDA, // DCB=BLKSIZE=80, // SPACE=(CYL,(1,1),RLSE) //SYSIN DD * IN 080 F PS DD=INF REC I-MOD-NAME 011 008 01OUT 080 D PS DD=OFA 01SORT NOSORT 010 H-MOD-NAME 'XXXXXXXX' 01510001 'LIST MOD (' 01510011 I-MOD-NAME SZ=008 01510019 ').' 017 IF I-MOD-NAME = H-MOD-NAME DROP 017 MOVE I-MOD-NAME TO H-MOD-NAME //************************************************************** //*** MODS *** //************************************************************** //STEP0004 EXEC SMPPROC,CLIENT=xxx //SMPLIST DD DSN=&&xxx04,DISP=(,PASS),UNIT=SYSDA, // DCB=(RECFM=FB,LRECL=121,BLKSIZE=27951), // SPACE=(CYL,(1,1),RLSE) //SYSIN DD * SET BOUNDARY(IDMSTGT). // DD DSN=&&xxx03,DISP=(OLD,DELETE) //STEP0005 EXEC CULPPROC,CLIENT=xxx //INF DD DSN=&&xxx04,DISP=(OLD,DELETE) //OFA DD DSN=&&xxx05,DISP=(,PASS),UNIT=SYSDA, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920), // SPACE=(CYL,(1,1),RLSE) //SYSIN DD * IN 121 F PS DD=INF REC I-LIT-1 012 007 REC I-MOD-NAME 002 008 REC I-LIT-2 012 004 REC LMOD-GROUP 030 GROUP LG 10.9 REC LMOD-NAME 001 008 ELMNT LG 01OUT 080 D PS DD=OFA 01SORT O-MOD-NAME O-LMOD-NAME 010 O-MOD-NAME 'XXXXXXXX' 010 O-LMOD-NAME 'XXXXXXXX' 010 FLAG 0 010 SUB1 0 01510001 'B' 01510011 O-MOD-NAME SZ=008 01510021 O-LMOD-NAME SZ=008 017 IF FLAG = 0 000 017 IF FLAG = 1 100 017 IF FLAG = 2 101 017 DROP 017000 IF I-LIT-1 NE 'LASTUPD' DROP 017 MOVE I-MOD-NAME TO O-MOD-NAME 017 MOVE 1 TO FLAG 017 DROP 017100 IF I-LIT-2 NE 'LMOD' DROP 017101 MOVE 0 TO FLAG 017 IF LMOD-NAME.1 EQ ' ' DROP 017 MOVE 0 TO SUB1 017110 SUB1 + 1 SUB1 017 IF SUB1 GT 9 DROP 017 IF LMOD-NAME.SUB1 EQ ' ' DROP 017 IF SUB1 LT 9 115 017 MOVE 2 TO FLAG 017115 MOVE LMOD-NAME.SUB1 TO O-LMOD-NAME 017 RELS 017 B 110 //STEP0006 EXEC CULPPROC,CLIENT=xxx //INF DD DSN=&&xxx02,DISP=(OLD,DELETE) // DD DSN=&&xxx05,DISP=(OLD,DELETE) //OFA DD DSN=&&xxx06,DISP=(,PASS),UNIT=SYSDA, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920), // SPACE=(CYL,(1,1),RLSE) //SYSIN DD * IN 080 F PS DD=INF REC I-CODE 001 001 REC I-MOD-NAME 011 008 REC I-APAR-NAME 021 008 REC I-DATE 031 006 REC I-TIME 041 008 REC I-LMOD-NAME 021 008 01OUT 080 D PS DD=OFA 01SORT I-LMOD-NAME T-DATE.SUB1 T-TIME.SUB1 010 T-MOD-NAME.999 'XXXXXXXX' 010 T-APAR-NAME.999 'XXXXXXXX' 010 T-DATE.999 'XXXXXX' 010 T-TIME.999 'XXXXXXXX' 010 T-MAX 0 010 SUB1 0 01510001 I-LMOD-NAME SZ=008 01510011 T-APAR-NAME.SUB1 SZ=008 017 IF I-CODE = 'A' 100 017 IF I-CODE = 'B' 200 017 DROP 017100 T-MAX + 1 T-MAX 017 MOVE I-MOD-NAME TO T-MOD-NAME.T-MAX 017 MOVE I-APAR-NAME TO T-APAR-NAME.T-MAX 017 MOVE I-DATE TO T-DATE.T-MAX 017 MOVE I-TIME TO T-TIME.T-MAX 017 DROP 017200 MOVE 0 TO SUB1 017201 SUB1 + 1 SUB1 017 IF SUB1 GT T-MAX DROP 017 IF I-MOD-NAME GT T-MOD-NAME.SUB1 201 017 IF I-MOD-NAME LT T-MOD-NAME.SUB1 DROP 017 RELS 017 B 201 //STEP0007 EXEC CULPPROC,CLIENT=xxx //INF DD DSN=&&xxx06,DISP=(OLD,DELETE) //SYS030 DD SYSOUT=X,DCB=BLKSIZE=81 //SYSIN DD * IN 080 F PS DD=INF REC I-LMOD-NAME 001 008 REC I-APAR-NAME 011 008 IN 080 F PS MB=DUMMY REC PRINT-LINE 001 080 REC FILLER-1 001 020 REC FILLER-2 021 020 REC FILLER-3 041 020 REC FILLER-4 061 020 REC L-1-APAR-1 037 008 REC L-2-APAR-1 032 008 REC L-2-APAR-2 042 008 REC L-3-APAR-1 027 008 REC L-3-APAR-2 037 008 REC L-3-APAR-3 047 008 REC L-4-APAR-1 022 008 REC L-4-APAR-2 032 008 REC L-4-APAR-3 042 008 REC L-4-APAR-4 052 008 REC L-5-APAR-1 017 008 REC L-5-APAR-2 027 008 REC L-5-APAR-3 037 008 REC L-5-APAR-4 047 008 REC L-5-APAR-5 057 008 REC L-6-APAR-1 012 008 REC L-6-APAR-2 022 008 REC L-6-APAR-3 032 008 REC L-6-APAR-4 042 008 REC L-6-APAR-5 052 008 REC L-6-APAR-6 062 008 REC L-7-APAR-1 007 008 REC L-7-APAR-2 017 008 REC L-7-APAR-3 027 008 REC L-7-APAR-4 037 008 REC L-7-APAR-5 047 008 REC L-7-APAR-6 057 008 REC L-7-APAR-7 067 008 REC L-8-APAR-1 002 008 REC L-8-APAR-2 012 008 REC L-8-APAR-3 022 008 REC L-8-APAR-4 032 008 REC L-8-APAR-5 042 008 REC L-8-APAR-6 052 008 REC L-8-APAR-7 062 008 REC L-8-APAR-8 072 008 010 T-APAR-NAME.99 'XXXXXXXX' 010 H-LMOD-NAME 'XXXXXXXX' 010 SUB1 0 010 SUB2 0 010 SUB3 0 010 SUB4 0 010 SUB5 0 010 SUB6 0 010 X1 0 010 X2 0 010 X3 0 010 X4 0 010 X5 0 010 X6 0 010 X7 0 010 X8 0 01OUT 080 D NS(XXXX) 01SORT H-LMOD-NAME,1 NOSORT 01410018 'APARS THAT HAVE MODIFIED LOAD MODULE ' 01410055 H-LMOD-NAME SZ=008 015100010PRINT-LINE SZ=080 017 IF EOF NE 010 017 PERFORM 100 017 DROP 017010 IF I-LMOD-NAME = H-LMOD-NAME 030 017 IF H-LMOD-NAME = 'XXXXXXXX' 020 017 PERFORM 100 017020 PERFORM 200 017030 PERFORM 300 017 DROP 017100 COMPUTE SUB1 - ( SUB2 * 8 ) SUB3 017 IF SUB3 < 1 199 017 IF SUB3 > 8 102 017 COMPUTE (SUB2 * 8) + 1 SUB4 017 COMPUTE (SUB2 * 8) + SUB3 SUB5 017 B 104 017102 COMPUTE (SUB2 * 8) + 1 SUB4 017 COMPUTE (SUB2 * 8) + 8 SUB5 017104 SUB2 + 1 SUB2 017 COMPUTE SUB5 + 1 - SUB4 SUB6 017 MOVE SUB4 TO X1 017 CALL US43 (' ' FILLER-1 20) 017 CALL US43 (' ' FILLER-2 20) 017 CALL US43 (' ' FILLER-3 20) 017 CALL US43 (' ' FILLER-4 20) 017 SUB4 + 1 X2 017 SUB4 + 2 X3 017 SUB4 + 3 X4 017 SUB4 + 4 X5 017 SUB4 + 5 X6 017 SUB4 + 6 X7 017 SUB4 + 7 X8 017 IF SUB6 = 1 111 017 IF SUB6 = 2 112 017 IF SUB6 = 3 113 017 IF SUB6 = 4 114 017 IF SUB6 = 5 115 017 IF SUB6 = 6 116 017 IF SUB6 = 7 117 017 IF SUB6 = 8 118 017 DROP 017111 CALL US43 (T-APAR-NAME.X1 L-1-APAR-1 8) 017 B 190 017112 CALL US43 (T-APAR-NAME.X1 L-2-APAR-1 8) 017 CALL US43 (T-APAR-NAME.X2 L-2-APAR-2 8) 017 B 190 017113 CALL US43 (T-APAR-NAME.X1 L-3-APAR-1 8) 017 CALL US43 (T-APAR-NAME.X2 L-3-APAR-2 8) 017 CALL US43 (T-APAR-NAME.X3 L-3-APAR-3 8) 017 B 190 017114 CALL US43 (T-APAR-NAME.X1 L-4-APAR-1 8) 017 CALL US43 (T-APAR-NAME.X2 L-4-APAR-2 8) 017 CALL US43 (T-APAR-NAME.X3 L-4-APAR-3 8) 017 CALL US43 (T-APAR-NAME.X4 L-4-APAR-4 8) 017 B 190 017115 CALL US43 (T-APAR-NAME.X1 L-5-APAR-1 8) 017 CALL US43 (T-APAR-NAME.X2 L-5-APAR-2 8) 017 CALL US43 (T-APAR-NAME.X3 L-5-APAR-3 8) 017 CALL US43 (T-APAR-NAME.X4 L-5-APAR-4 8) 017 CALL US43 (T-APAR-NAME.X5 L-5-APAR-5 8) 017 B 190 017116 CALL US43 (T-APAR-NAME.X1 L-6-APAR-1 8) 017 CALL US43 (T-APAR-NAME.X2 L-6-APAR-2 8) 017 CALL US43 (T-APAR-NAME.X3 L-6-APAR-3 8) 017 CALL US43 (T-APAR-NAME.X4 L-6-APAR-4 8) 017 CALL US43 (T-APAR-NAME.X5 L-6-APAR-5 8) 017 CALL US43 (T-APAR-NAME.X6 L-6-APAR-6 8) 017 B 190 017117 CALL US43 (T-APAR-NAME.X1 L-7-APAR-1 8) 017 CALL US43 (T-APAR-NAME.X2 L-7-APAR-2 8) 017 CALL US43 (T-APAR-NAME.X3 L-7-APAR-3 8) 017 CALL US43 (T-APAR-NAME.X4 L-7-APAR-4 8) 017 CALL US43 (T-APAR-NAME.X5 L-7-APAR-5 8) 017 CALL US43 (T-APAR-NAME.X6 L-7-APAR-6 8) 017 CALL US43 (T-APAR-NAME.X7 L-7-APAR-7 8) 017 B 190 017118 CALL US43 (T-APAR-NAME.X1 L-8-APAR-1 8) 017 CALL US43 (T-APAR-NAME.X2 L-8-APAR-2 8) 017 CALL US43 (T-APAR-NAME.X3 L-8-APAR-3 8) 017 CALL US43 (T-APAR-NAME.X4 L-8-APAR-4 8) 017 CALL US43 (T-APAR-NAME.X5 L-8-APAR-5 8) 017 CALL US43 (T-APAR-NAME.X6 L-8-APAR-6 8) 017 CALL US43 (T-APAR-NAME.X7 L-8-APAR-7 8) 017 CALL US43 (T-APAR-NAME.X8 L-8-APAR-8 8) 017 B 190 017190 RELS 017 B 100 017199 RETURN 017200 MOVE I-LMOD-NAME TO H-LMOD-NAME 017 MOVE 0 TO SUB1 017 MOVE 0 TO SUB2 017 MOVE 0 TO SUB3 017 MOVE 0 TO SUB4 017 MOVE 0 TO SUB5 017 MOVE 0 TO SUB6 017299 RETURN 017300 SUB1 + 1 SUB1 017 MOVE I-APAR-NAME TO T-APAR-NAME.SUB1 017399 RETURN