---------------------------------------------------------- DEFINE REQUIRED GDG DATASETS PRIOR TO RUNNING SMF PROCESS: ---------------------------------------------------------- //DEFNEGDG JOB ... <--- Supply a valid jobcard //*-------------------------------------------------------------------- //* T E C H N I C A L S E R V I C E S //*-------------------------------------------------------------------- //* //* REFER TO: //* //* Change HLQ to your SMF DSN HLQ //* Change &sysname. to your SYSNAME //* //*-------------------------------------------------------------------- //* DEFINE GDG DATASETS //*-------------------------------------------------------------------- //DEFNEGDG EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * Each GDG entry should default to NOEMPTY DEL 'HLQ.SMF.&sysname..DAILY.*' DEL 'HLQ.SMF.&sysname..DAILY' DEF GDG (NAME(HLQ.SMF.&sysname..DAILY) LIMIT(015) SCRATCH) DEL 'HLQ.SMF.&sysname..DAILY.COPY.*' DEL 'HLQ.SMF.&sysname..DAILY.COPY' DEF GDG (NAME(HLQ.SMF.&sysname..DAILY.COPY) LIMIT(003) SCRATCH) DEL 'HLQ.SMF.&sysname..WEEKLY.*' DEL 'HLQ.SMF.&sysname..WEEKLY' DEF GDG (NAME(HLQ.SMF.&sysname..WEEKLY) LIMIT(005) SCRATCH) DEL 'HLQ.SMF.&sysname..MONTHLY.*' DEL 'HLQ.SMF.&sysname..MONTHLY' DEF GDG (NAME(HLQ.SMF.&sysname..MONTHLY) LIMIT(019) SCRATCH) DEL 'HLQ.SMF.&sysname..SAVEWORK.*' DEL 'HLQ.SMF.&sysname..SAVEWORK' DEF GDG (NAME(HLQ.SMF.&sysname..SAVEWORK) LIMIT(100) SCRATCH) JCL THAT's NICE TO HAVE ON HAND DURING PROBLEM RESOLUTION: //SMFSCAN JOB ... <--- Supply a valid jobcard //*-------------------------------------------------------------------- //* T E C H N I C A L S E R V I C E S //*-------------------------------------------------------------------- //* //* REFER TO: //* //*-------------------------------------------------------------------- //* EXTRACT SPECIFIC SMF RECORDS BASED ON DATE AND/OR TYPE //*-------------------------------------------------------------------- //SMFSCAN EXEC PGM=IFASMFDP,REGION=4M,TIME=1440 //SYSPRINT DD SYSOUT=* //DUMPIN DD DSN=HLQ.SMF.&sysname..DAILY(0),DISP=SHR //DUMPOUT DD DSN=, // DISP=(,CATLG,DELETE),EXPDT=99000, // DCB=(LRECL=32760,RECFM=VBS,BLKSIZE=27998), // UNIT=VTS,BUFNO=24 INDD(DUMPIN,OPTIONS(DUMP)) OUTDD(DUMPOUT,TYPE(0:255)) DATE(2002000,2009365) START(0000) END(2400) //OTHRSAMP DD * OUTDD(DUMPOUT,TYPE(04,05,14,15,21,30,34,35,40,70,241,255)) ----------------------------------------------------------- R U N T I M E P R O C S , J C L , A N D S Y S I N ----------------------------------------------------------- SMFWORK PROC: //SMFWORK PROC MAN=, MAN DATASET NUMBER AND +X GDG NUMBER //*-------------------------------------------------------------------- //* DUMP SMF DATASET TO WORK DATASET //* //* ALLOCSMF - ALLOCATE SMF WORK DATASET. //* SMFDUMP - DUMP SMF DATASET TO WORK DATASET. //* SAVESMF - COPY WORK DATASET TO DAILY SAVE GDG DATASET //* CLEARWRK - IF SMFDUMP UNSUCCESSFUL, CLEAR THE WORK DATASET //* //*-------------------------------------------------------------------- //* ALLOCATE AND/OR CLEAR SMF WORK DATASET //*-------------------------------------------------------------------- //ALLOCSMF EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD DUMMY,DCB=(LRECL=32760,RECFM=VBS,BLKSIZE=27998) //SYSUT2 DD DSN=HLQ.SMF.&sysname..WORK.MAN&MAN,DISP=(MOD,CATLG), // DCB=(LRECL=32760,RECFM=VBS,BLKSIZE=27998), // UNIT=VTS,EXPDT=99000 //*------------------------------------------------------------------- //* DUMP SMF MAN DATA TO WORK DATASET //* //* RET CODES //* --------- --------------------------- //* 00 SUCCESFUL EXECUTION //* 04 WARNING - MIGHT BE OK - SEE OUTPUT/MESSAGES //* 08 EMPTY OR ACTIVE. OK EITHER WAY. //* //*------------------------------------------------------------------- //SMFDUMP EXEC PGM=IFASMFDP,REGION=2M //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //DUMPIN DD DSN=SYS1.MAN.&sysname..#&MAN,DISP=SHR //DUMPOUT DD DSN=HLQ.SMF.&sysname..WORK.MAN&MAN,DISP=(SHR,PASS) //*------------------------------------------------------------------- //* SAVE DUMPED SMF DATA REGARDLESS OF CONDITION CODE //*------------------------------------------------------------------- //SMFSAVE EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD DSN=HLQ.SMF.&sysname..WORK.MAN&MAN,DISP=(SHR,PASS) //SYSUT2 DD DSN=HLQ.SMF.&sysname..SAVEWORK(+&MAN),DISP=(,CATLG), // DCB=(LRECL=32760,RECFM=VBS,BLKSIZE=27998), // UNIT=VTS,EXPDT=99000 //*------------------------------------------------------------------- //* IF RC > 4 THEN CLEAR THE OUTPUT WORK DATASET //*------------------------------------------------------------------- //IF IF (SMFDUMP.RC > 4) THEN //CLEARWRK EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD DUMMY,DCB=(LRECL=32760,RECFM=VBS,BLKSIZE=27998) //SYSUT2 DD DSN=HLQ.SMF.&sysname..WORK.MAN&MAN,DISP=SHR //ENDIF ENDIF //*------------------------------------------------------------------- //* END OF SMFWORK PROC //*------------------------------------------------------------------- SMFDUMP PROC: //SMFDUMP PROC // D SMF //*-------------------------------------------------------------------- //* SMF DUMP PROC //*-------------------------------------------------------------------- //* DUMP SMF MAN DATASETS TO THEIR RESPECTIVE WORK DATASETS //*-------------------------------------------------------------------- //DUMPMAN1 EXEC SMFWORK,MAN=1, DUMP MAN1 TO WORK DATASET //DUMPMAN2 EXEC SMFWORK,MAN=2 DUMP MAN2 TO WORK DATASET //DUMPMAN3 EXEC SMFWORK,MAN=3 DUMP MAN3 TO WORK DATASET //DUMPMAN4 EXEC SMFWORK,MAN=4 DUMP MAN4 TO WORK DATASET //*-------------------------------------------------------------------- //* SORT WORK MAN DATASETS AND MOD TO DAILY GDG DATASET (0) //*-------------------------------------------------------------------- //SORTSMF EXEC PGM=IERRCO00,REGION=7M //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SORTIN DD DSN=HLQ.SMF.&sysname..WORK.MAN1,DISP=SHR // DD DSN=HLQ.SMF.&sysname..WORK.MAN2,DISP=SHR, // UNIT=AFF=SORTIN // DD DSN=HLQ.SMF.&sysname..WORK.MAN3,DISP=SHR, // UNIT=AFF=SORTIN // DD DSN=HLQ.SMF.&sysname..WORK.MAN4,DISP=SHR, // UNIT=AFF=SORTIN //SORTOUT DD DSN=HLQ.SMF.&sysname..DAILY(0),DISP=MOD,EXPDT=99000 //SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(150,50)) //SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(150,50)) //SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(150,50)) //SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,(150,50)) //* SORT SEQUENCE RELATIVE TO 1 //* 11,4 = SMF DATE //* 7,4 = SMF TIME //* 15,4 = SYSID //* 6,1 = SMF RECORD TYPE //* SUM FIELDS=NONE - DROP DUPLICATES //SYSIN DD DSN=HLQ.SMF.SYSIN(SMFSORT),DISP=SHR //*-------------------------------------------------------------------- //* CLEAN UP SMF WORK DATASETS //*-------------------------------------------------------------------- //CLEANUP EXEC PGM=IEFBR14 //SMFWORK1 DD DSN=HLQ.SMF.&sysname..WORK.MAN1,DISP=(SHR,DELETE) //SMFWORK2 DD DSN=HLQ.SMF.&sysname..WORK.MAN2,DISP=(SHR,DELETE) //SMFWORK3 DD DSN=HLQ.SMF.&sysname..WORK.MAN3,DISP=(SHR,DELETE) //SMFWORK4 DD DSN=HLQ.SMF.&sysname..WORK.MAN4,DISP=(SHR,DELETE) //*------------------------------------------------------------------- //* END OF SMFDUMP PROC //*------------------------------------------------------------------- SMFSWTCH PROC: //SMFSWTCH PROC //*-------------------------------------------------------------------- //* SWITCH SMF DATASET //*-------------------------------------------------------------------- //SMFSWTCH EXEC PGM=IEFBR14 // I SMF //*------------------------------------------------------------------- //* END OF SMFSWTCH PROC //*------------------------------------------------------------------- SMFDAILY PROC: //SMFDAILY PROC //*-------------------------------------------------------------------- //* //* COPY DAILY SMF DATA TO WEEKLY AND MONTHLY DATASETS //* //* STEPNAME DESCRIPTION... //* ------------------------------------------------------------ //* DAILYCPY = COPY CURRENT SMF DAILY(0) DATASET TO COPY DSN. //* CREATE - CREATE NEW ...SMF.DAILY(+1) DATASET. //* WEEKLY - COPY ...SMF.DAILY(0) TO ...WEEKLY(0) DATASET. //* MONTHLY - COPY ...SMF.DAILY(0) TO ...MONTHLY(0) DATASET. //* //*-------------------------------------------------------------------- //* COPY DAILY SMF DATA TO INTERMEDIATE FILE //*-------------------------------------------------------------------- //DAILYCPY EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD DSN=HLQ.SMF.&sysname..DAILY(0),DISP=SHR //SYSUT2 DD DSN=HLQ.SMF.&sysname..DAILY.COPY(+1), // DISP=(,CATLG,DELETE),UNIT=VTS,LABEL=EXPDT=99000 //*-------------------------------------------------------------------- //* CREATE NEW DAILY SMF GDG DATASET FOR THIS LPAR //*-------------------------------------------------------------------- //SMFDAILY EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD DUMMY,DCB=(LRECL=32760,RECFM=VBS,BLKSIZE=27998) //SYSUT2 DD DSN=HLQ.SMF.&sysname..DAILY(+1),DISP=(,CATLG), // DCB=(LRECL=32760,RECFM=VBS,BLKSIZE=27998), // UNIT=VTS,EXPDT=99000 //*-------------------------------------------------------------------- //* APPEND SMF DAILY DATA TO WEEKLY TAPE //*-------------------------------------------------------------------- //WEEKLY EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD DSN=HLQ.SMF.&sysname..DAILY.COPY(+1),DISP=SHR, // EXPDT=99000 //SYSUT2 DD DSN=HLQ.SMF.&sysname..WEEKLY(0),DISP=MOD,EXPDT=99000 //*-------------------------------------------------------------------- //* APPEND SMF DAILY DATA TO MONTHLY TAPE //*-------------------------------------------------------------------- //MONTHLY EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD DSN=HLQ.SMF.&sysname..DAILY.COPY(+1),DISP=SHR, // EXPDT=99000 //SYSUT2 DD DSN=HLQ.SMF.&sysname..MONTHLY(0),DISP=MOD,EXPDT=99000 //*------------------------------------------------------------------- //* END OF SMFDAILY PROC //*------------------------------------------------------------------- SMFWEKLY PROC: //SMFWEKLY PROC //*-------------------------------------------------------------------- //* ALLOCATE WEEKLY SMF DATASET //*-------------------------------------------------------------------- //SMFWEKLY EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD DUMMY,DCB=(LRECL=32760,RECFM=VBS,BLKSIZE=27998) //SYSUT2 DD DSN=HLQ.SMF.&sysname..WEEKLY(+1),DISP=(,CATLG), // DCB=(LRECL=32760,RECFM=VBS,BLKSIZE=27998), // UNIT=VTS,EXPDT=99000,FREE=CLOSE //*------------------------------------------------------------------- //* END OF SMFWEKLY PROC //*------------------------------------------------------------------- SMFMTHLY PROC: //SMFMTHLY PROC //*-------------------------------------------------------------------- //* ALLOCATE MONTHLY SMF DATASET //*-------------------------------------------------------------------- //SMFMTHLY EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD DUMMY,DCB=(LRECL=32760,RECFM=VBS,BLKSIZE=27998) //SYSUT2 DD DSN=HLQ.SMF.&sysname..MONTHLY(+1),DISP=(,CATLG), // DCB=(LRECL=32760,RECFM=VBS,BLKSIZE=27998), // UNIT=VTS,EXPDT=99000,FREE=CLOSE //*------------------------------------------------------------------- //* END OF SMFMTHLY PROC //*------------------------------------------------------------------- ...SYSIN(SMFSORT): - SMFDUMP STC requires this as input. SORT FIELDS=(11,4,PD,A,7,4,BI,A,15,4,CH,A,6,1,BI,A) OPTION VLSHRT END SMFSWTCH JCL: //SMFSWTCH JOB ... <--- Supply a valid jobcard //*-------------------------------------------------------------------- //* T E C H N I C A L S E R V I C E S //*-------------------------------------------------------------------- //* //* REFER TO: SYS2.JOBLIB(SMFSWTCH) //* //*-------------------------------------------------------------------- //SMFDAILY EXEC SMFSWTCH SMFDAILY JCL: //SMFDAILY JOB ... <--- Supply a valid jobcard //*-------------------------------------------------------------------- //* T E C H N I C A L S E R V I C E S //*-------------------------------------------------------------------- //* //* REFER TO: SYS2.JOBLIB(SMFDAILY) //* //*-------------------------------------------------------------------- //SMFDAILY EXEC SMFDAILY,SYSNAME= <--- Supply your SYSNAME SMFWEKLY JCL: //SMFWEKLY JOB ... <--- Supply a valid jobcard //*-------------------------------------------------------------------- //* T E C H N I C A L S E R V I C E S //*-------------------------------------------------------------------- //* //* REFER TO: SYS2.JOBLIB(SMFWEKLY) //* //*-------------------------------------------------------------------- //SMFWEKLY EXEC SMFWEKLY,SYSNAME= <--- Supply your sysname SMFMTHLY JCL: //SMFMTHLY JOB ... <--- Supply a valid jobcard //*-------------------------------------------------------------------- //* T E C H N I C A L S E R V I C E S //*-------------------------------------------------------------------- //* //* REFER TO: SYS2.JOBLIB(SMFMTHLY) //* //*-------------------------------------------------------------------- //SMFMTHLY EXEC SMFMTHLY,SYSNAME= <--- Supply your sysname