//WALJO11E JOB (55800000), JOB00133 // 'ENDEVOR JOB',MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, // NOTIFY=&SYSUID //*------------------------------------------------------------------- // SET WORKLIB=WALJO11.PARMS // SET CSIQCLS0=CAPRD.NDVR.PROD.CATSNDVR.CSIQCLS0 // SET NDVR#HLQ=CAPRD.NDVR.V180CA06 //*------------------------------------------------------------------- //* Report processor usage //* Outputs: //* &WORKLIB(PRC#ENV1) WALJO11.PARMS(PRC#ENV1) //* &WORKLIB(PRC#ENV2) WALJO11.PARMS(PRC#ENV2) //* &WORKLIB(PRC#GRPS) WALJO11.PARMS(PRC#GRPS) //* &WORKLIB(PROCUSED) WALJO11.PARMS(PROCUSED) //* &WORKLIB(NOTUSED)) WALJO11.PARMS(NOTUSED)) //*------------------------------------------------------------------- //* STEP 1 -- EXECUTE CSV UTILITY to Gather Environment info //*------------------------------------------------------------------- //STEP1 EXEC PGM=NDVRC1,REGION=4M, // PARM='BC1PCSV0' //STEPLIB DD DISP=SHR,DSN=&NDVR#HLQ..CSIQAUTU SCMM@LIB // DD DISP=SHR,DSN=&NDVR#HLQ..CSIQAUTH SCMM@LIB // DD DISP=SHR,DSN=&NDVR#HLQ..CSIQLOAD SCMM@LIB //CONLIB DD DISP=SHR,DSN=&NDVR#HLQ..CSIQLOAD SCMM@LIB //BSTIPT01 DD * LIST ENVIRONMENT '*' TO DDNAME 'EXTRACTS' OPTIONS RETURN ALL. //EXTRACTS DD DSN=&&EXTRACTS, // DCB=(RECFM=FB,LRECL=1800,BLKSIZE=9000,DSORG=PS), // DISP=(NEW,PASS), // SPACE=(TRK,(5,1),RLSE) //C1MSGS1 DD SYSOUT=* //BSTERR DD SYSOUT=* //*------ //WORKLIB DD DSN=&WORKLIB, // DCB=(RECFM=FB,LRECL=080,BLKSIZE=0,DSORG=PO), // DISP=(MOD,CATLG,KEEP),DSNTYPE=LIBRARY, // SPACE=(TRK,(5,5),RLSE) //*-------------------------------------------------------------------- //*------ Reformat Envionments into CSV requests for Procesor Grp info- //*-------------------------------------------------------------------- //STEP1A EXEC PGM=IRXJCL,PARM='ENBPIU00 A' //TABLE DD DSN=&&EXTRACTS,DISP=(OLD,DELETE) //SYSEXEC DD DISP=SHR,DSN=&CSIQCLS0 //MODEL1 DD * LIST PROCESSOR GROUP '*' FROM ENVIRONMENT '&ENV_NAME' STAGE '*' SYSTEM '*' TYPE '*' OPTIONS NOSEARCH RETURN ALL TO FILE CSVEXTR . //MODEL2 DD * LIST ELEMENT '*' FROM ENVIRONMENT &ENV_NAME SYSTEM '*' SUBSYSTEM '*' TYPE 'PROCESS' STAGE NUMBER '*' TO DDNAME 'LISTELMS' OPTIONS SEARCH RETURN FIRST PATH PHYSICAL . //OPTIONS DD * CONTROL STATEMENTS $NumberModelsAndTblouts= 2 //SYSTSPRT DD SYSOUT=* //TBLOUT1 DD DISP=SHR,DSN=&WORKLIB(PRC#ENV1) //TBLOUT2 DD DISP=SHR,DSN=&WORKLIB(PRC#ENV2) //* //*------------------------------------------------------------------- //* STEP 2 -- EXECUTE CSV UTILITY to collect processor group info //*------------------------------------------------------------------- //STEP2 EXEC PGM=NDVRC1,REGION=4M, // PARM='BC1PCSV0' //STEPLIB DD DISP=SHR,DSN=&NDVR#HLQ..CSIQAUTU SCMM@LIB // DD DISP=SHR,DSN=&NDVR#HLQ..CSIQAUTH SCMM@LIB // DD DISP=SHR,DSN=&NDVR#HLQ..CSIQLOAD SCMM@LIB //CONLIB DD DISP=SHR,DSN=&NDVR#HLQ..CSIQLOAD SCMM@LIB //BSTIPT01 DD DISP=SHR,DSN=&WORKLIB(PRC#ENV1) //CSVEXTR DD DSN=&&CSVFILE, // DCB=(RECFM=VB,LRECL=4092,BLKSIZE=4096,DSORG=PS), // DISP=(MOD,PASS), // SPACE=(TRK,(5,5),RLSE) //C1MSGS1 DD SYSOUT=* //BSTERR DD SYSOUT=* //*-------------------------------------------------------------------- //*------ Analyze Processor Group CSV data //*-------------------------------------------------------------------- //STEP2A EXEC PGM=IRXJCL,PARM='ENBPIU00 PARMLIST' //TABLE DD DSN=&&CSVFILE,DISP=(OLD,DELETE) //PARMLIST DD * NOTHING NOTHING OPTIONS0 0 NOTHING NOTHING OPTIONS1 A HEADING TBLOUT1 NOTHING 1 MODEL TBLOUT2 OPTIONS2 A IAMUSED PROCUSED OPTIONS3 A //HEADING DD * *Processr Environ- S System-- Type---- PrcGrp-- ProcType //MODEL DD * &PROC_NAME &ENV_NAME &STG_ID &SYS_NAME &TYPE_NAME &PROC_GRP_NAME &PROC_TYPE //OPTIONS0 DD * CONTROL STATEMENTS Processor. = '' ProcessorUsed. = 'N' $nomessages = 'Y' /* Bypass messages Y/N */ //OPTIONS1 DD * CONTROL STATEMENTS if PROC_NAME = '*NOPROC*' Then $SkipRow = 'Y' entry= ENV_NAME SYS_NAME TYPE_NAME STG_ID PROC_TYPE PROC_GRP_NAME entry = Translate(entry,'_',' ') PROC_NAME = Strip(PROC_NAME) ; If Wordpos(entry,Processor.PROC_NAME) = 0 then, + Processor.PROC_NAME = Processor.PROC_NAME entry ; ProcessorUsed.PROC_NAME = 'Y' $SkipRow = 'Y' //IAMUSED DD * CONTROL STATEMENTS ProcessorUsed.&PROC_NAME = 'Y' //PROCUSED DD DISP=SHR,DSN=&WORKLIB(PROCUSED) //NOTHING DD DUMMY CONTROL STATEMENTS //OPTIONS2 DD * CONTROL STATEMENTS PROC_NAME = Strip(PROC_NAME) ; if PROC_NAME = '*NOPROC*' Then $SkipRow = 'Y' ProcessorEntries = Processor.PROC_NAME ; Processor.PROC_NAME = '' ; If ProcessorEntries = '' then $SkipRow = 'Y' PROC_NAME = Left(PROC_NAME,8) ; Do ent# = 1 to Words(ProcessorEntries); + entry= Word(ProcessorEntries,ent#) ; + entry = Translate(entry,' ','_') ; + ENV_NAME = Left(Word(entry,1),8); + SYS_NAME = Left(Word(entry,2),8); + TYPE_NAME = Left(Word(entry,3),8); + STG_ID = Left(Word(entry,4),1); + PROC_TYPE = Left(Word(entry,5),8); + PROC_GRP_NAME = Left(Word(entry,6),8); + x = BuildFromModel(MODEL); + Processor.PROC_NAME = '' ;+ End; $SkipRow = 'Y' //OPTIONS3 DD * CONTROL STATEMENTS PROC_NAME = Strip(PROC_NAME); If PROC_NAME = '*NOPROC*' then $SkipRow = 'Y' ; IsProcessorUsed = ProcessorUsed.PROC_NAME If IsProcessorUsed = 'Y' then x = BuildFromModel(IAMUSED) ProcessorUsed.PROC_NAME = 'done' $SkipRow = 'Y' //SYSTSPRT DD SYSOUT=* //NOTHING DD DUMMY CONTROL STATEMENTS //SYSEXEC DD DISP=SHR,DSN=&CSIQCLS0 //TBLOUT1 DD DSN=&&TBLOUT1,DISP=(NEW,PASS), // UNIT=SYSALLDA,SPACE=(CYL,(1,5),RLSE), // DCB=(RECFM=FB,LRECL=080,BLKSIZE=0,DSORG=PS) //TBLOUT2 DD DSN=&&TBLOUT2,DISP=(NEW,PASS), // UNIT=SYSALLDA,SPACE=(CYL,(1,5),RLSE), // DCB=(RECFM=FB,LRECL=080,BLKSIZE=0,DSORG=PS) //********************************************************************* //* SORT DATA * //********************************************************************* //SORT EXEC PGM=SORT //SYSPRT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SORTIN DD DSN=&&TBLOUT2,DISP=(OLD,PASS,DELETE) //SORTOUT DD DSN=&&TBLOUT2A,DISP=(NEW,PASS), // UNIT=SYSALLDA,SPACE=(CYL,(1,5),RLSE), // DCB=(RECFM=FB,LRECL=080,BLKSIZE=0,DSORG=PS) //SYSIN DD * SORT FIELDS=(01,80,CH,A) //* //*-------------------------------------------------------------------- //SAVEMBR EXEC PGM=IEBGENER,REGION=1024K //SYSPRINT DD SYSOUT=* MESSAGES //SYSUT1 DD DSN=&&TBLOUT1,DISP=(OLD,PASS,DELETE) // DD DSN=&&TBLOUT2A,DISP=(OLD,PASS,DELETE) //SYSIN DD DUMMY CONTROL STATEMENTS //SYSUDUMP DD SYSOUT=* //SYSUT2 DD DISP=SHR,DSN=&WORKLIB(PRC#GRPS) //* //*-------------------------------------------------------------------- //*------ Report UnUsed processors. //*------------------------------------------------------------------- //* STEP 3 -- EXECUTE CSV UTILITY //*------------------------------------------------------------------- //STEP3 EXEC PGM=NDVRC1,REGION=4M, // PARM='BC1PCSV0' //STEPLIB DD DISP=SHR,DSN=&NDVR#HLQ..CSIQAUTU // DD DISP=SHR,DSN=&NDVR#HLQ..CSIQAUTH // DD DISP=SHR,DSN=&NDVR#HLQ..CSIQLOAD //BSTIPT01 DD DISP=SHR,DSN=&WORKLIB(PRC#ENV2) //LISTELMS DD DSN=&&LISTELMS, // DCB=(RECFM=FB,LRECL=1800,BLKSIZE=9000,DSORG=PS), // DISP=(MOD,PASS), // SPACE=(CYL,(5,5),RLSE) //C1MSGS1 DD SYSOUT=* //BSTERR DD SYSOUT=* //*-------------------------------------------------------------------- //*------ Report UnUsed processors. //*-------------------------------------------------------------------- //STEP3A EXEC PGM=IRXJCL,PARM='ENBPIU00 PARMLIST' //TABLE DD DSN=&&LISTELMS,DISP=(OLD,DELETE) //PARMLIST DD * NOTHING NOTHING OPTIONS0 0 HEADING NOTUSED PROCUSED 1 MODEL NOTUSED OPTIONS2 A //OPTIONS0 DD * ProcessorUsed. = 'N' $nomessages = 'Y' /* Bypass messages Y/N */ //PROCUSED DD DISP=SHR,DSN=&WORKLIB(PROCUSED) //HEADING DD * *Element- Environ- System-- SubSystm Type---- St Msg------ //MODEL DD * &ELM_NAME &ENV_NAME &SYS_NAME &SBS_NAME &TYPE_NAME &STG_ID not used //OPTIONS2 DD * CONTROL STATEMENTS element = Strip(ELM_NAME) If Words(element) > 1 then $SkipRow = 'Y' IsProcessorUsed = ProcessorUsed.element If IsProcessorUsed /= 'N' then $SkipRow = 'Y' ProcessorUsed.element = 'done' * Format outputs ELM_NAME = Left(ELM_NAME,8) ENV_NAME = Left(ENV_NAME,8) SYS_NAME = Left(SYS_NAME,8) SBS_NAME = Left(SBS_NAME,8) TYPE_NAME = Left(TYPE_NAME,8) //SYSTSPRT DD SYSOUT=* //NOTHING DD DUMMY CONTROL STATEMENTS //SYSEXEC DD DISP=SHR,DSN=&CSIQCLS0 //TBLOUT DD SYSOUT=* //NOTUSED DD DISP=SHR,DSN=&WORKLIB(NOTUSED) //*--------------------------------------------------------------------