A SMF record is written each time a module is referenced.
We recommend waiting a while to get meaningful results. Depending on your operations this can range from 1 day to pick up nightly jobs to one week, quarter, etc. to pick up rarely used but vital programs. The longer the monitoring runs the more complete the results.
Before running reports, run job CMMSMFP to update the PROGI
dataset.
//JOBNAME JOB ... (RC=0 EXPECTED)
//*
//* THIS JOB POPULATES THE LOADED PROGRAMS INVENTORY DATA SET FROM
//* SMF RECORDS. THE FOLLOWING JCL REQUIRES SEVERAL MODIFICATIONS
//* BEFORE THE JOB CAN BE SUBMITTED.
//*
//* 1) JOBCARD - USE A VALID JOBCARD FOR YOUR ENVIRONMENT
//* 2) SMFRID - SPECIFY THE SMF RECORD ID FROM CMMRULES
//* 3) STEPLIB - SPECIFY THE DTS.LOADLIB DATA SET NAME
//* 4) SMFFILE - SPECIFY THE SMF DUMP DATA SET WHICH CONTAINS
//* THE DUMPED SMF RECORDS
//* 5) CMMEXCL - CONTAINS DATA SET AND VOLUME COMBINATIONS THAT
//* WERE IN THE SMF DATA BUT NOT IN PROGI
//* 6) DISCARD - OPTIONAL FILE THAT CONTAINS REJECTED RECORDS
//* UNCOMMENT '<== ACT' STATEMENTS TO USE
//*
//STEP01 EXEC PGM=IEFBR14
//DD1 DD DISP=(MOD,DELETE),DSN=DTS.R72.ONLY.CMMSMF,
// UNIT=SYSALLDA,SPACE=(TRK,(1,1))
//DD2 DD DISP=(MOD,DELETE),DSN=DTS.R72.SORTED.CMMSMF,
// UNIT=SYSALLDA,SPACE=(TRK,(1,1))
//DD3 DD DISP=(MOD,DELETE),DSN=DTS.R72.CMMEXCL,
// UNIT=SYSALLDA,SPACE=(TRK,(1,1))
//*DD4 DD DISP=(MOD,DELETE),DSN=DTS.R72.CMMDISC, <== ACT
//* UNIT=SYSALLDA,SPACE=(TRK,(1,1)) <== ACT
//*
//* EXTRACT CMM RECORDS FROM SMF
//*
//EXTRACT1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DISP=SHR,DSN=smf.dump.data
//SORTOUT DD DSN=DTS.R72.ONLY.CMMSMF,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(100,100)),UNIT=(SYSDA,5)
//SYSIN DD *
OPTION VLSCMP
SORT FIELDS=COPY
INCLUDE COND=(6,1,CH,EQ,X'C9',AND,
109,4,CH,EQ,C'SRH',AND,
41,8,CH,EQ,C'CMM ',AND,
53,8,CH,EQ,C'MESSAGE ')
/*
//EXTRACT2 EXEC PGM=CMMSMFDP,PARM='SMFRID(201)',REGION=0M
//STEPLIB DD DISP=SHR,DSN=DTS.R72.LOADLIB
//SYSPRINT DD SYSOUT=*
//SMFFILE DD DISP=SHR,DSN=DTS.R72.ONLY.CMMSMF
//CMMEXCL DD DISP=(NEW,CATLG),DSN=DTS.R72.CMMEXCL,
// LRECL=50,UNIT=SYSALLDA,SPACE=(CYL,(10,10)),
// DCB=BLKSIZE=27900,RECFM=FB
//*DISCARD DD DISP=(NEW,CATLG),DSN=DTS.R72.CMMDISC, <== ACT
//* LRECL=500,UNIT=SYSALLDA,SPACE=(CYL,(10,10)), <== ACT
//* DCB=BLKSIZE=27000,RECFM=FB <== ACT
//PROGI DD DISP=SHR,DSN=DTS.R72.PROGI
//*
//* SORT CMMEXCL RECORDS
//*
//SORTEXCL EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DISP=SHR,DSN=DTS.R72.CMMEXCL
//SORTOUT DD DISP=SHR,DSN=DTS.R72.CMMEXCL
//SYSIN DD *
SORT FIELDS=(1,44,CH,A,45,6,CH,A)
/*
//