Sample SMF84 Report program
This appendix contains sample code for an SMF84 report program that helps to collect the SMF record 84 subtype 21 and generate two different reports that are based on user PARM.
 
Copyright license and permission to copy: This appendix contains a sample application program in source language that illustrates programming techniques. You might copy, modify, and distribute this sample program in any form without payment to IBM, for the purposes of developing, using, marketing, or distributing application programs conforming to the application programming interface for the operating platform for which the sample program is written. This example has not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of this program.
 
Source code of SMF84RPT program
The SMF84RPT program is controlled by PARM on the EXEC card. The user can select the report to be generated by using one of the following parameters:
•MEM: Indicates that the program generates a report with all memory that is used by JES2 for each interval.
•RSU: Indicates that the program generates a report with all resource usage by JES2 for each interval that is available on SMF records.
The input to program SMF84RPT is the SMF dump data set that is generated by IFASMFDx program.
The program writes output to two data sets: a SYSOUT with the report generated and a SYSPRINT with program messages.
An example of JCL statements that are required to run the SMF84RPT program to produce report from JES2 SMF84 records is shown in Example C-1. This sample is showing an execution that uses the MEM option on EXEC PARM.
Example C-1 Sample JCL to run the SMF84RPT program to generate a MEM usage report
//SMF84JOB JOB (),'SMF84 MEM REPORT',CLASS=B,MSGCLASS=X,DSENQSHR=ALLOW,
// MSGLEVEL=(1,1),REGION=0M,NOTIFY=&SYSUID
//*
//STEP01 EXEC PGM=SMF84RPT,PARM='MEM'
//STEPLIB DD DSN=your-load-library,DISP=SHR
//SMFOUT DD SYSOUT=*
//SMFPRINT DD SYSOUT=*
//SMFIN DD DISP=SHR,DSN=your-input-smfdump-dataset
An example of a Memory Usage report that is produced by SMF84RPT when the user selects the MEM option on EXEC PARM parameter is shown in Example C-2. The report is generated to all intervals that are collected from the input SMF data set that is provided to program.
Example C-2 Sample of MEM usage report generated by SMF84RPT program
1SMF-DATE SMF-TIME Z/VERSION SYSID JES MEM_NAME MEM_REGION MEM_USE MEM_LOW MEM_HIGH MEM_AVG
---------- -------- --------- ----- ---- ------------ ----------- ----------- ----------- ----------- -----------
2018/06/09 00:00:15 SP7.2.3 SC74 JES2 <16M USER 9.192MB 819.200KB 819.200KB 819.200KB 819.200KB
<16M SYSTEM 9.192MB 409.600KB 409.600KB 409.600KB 409.600KB
>16M USER 1.605GB 847.164MB 847.164MB 847.164MB 847.164MB
>16M SYSTEM 1.605GB 12.632MB 12.632MB 12.632MB 12.632MB
>2G PRIVATE 16.383TB 856.064MB 856.064MB 856.064MB 856.064MB
SMF-DATE SMF-TIME Z/VERSION SYSID JES MEM_NAME MEM_REGION MEM_USE MEM_LOW MEM_HIGH MEM_AVG
---------- -------- --------- ----- ---- ------------ ----------- ----------- ----------- ----------- -----------
2018/06/09 01:00:15 SP7.2.3 SC74 JES2 <16M USER 9.192MB 819.200KB 819.200KB 819.200KB 819.200KB
<16M SYSTEM 9.192MB 409.600KB 409.600KB 413.696KB 409.601KB
>16M USER 1.605GB 847.164MB 847.164MB 847.164MB 847.164MB
>16M SYSTEM 1.605GB 12.632MB 12.632MB 12.660MB 12.632MB
>2G PRIVATE 16.383TB 856.064MB 856.064MB 856.064MB 856.064MB
SMF-DATE SMF-TIME Z/VERSION SYSID JES MEM_NAME MEM_REGION MEM_USE MEM_LOW MEM_HIGH MEM_AVG
---------- -------- --------- ----- ---- ------------ ----------- ----------- ----------- ----------- -----------
2018/06/09 02:00:15 SP7.2.3 SC74 JES2 <16M USER 9.192MB 819.200KB 819.200KB 819.200KB 819.200KB
<16M SYSTEM 9.192MB 409.600KB 409.600KB 409.600KB 409.600KB
>16M USER 1.605GB 847.164MB 847.164MB 847.164MB 847.164MB
>16M SYSTEM 1.605GB 12.632MB 12.632MB 12.632MB 12.632MB
>2G PRIVATE 16.383TB 856.064MB 856.064MB 856.064MB 856.064MB
SMF-DATE SMF-TIME Z/VERSION SYSID JES MEM_NAME MEM_REGION MEM_USE MEM_LOW MEM_HIGH MEM_AVG
---------- -------- --------- ----- ---- ------------ ----------- ----------- ----------- ----------- -----------
2018/06/09 03:00:15 SP7.2.3 SC74 JES2 <16M USER 9.192MB 819.200KB 819.200KB 819.200KB 819.200KB
<16M SYSTEM 9.192MB 409.600KB 409.600KB 409.600KB 409.600KB
>16M USER 1.605GB 847.164MB 847.164MB 847.164MB 847.164MB
>16M SYSTEM 1.605GB 12.632MB 12.632MB 12.632MB 12.632MB
>2G PRIVATE 16.383TB 856.064MB 856.064MB 856.064MB 856.064MB
SMF-DATE SMF-TIME Z/VERSION SYSID JES MEM_NAME MEM_REGION MEM_USE MEM_LOW MEM_HIGH MEM_AVG
---------- -------- --------- ----- ---- ------------ ----------- ----------- ----------- ----------- -----------
2018/06/09 04:00:15 SP7.2.3 SC74 JES2 <16M USER 9.192MB 819.200KB 819.200KB 819.200KB 819.200KB
<16M SYSTEM 9.192MB 409.600KB 409.600KB 409.600KB 409.600KB
>16M USER 1.605GB 847.164MB 847.164MB 847.164MB 847.164MB
>16M SYSTEM 1.605GB 12.632MB 12.632MB 12.632MB 12.632MB
>2G PRIVATE 16.383TB 856.064MB 856.064MB 856.064MB 856.064MB
An example of a Resource Usage report that is generated by SMF84RPT with information about all resources that are used by JES2 on specific time interval is shown in Example C-3.
Example C-3 Sample of Resource usage by JES report generated by SMF84RPT program
1SMF-DATE SMF-TIME Z/VERSION SYSID JES RSU_NAME RSU_LIMIT RSU_INUSE RSU_LOW RSU_HIGH RSU_WARN RSU_OVER RSU_AVG
---------- -------- --------- ----- ---- -------- --------- --------- -------- -------- -------- -------- --------
2018/06/09 00:00:15 SP7.2.3 SC74 JES2 BERT 2100 378 376 378 80% 0 377
BSCB 0 0 0 0 0% 0 0
BUFX 79 0 0 0 80% 0 0
CKVR 50 0 0 1 80% 0 0
CMBS 204 1 1 1 80% 0 1
CMDS 1000 0 0 0 80% 0 0
ICES 33 0 0 0 80% 0 0
JNUM 9999 619 617 619 80% 0 618
JOES 10000 1410 1408 1410 80% 0 1410
JQES 3000 619 617 619 80% 0 618
LBUF 47 0 0 0 80% 0 0
NHBS 100 0 0 0 80% 0 0
SMFB 51 0 0 0 80% 0 0
TBUF 104 0 0 0 0% 0 0
TGS 40017 8944 8942 8944 80% 0 8943
TTAB 3 0 0 0 80% 0 0
VTMB 0 0 0 0 0% 0 0
ZJC 1000 44 44 44 80% 0 44
SMF-DATE SMF-TIME Z/VERSION SYSID JES RSU_NAME RSU_LIMIT RSU_INUSE RSU_LOW RSU_HIGH RSU_WARN RSU_OVER RSU_AVG
---------- -------- --------- ----- ---- -------- --------- --------- -------- -------- -------- -------- --------
2018/06/09 01:00:15 SP7.2.3 SC74 JES2 BERT 2100 378 376 378 80% 0 377
BSCB 0 0 0 0 0% 0 0
BUFX 79 0 0 0 80% 0 0
CKVR 50 1 0 1 80% 0 0
CMBS 204 1 1 1 80% 0 1
CMDS 1000 0 0 0 80% 0 0
ICES 33 0 0 0 80% 0 0
JNUM 9999 621 619 621 80% 0 620
JOES 10000 1412 1410 1412 80% 0 1412
JQES 3000 621 619 621 80% 0 620
LBUF 47 0 0 0 80% 0 0
NHBS 100 0 0 0 80% 0 0
SMFB 51 0 0 0 80% 0 0
TBUF 104 0 0 0 0% 0 0
TGS 40017 8946 8944 8946 80% 0 8945
TTAB 3 0 0 0 80% 0 0
VTMB 0 0 0 0 0% 0 0
ZJC 1000 44 44 44 80% 0 44
SMF-DATE SMF-TIME Z/VERSION SYSID JES RSU_NAME RSU_LIMIT RSU_INUSE RSU_LOW RSU_HIGH RSU_WARN RSU_OVER RSU_AVG
---------- -------- --------- ----- ---- -------- --------- --------- -------- -------- -------- -------- --------
2018/06/09 02:00:15 SP7.2.3 SC74 JES2 BERT 2100 378 376 378 80% 0 378
BSCB 0 0 0 0 0% 0 0
BUFX 79 0 0 0 80% 0 0
CKVR 50 1 0 1 80% 0 0
CMBS 204 1 1 1 80% 0 1
CMDS 1000 0 0 0 80% 0 0
ICES 33 0 0 0 80% 0 0
JNUM 9999 623 621 623 80% 0 622
JOES 10000 1414 1412 1414 80% 0 1413
JQES 3000 623 621 623 80% 0 622
LBUF 47 0 0 0 80% 0 0
NHBS 100 0 0 0 80% 0 0
SMFB 51 0 0 0 80% 0 0
TBUF 104 0 0 0 0% 0 0
TGS 40017 8950 8946 8950 80% 0 8948
TTAB 3 0 0 0 80% 0 0
VTMB 0 0 0 0 0% 0 0
ZJC 1000 44 44 44 80% 0 44
Source code for the SMF84RPT program that is used to extract the SMF84 Subtype 21 records and create two different reports that are based on user selection on PARM parameter of EXEC JCL card is shown in Example C-4.
Example C-4 Source code of SMF84RPT program
SMF84RPT CSECT 00010000
SMF84RPT RMODE 24 00020000
SMF84RPT AMODE 31 00030000
*/*******************************************************************/* 00031075
*/* THIS PROGRAM IS PART OF JES3 TO JES2 MIGRATION GUIDE REDBOOK */* 00031175
*/* */* 00031275
*/* THE MAIN FUNTION OF THIS PROGRAM IS EXTRACT THE JES2 SMF */* 00031375
*/* RECORD AND GENERATE REPORTS BASED ON USER SELECTION */* 00031475
*/* */* 00031575
*/* THE USER SELECTION IS BASED ON PARM= JCL PARAMENTER */* 00031675
*/* MEM - SPECIFIES THE REPORT GENERATION TO MEMORY USAGE */* 00031775
*/* RSU - SPECIFIES REPORT GENERATION FOR RESOURCE USAGE */* 00031875
*/* */* 00031975
*/* THE REQUIRED DDNAMES ARE: */* 00032075
*/* SMFPRINT - OUTPUT FILE TO PROGRAM PROCESSING MESSAGES */* 00032175
*/* SMFIN - INPUT SMF DATASET */* 00032275
*/* SMFOUT - OUTPUT FILE WITH REPORT DATA */* 00032375
*/* THIS DATASET HAVE THE LRECL DYNAMICALLY */* 00032475
*/* GENERATED BY PROGRAM BASED ON REPORT SELECTION */* 00032575
*/*******************************************************************/* 00034075
SAVE (14,12) 00040000
LR R12,R15 00050067
LR R2,R1 00060068
USING SMF84RPT,R12 00080067
STORAGE OBTAIN,LENGTH=WORKLEN,LOC=31 00090000
ST R13,4(R1) 00100000
ST R1,8(R13) 00110000
LR R13,R1 00120000
USING WORKAREA,R13 00130000
OPEN (SMFPRINT,(OUTPUT)) 00140068
*/*******************************************************************/* 00140168
*/* VALIDATE THE PARAMETER PASSED BY PARM EXEC - DEFAULT BOTH */* 00140268
*/*******************************************************************/* 00140368
L R2,0(R2) 00140468
LTR R2,R2 00140568
BZ ERROR_NO_PARM 00140668
LH R3,0(R2) 00140770
CH R3,HALF_3 00140870
BNE ERROR_WRONG_PARM 00140968
VALIDATE_KEYWORD_MEM EQU * 00141068
CLC KEYWORD_MEM,2(R2) 00141168
BNE VALIDATE_KEYWORD_RSU 00141268
OI FLAG_REPORT_TYPE,FLAG_REPORT_MEM 00141368
B START_PROCESSING 00141468
VALIDATE_KEYWORD_RSU EQU * 00141568
CLC KEYWORD_RSU,2(R2) 00141668
BNE ERROR_INVALID_PARM 00141768
OI FLAG_REPORT_TYPE,FLAG_REPORT_RSU 00141868
*/*******************************************************************/* 00141968
*/* OPEN THE SYSPRINT FILE AND CALL THE SUBROUTINE TO BUILD REPORT */* 00142068
*/*******************************************************************/* 00142168
START_PROCESSING EQU * 00142268
PERFORM BUILD_REPORT_TABLE,R 00150037
B MAIN_PROCESS 00160001
*/*******************************************************************/* 01230000
*/* SUBROUTINE TO CREATE A TABLE WITH REPORT OPTIONS TO BE PRINTED */* 01240000
*/*******************************************************************/* 01250000
BUILD_REPORT_TABLE EQU * 01260058
LA R1,REPORT_TABLE 01270000
USING REPORT_ENTRY,R1 01280000
LA R15,SMFOUT_RECORD_START 01290000
XC RECORD_LENGTH,RECORD_LENGTH 01300064
NEXT_TABLE_REPORT EQU * 01310000
CLC 0(L'END_TABLE,R1),END_TABLE 01320000
BE END_TABLE_REPORT 01330000
*/*******************************************************************/* 01334265
*/* GET LENGTH OF FIELD AND KEYWORD TO OUTPUT RECORD */* 01334365
*/*******************************************************************/* 01334465
ST R15,REPORT_FIELD_ADDRESS 01340000
XR R0,R0 01350000
XR R14,R14 01351064
IC R0,REPORT_FIELD_LENGTH 01360000
IC R14,REPORT_KEYWORD_LENGTH 01361064
AR R15,R0 01370000
CR R14,R0 01370164
BNL ADD_RECORD_LENGTH 01370264
LR R14,R0 01370364
*/*******************************************************************/* 01370865
*/* VALIDATE THE USABILITY OF FIELD ON OUTPUT RECORD */* 01370965
*/*******************************************************************/* 01371065
ADD_RECORD_LENGTH EQU * 01371165
LA R14,1(R14) 01371265
CLI REPORT_FIELD_INUSE,X'0F' 01371365
BE FIELD_TO_USE 01371465
CLC REPORT_FIELD_INUSE,FLAG_REPORT_TYPE 01371565
BE FIELD_TO_USE 01371665
XC REPORT_FIELD_INUSE,REPORT_FIELD_INUSE 01371765
XR R14,R14 01371865
*/*******************************************************************/* 01371965
*/* ADD FIELD LENGTH TO OUTPUT RECORD LENGTH */* 01372065
*/*******************************************************************/* 01372165
FIELD_TO_USE EQU * 01372265
AH R14,RECORD_LENGTH 01372364
STH R14,RECORD_LENGTH 01373064
LA R1,L'REPORT_TABLE_ENTRY(R1) 01380000
B NEXT_TABLE_REPORT 01400000
END_TABLE_REPORT EQU * 01410000
BR R10 01420058
DROP R1 01430000
*/*******************************************************************/* 01800000
*/* MAIN PROCEDURE TO PROGRAM PROCESSING */* 01810000
*/*******************************************************************/* 01820000
MAIN_PROCESS EQU * 01830000
PERFORM OPEN_FILES,R 01831037
NEXT_SMFIN_RECORD EQU * 01832000
PERFORM GET_SMFIN,R 01840037
*/*******************************************************************/* 01890005
*/* PROCESS THE SMF 84 RECORD SECTIONS */* 01900075
*/*******************************************************************/* 01901005
PROCESS_SUBTYPE EQU * 01902005
ZAP SMFOUT_LINE,PACK_60 01903018
PERFORM PROCESS_MEM_SECTION,R 01904037
PERFORM PROCESS_RSU_SECTION,R 01905037
B NEXT_SMFIN_RECORD 01907005
*/*******************************************************************/* 01908168
*/* SUBROUTINE TO READ AND SELECT THE SMF RECORDS FROM INPUT FILE */* 01908275
*/*******************************************************************/* 01908368
GET_SMFIN EQU * 01908468
GET SMFIN 01908568
LR R2,R1 01908668
ST R2,SMF_RECORD_ADDRESS 01908768
L R15,SMF_RECORD_COUNT 01908868
LA R15,1(R15) 01908968
ST R15,SMF_RECORD_COUNT 01909068
*/*******************************************************************/* 01909168
*/* VALIDATE THE SMF RECORD READ */* 01909275
*/*******************************************************************/* 01909368
USING SMF84HDR,R2 01909468
CLC SMF84RTY,SMF_RECORD_TYPE 01909573
BNE GET_SMFIN 01909668
CLC SMF84STY+1(1),SMF_RECORD_SUBTYPE 01909774
BNE GET_SMFIN 01909868
SMF_RECORD_SELECTED EQU * 01909968
L R15,SMF_RECORD_SELECT 01910068
LA R15,1(R15) 01910168
ST R15,SMF_RECORD_SELECT 01910268
BR R10 01910368
*/*******************************************************************/* 01910405
*/* PROCESS THE INFORMATION FROM SMF RECORD HEADER */* 01911075
*/*******************************************************************/* 01920005
INIT_SMFOUT_HEADER EQU * 01930005
L R2,SMF_RECORD_ADDRESS 01931014
USING SMF84HDR,R2 01940005
MVC SMFOUT_SYSID,SMF84SID 01950005
SMFTIME SMF84TME,SMFOUT_TIME 01960005
SMFDATE SMF84DTE,SMFOUT_DATE 01970005
MVC SMFOUT_JES,=CL4'JES2' 01970109
CLC SMF84SBS,=AL2(SMF84HAS) 01970311
BNE NEXT_SMFIN_RECORD 01970409
LR R9,R2 01970509
A R9,SMF84PRS 01970609
USING SMF84PRO,R9 01970709
MVC SMFOUT_MVSVERS,R84MVSRL 01970810
BR R10 01980005
DROP R2 01990005
DROP R9 02000009
*/*******************************************************************/* 02070000
*/* PROCESS THE INFORMATION FROM SMF 84 MEM SECTION */* 02080075
*/*******************************************************************/* 02090000
PROCESS_MEM_SECTION EQU * 02100001
TM FLAG_REPORT_TYPE,FLAG_REPORT_MEM 02100159
BNOR R10 02100259
PERFORM INIT_SMFOUT_HEADER,R 02100337
L R2,SMF_RECORD_ADDRESS 02100414
USING SMF84HDR,R2 02100513
LR R9,R2 02100605
A R9,SMF84J1O 02100713
USING SMF84JRU,R9 02101005
ICM R3,15,R84J2RMO 02110001
LTR R3,R3 02120000
BZR R10 02130000
XR R4,R4 02131000
ICM R4,3,R84J2RML 02132001
XR R5,R5 02140000
ICM R5,3,R84J2RMN 02150001
LTR R5,R5 02151000
BZR R10 02152000
LA R3,0(R3,R9) 02160005
USING R84MEMJ2,R3 02170001
*/*******************************************************************/* 02180000
*/* EDIT AND PRINT THE INFORMATION FROM SMF 84 MEM SECTION */* 02190075
*/*******************************************************************/* 02200000
NEXT_MEM_SECTION EQU * 02210001
MVC SMFOUT_MEM_NAME,R84MEM_NAME 02211101
LG R1,R84MEM_REGION 02211580
PERFORM STORAGE_CALC,R 02211680
MVC SMFOUT_MEM_REGION_V,EDIT_MASK_DEC 02212085
ED SMFOUT_MEM_REGION_V,DOUBLE+4 02212184
MVC SMFOUT_MEM_REGION_U,0(R15) 02212282
LG R1,R84MEM_USE 02212385
PERFORM STORAGE_CALC,R 02212485
MVC SMFOUT_MEM_USE_V,EDIT_MASK_DEC 02212685
ED SMFOUT_MEM_USE_V,DOUBLE+4 02212785
MVC SMFOUT_MEM_USE_U,0(R15) 02212885
LG R1,R84MEM_LOW 02212985
PERFORM STORAGE_CALC,R 02213085
MVC SMFOUT_MEM_LOW_V,EDIT_MASK_DEC 02213285
ED SMFOUT_MEM_LOW_V,DOUBLE+4 02213385
MVC SMFOUT_MEM_LOW_U,0(R15) 02213485
LG R1,R84MEM_HIGH 02213585
PERFORM STORAGE_CALC,R 02213685
MVC SMFOUT_MEM_HIGH_V,EDIT_MASK_DEC 02213885
ED SMFOUT_MEM_HIGH_V,DOUBLE+4 02213985
MVC SMFOUT_MEM_HIGH_U,0(R15) 02214085
LG R1,R84MEM_AVERAGE 02214185
PERFORM STORAGE_CALC,R 02214285
MVC SMFOUT_MEM_AVERAGE_V,EDIT_MASK_DEC 02214485
ED SMFOUT_MEM_AVERAGE_V,DOUBLE+4 02214585
MVC SMFOUT_MEM_AVERAGE_U,0(R15) 02214685
PERFORM PRINT_REPORT,R 02214745
PERFORM CLEAR_SMFOUT_RECORD,R 02215047
*/*******************************************************************/* 02310000
*/* PROCESS THE NEXT TRIPLE FROM SMF 84 MEM SECTION */* 02320075
*/*******************************************************************/* 02330000
GET_MEM_SECTION EQU * 02340001
AR R3,R4 02370000
BCT R5,NEXT_MEM_SECTION 02380001
BR R10 02390000
DROP R2 02410013
DROP R3 02410113
DROP R9 02411013
*/*******************************************************************/* 02420001
*/* SUBROUTINE TO REDUCE AMOUNT OF MEMORY ON REPORT */* 02430080
*/*******************************************************************/* 02440001
STORAGE_CALC EQU * 02440180
LA R15,STORAGE_UNIT 02440280
LA R14,5 02440380
XGR R0,R0 02440490
NEXT_DIVIDE EQU * 02440580
CG R1,DOUBLE_1024 02440680
BL END_DIVIDE 02440791
XGR R0,R0 02440891
DLG R0,DOUBLE_1024 02440980
LA R15,2(R15) 02441080
CVDG R1,DOUBLE 02441180
BCT R14,NEXT_DIVIDE 02441282
END_DIVIDE EQU * 02441390
SLL R1,10 02441490
OR R1,R0 02441590
CVD R1,DOUBLE 02441690
BR R10 02441780
*/*******************************************************************/* 02441880
*/* PROCESS THE RSU SECTION FROM SMF84 RECORD */* 02442080
*/*******************************************************************/* 02443080
PROCESS_RSU_SECTION EQU * 02450001
TM FLAG_REPORT_TYPE,FLAG_REPORT_RSU 02450159
BNOR R10 02450259
PERFORM INIT_SMFOUT_HEADER,R 02450337
L R2,SMF_RECORD_ADDRESS 02450415
USING SMF84HDR,R2 02450515
LR R9,R2 02450613
A R9,SMF84J1O 02450713
USING SMF84JRU,R9 02460005
ICM R3,15,R84J2RRO 02470001
LTR R3,R3 02480001
BZR R10 02490001
XR R4,R4 02500001
ICM R4,3,R84J2RRL 02510016
XR R5,R5 02520001
ICM R5,3,R84J2RRN 02530016
LTR R5,R5 02540001
BZR R10 02550001
LA R3,0(R3,R9) 02560005
USING R84RSUJ2,R3 02570001
*/*******************************************************************/* 02580001
*/* EDIT AND PRINT THE INFORMATION FROM SMF 84 RSU SECTION */* 02590075
*/*******************************************************************/* 02600001
NEXT_RSU_SECTION EQU * 02610001
MVC SMFOUT_RSU_NAME,R84RSU_NAME 02620037
L R15,R84RSU_LIMIT 02620138
CVD R15,DOUBLE 02620238
MVC SMFOUT_RSU_LIMIT,EDIT_MASK 02620338
ED SMFOUT_RSU_LIMIT,DOUBLE+4 02620441
L R15,R84RSU_INUSE 02620540
CVD R15,DOUBLE 02620640
MVC SMFOUT_RSU_INUSE,EDIT_MASK 02620740
ED SMFOUT_RSU_INUSE,DOUBLE+4 02620841
L R15,R84RSU_LOW 02620941
CVD R15,DOUBLE 02621041
MVC SMFOUT_RSU_LOW,EDIT_MASK 02621141
ED SMFOUT_RSU_LOW,DOUBLE+4 02621241
L R15,R84RSU_HIGH 02621341
CVD R15,DOUBLE 02621441
MVC SMFOUT_RSU_HIGH,EDIT_MASK 02621541
ED SMFOUT_RSU_HIGH,DOUBLE+4 02621641
LH R15,R84RSU_WARN 02621742
CVD R15,DOUBLE 02621842
MVC SMFOUT_RSU_WARN,EDIT_MASK+4 02621943
MVI SMFOUT_RSU_WARN,X'40' 02622042
ED SMFOUT_RSU_WARN,DOUBLE+6 02622253
MVI SMFOUT_RSU_WARN+4,C'%' 02622354
L R15,R84RSU_OVER 02622442
CVD R15,DOUBLE 02622542
MVC SMFOUT_RSU_OVER,EDIT_MASK 02622642
ED SMFOUT_RSU_OVER,DOUBLE+4 02622742
L R15,R84RSU_AVERAGE 02622842
CVD R15,DOUBLE 02622942
MVC SMFOUT_RSU_AVERAGE,EDIT_MASK 02623042
ED SMFOUT_RSU_AVERAGE,DOUBLE+4 02623142
PERFORM PRINT_REPORT,R 02624042
PERFORM CLEAR_SMFOUT_RECORD,R 02625047
*/*******************************************************************/* 02630001
*/* GET THE NEXT FIELD AVAILABLE ON SMF 84 RSU SECTION */* 02640075
*/*******************************************************************/* 02650001
GET_RSU_SECTION EQU * 02660001
AR R3,R4 02670001
BCT R5,NEXT_RSU_SECTION 02680001
BR R10 02690001
DROP R2 02710013
DROP R3 02710113
DROP R9 02711013
*/*******************************************************************/* 02720005
*/* SUBROUTINE TO OPEN THE INPUT AND OUTPUT FILES TO BE PROCESSED */* 02730005
*/*******************************************************************/* 02740005
OPEN_FILES EQU * 02750005
MVC SMFOUT+82(2),RECORD_LENGTH 02770005
XC WORK_FULL,WORK_FULL 02780005
MVC WORK_FULL+2(2),RECORD_LENGTH 02790005
GETMSG 5,SMFPRINT_RECORD,SMFMSG 02800005
EDITMK WORK_FULL,SMFPRINT_LRECL 02810005
PERFORM PUT_SMFPRINT,R 02820037
OPEN (SMFIN,(INPUT),SMFOUT,(OUTPUT)) 02830005
XC SMF_RECORD_COUNT,SMF_RECORD_COUNT 02850005
XC SMF_RECORD_SELECT,SMF_RECORD_SELECT 02860005
BR R10 02870005
*/*******************************************************************/* 03640000
*/* SET THE RETURN CODE TO 8 AND END THE PROGRAM */* 03650000
*/*******************************************************************/* 03660000
RETURN_RC08 EQU * 03670000
MVC RETURN_CODE,FULL_8 03680000
B CLOSE_FILES 03681000
*/*******************************************************************/* 03690000
*/* CLOSE THE FILES AND END THE PROGRAM RETURNING TO CALLER */* 03700000
*/*******************************************************************/* 03710000
END_SMFIN EQU * 03720000
GETMSG 6,SMFPRINT_RECORD,SMFMSG 03721000
SMFEDIT SMF_RECORD_COUNT,SMFPRINT_RECTOT 03722000
SMFEDIT SMF_RECORD_SELECT,SMFPRINT_RECSEL 03722100
XR R15,R15 03722200
IC R15,SMF_RECORD_TYPE 03722300
ST R15,WORK_FULL 03722400
SMFEDIT WORK_FULL,SMFPRINT_RECTYPE 03722500
PERFORM PUT_SMFPRINT,R 03723037
*/*******************************************************************/* 03723168
*/* CLOSE THE FILES AND RELEASE STORAGE AREAS ACQUIRED */* 03723268
*/*******************************************************************/* 03723368
CLOSE_FILES EQU * 03724000
CLOSE (SMFIN) 03730000
CLOSE (SMFOUT) 03740000
TM FLAG_PROC,FLAG_REPORT+FLAG_CNTL 03790000
BNO RETURN_CALLER 03800000
L R1,REPORT_ADDRESS 03810000
LH R2,RECORD_LENGTH 03820000
STORAGE RELEASE,LENGTH=(2),ADDR=(1) 03830000
*/*******************************************************************/* 03840068
*/* CLOSE THE SYSPRINT FILE AND RELEASE WORKAREA RETURNING TO CALLER*/* 03850068
*/*******************************************************************/* 03851068
RETURN_CALLER EQU * 03860000
GETMSG 8,SMFPRINT_RECORD,SMFMSG 03870000
EDITMK RETURN_CODE,SMFPRINT_RC 03880000
PERFORM PUT_SMFPRINT,R 03890037
CLOSE (SMFPRINT) 03900000
LR R1,R13 03910000
L R13,4(R13) 03920000
STORAGE RELEASE,ADDR=(1),LENGTH=WORKLEN 03930000
L R15,RETURN_CODE 03940000
L R14,12(R13) 03950000
LM R0,R12,20(R13) 03960000
BR R14 03970000
*/*******************************************************************/* 03980000
*/* SUBROUTINE TO PRINT AN OUTPUT RECORD INTO SMFOUT FILE */* 03990000
*/*******************************************************************/* 04000000
PRINT_REPORT EQU * 04010000
TM FLAG_PROC,FLAG_REPORT 04020000
BO START_DETAIL_REPORT 04030000
LH R8,RECORD_LENGTH 04040000
STORAGE OBTAIN,LENGTH=(8),LOC=31 04050000
ST R1,REPORT_ADDRESS 04060000
OI FLAG_PROC,FLAG_REPORT 04070000
START_DETAIL_REPORT EQU * 04080000
CP SMFOUT_LINE,PACK_60 04090000
BL PUT_DETAIL_RECORD 04100000
ZAP SMFOUT_LINE,PACK_0 04100100
PERFORM CLEAR_OUTPUT_RECORD,R 04110037
LA R2,REPORT_TABLE 04120006
USING REPORT_ENTRY,R2 04130000
L R8,REPORT_ADDRESS 04140000
PERFORM CREATE_TEXT_RECORD,R 04150037
PERFORM PUT_SMFOUT_RECORD,R 04160037
PERFORM CLEAR_OUTPUT_RECORD,R 04170037
LA R2,REPORT_TABLE 04180006
L R8,REPORT_ADDRESS 04190000
PERFORM CREATE_LINE_RECORD,R 04200037
PERFORM PUT_SMFOUT_RECORD,R 04210037
ZAP SMFOUT_LINE,PACK_2 04220000
PUT_DETAIL_RECORD EQU * 04230000
PERFORM CLEAR_OUTPUT_RECORD,R 04240037
LA R2,REPORT_TABLE 04250006
L R8,REPORT_ADDRESS 04260000
PERFORM CREATE_DETAIL_RECORD,R 04270037
PERFORM PUT_SMFOUT_RECORD,R 04280037
AP SMFOUT_LINE,PACK_1 04290000
BR R10 04300000
*/*******************************************************************/* 04310000
*/* CREATE A RECORD WITH SEPARATOR CHARACTER TO BE PRINTED */* 04320000
*/*******************************************************************/* 04330000
CREATE_LINE_RECORD EQU * 04340000
CLC 0(L'END_TABLE,R2),END_TABLE 04350000
BER R10 04360000
CLI REPORT_FIELD_INUSE,X'00' 04361062
BE NEXT_LINE_FIELD 04362062
XR R15,R15 04370000
XR R14,R14 04380000
IC R14,REPORT_FIELD_LENGTH 04390000
IC R15,REPORT_KEYWORD_LENGTH 04400000
BCTR R14,0 04410000
BCTR R15,0 04420000
MVI 0(R8),C'-' 04440000
LR R1,R8 04450000
LA R8,1(R8) 04451000
CR R15,R14 04460000
BNL MOVE_LINE_FIELD 04470000
LR R15,R14 04480000
MOVE_LINE_FIELD EQU * 04490000
BCTR R15,0 04500000
EX R15,MOVE_REPORT_FIELD 04510000
LA R8,2(R15,R8) 04520000
NEXT_LINE_FIELD EQU * 04521059
LA R2,L'REPORT_TABLE_ENTRY(R2) 04530000
B CREATE_LINE_RECORD 04540000
*/*******************************************************************/* 04550000
*/* CREATE A RECORD WITH COLUMNS NAMES TO BE PRINTED */* 04560000
*/*******************************************************************/* 04570000
CREATE_TEXT_RECORD EQU * 04580000
CLC 0(L'END_TABLE,R2),END_TABLE 04590000
BER R10 04600000
CLI REPORT_FIELD_INUSE,X'00' 04601162
BE NEXT_TEXT_FIELD 04602062
XR R15,R15 04610000
XR R14,R14 04620000
IC R14,REPORT_FIELD_LENGTH 04630000
IC R15,REPORT_KEYWORD_LENGTH 04640000
BCTR R14,0 04650000
BCTR R15,0 04660000
LA R1,REPORT_KEYWORD_DATA 04670000
EX R15,MOVE_REPORT_FIELD 04680000
CR R15,R14 04690000
BNL MOVE_TEXT_FIELD 04700059
LR R15,R14 04710000
MOVE_TEXT_FIELD EQU * 04720059
LA R8,2(R15,R8) 04730000
NEXT_TEXT_FIELD EQU * 04731059
LA R2,L'REPORT_TABLE_ENTRY(R2) 04740000
B CREATE_TEXT_RECORD 04750000
*/*******************************************************************/* 04760000
*/* CREATE A RECORD WITH DETAILS REPORT DATA TO BE PRINTED */* 04770000
*/*******************************************************************/* 04780000
CREATE_DETAIL_RECORD EQU * 04790000
CLC 0(L'END_TABLE,R2),END_TABLE 04800000
BER R10 04810000
CLI REPORT_FIELD_INUSE,X'00' 04810162
BE BYPASS_DETAIL_FIELD 04812062
XR R15,R15 04820000
XR R14,R14 04830000
IC R15,REPORT_FIELD_LENGTH 04840000
IC R14,REPORT_KEYWORD_LENGTH 04850000
BCTR R14,0 04860000
BCTR R15,0 04870000
L R1,REPORT_FIELD_ADDRESS 04880000
EX R15,MOVE_REPORT_FIELD 04890000
TM FLAG_PROC,FLAG_NOTITLE_KEYWORD 04891000
BO NEXT_DETAIL_FIELD 04892000
CR R15,R14 04900000
BNL NEXT_DETAIL_FIELD 04910000
LR R15,R14 04920000
NEXT_DETAIL_FIELD EQU * 04930000
LA R8,1(R15,R8) 04930100
TM FLAG_PROC,FLAG_BREAK_KEYWORD 04931000
BNO STEP_DETAIL_FIELD 04932000
MVC 0(1,R8),SEPARATOR_CHAR 04932100
STEP_DETAIL_FIELD EQU * 04933000
LA R8,1(R8) 04940000
BYPASS_DETAIL_FIELD EQU * 04941059
LA R2,L'REPORT_TABLE_ENTRY(R2) 04950000
B CREATE_DETAIL_RECORD 04960000
MOVE_REPORT_FIELD MVC 0(0,R8),0(R1) 04970000
*/*******************************************************************/* 04990000
*/* CLEAR THE RECORD OUTPUT AREA TO BE PRINTED */* 05000000
*/*******************************************************************/* 05010000
CLEAR_OUTPUT_RECORD EQU * 05020000
L R6,REPORT_ADDRESS 05030000
LA R14,BLANK_CHAR 05040000
LH R7,RECORD_LENGTH 05050000
XR R15,R15 05060000
ICM R15,8,0(R14) 05070000
MVCL R6,R14 05080000
BR R10 05090000
*/*******************************************************************/* 05091047
*/* CLEAR THE SMFOUT RECORD USED TO PRINT THE REPORT */* 05092047
*/*******************************************************************/* 05093047
CLEAR_SMFOUT_RECORD EQU * 05094047
LA R6,SMFOUT_RECORD_START 05095047
LA R14,BLANK_CHAR 05096047
L R7,=A(SMFOUT_L) 05097048
XR R15,R15 05098047
ICM R15,8,0(R14) 05099047
MVCL R6,R14 05099147
BR R10 05099247
*/*******************************************************************/* 05100000
*/* PUT A RECORD LINE ON SMFOUT OUTPUT FILE */* 05110000
*/*******************************************************************/* 05120000
PUT_SMFOUT_RECORD EQU * 05130000
L R8,REPORT_ADDRESS 05140000
PUT SMFOUT,0(R8) 05150000
BR R10 05160000
*/*******************************************************************/* 05170000
*/* PRINT A MESSAGE OF PROGRAM PROCESSING */* 05180000
*/*******************************************************************/* 05190000
PUT_SMFPRINT EQU * 05200000
PUT SMFPRINT,SMFPRINT_RECORD 05210000
BR R10 05220000
*/*******************************************************************/* 05680000
*/* SEND A ERROR MESSAGE AND END THE PROGRAM WIRH RETURN CODE 8 */* 05690068
*/*******************************************************************/* 05700000
ERROR_NO_PARM EQU * 05710068
GETMSG 1,SMFPRINT_RECORD,SMFMSG 05720068
PERFORM PUT_SMFPRINT,R 05730070
B RETURN_RC08 05740068
ERROR_WRONG_PARM EQU * 05741068
GETMSG 2,SMFPRINT_RECORD,SMFMSG 05742068
PERFORM PUT_SMFPRINT,R 05742170
B RETURN_RC08 05743068
ERROR_INVALID_PARM EQU * 05744068
GETMSG 3,SMFPRINT_RECORD,SMFMSG 05745068
PERFORM PUT_SMFPRINT,R 05745170
B RETURN_RC08 05746068
*/*******************************************************************/* 05750000
*/* DEFINE DATA CONSTANTS TO BE USED BY PROGRAM CHECKING */* 05760000
*/*******************************************************************/* 05770000
LTORG 05780000
FULL_8 DC F'8' 05870000
HALF_3 DC H'3' 05880068
DS 0D 05881081
DOUBLE_1024 DC X'0000000000000400' 05890079
PACK_0 DC PL1'0' 05920000
PACK_1 DC PL1'1' 05930000
PACK_2 DC PL1'2' 05940000
PACK_60 DC PL2'60' 05950000
PACK_255 DC PL2'255' 05951000
SMF_84_SUBTYPE DC H'21' 05952001
BLANK_CHAR DC C' ' 06030000
SEPARATOR_CHAR DC C' ' 06040000
RETURN_CODE DC F'0' 06041000
END_TABLE DC XL4'FFFFFFFF' 06160000
EDIT_MASK DC X'4020202020202120' 06161053
EDIT_MASK_DEC DC X'40202021204B202020' 06162087
SMF_RECORD_TYPE DC X'54' 06170073
SMF_RECORD_SUBTYPE DC X'15' 06180073
KEYWORD_MEM DC CL3'MEM' 06190068
KEYWORD_RSU DC CL3'RSU' 06200068
STORAGE_UNIT DC C' BKBMBGBTB' 06210081
*/*******************************************************************/* 06240000
*/* DEFINE REPORT HEADER AREA */* 06250075
*/*******************************************************************/* 06260000
REPORT_TABLE DS 0F 06270000
DC A(15),A(0),AL1(L'SMFOUT_DATE),AL1(8),CL10'SMF-DATE' 06280062
DC A(15),A(0),AL1(L'SMFOUT_TIME),AL1(8),CL10'SMF-TIME' 06290062
DC A(15),A(0),AL1(L'SMFOUT_MVSVERS),AL1(9),CL10'Z/VERSION' 06300062
DC A(15),A(0),AL1(L'SMFOUT_SYSID),AL1(5),CL10'SYSID' 06300162
DC A(15),A(0),AL1(L'SMFOUT_JES),AL1(3),CL10'JES' 06301062
DC A(1),A(0),AL1(L'SMFOUT_MEM_NAME),AL1(8),CL10'MEM_NAME' 06310062
DC A(1),A(0),AL1(L'SMFOUT_MEM_REGION),AL1(10),CL10'MEM_REGION' 06320062
DC A(1),A(0),AL1(L'SMFOUT_MEM_USE),AL1(7),CL10'MEM_USE' 06330062
DC A(1),A(0),AL1(L'SMFOUT_MEM_LOW),AL1(7),CL10'MEM_LOW' 06340062
DC A(1),A(0),AL1(L'SMFOUT_MEM_HIGH),AL1(8),CL10'MEM_HIGH' 06350062
DC A(1),A(0),AL1(L'SMFOUT_MEM_AVERAGE),AL1(7),CL10'MEM_AVG' 06360062
DC A(2),A(0),AL1(L'SMFOUT_RSU_NAME),AL1(8),CL10'RSU_NAME' 06370062
DC A(2),A(0),AL1(L'SMFOUT_RSU_LIMIT),AL1(9),CL10'RSU_LIMIT' 06371062
DC A(2),A(0),AL1(L'SMFOUT_RSU_INUSE),AL1(9),CL10'RSU_INUSE' 06380062
DC A(2),A(0),AL1(L'SMFOUT_RSU_LOW),AL1(7),CL10'RSU_LOW' 06400062
DC A(2),A(0),AL1(L'SMFOUT_RSU_HIGH),AL1(8),CL10'RSU_HIGH' 06410062
DC A(2),A(0),AL1(L'SMFOUT_RSU_WARN),AL1(8),CL10'RSU_WARN' 06420062
DC A(2),A(0),AL1(L'SMFOUT_RSU_OVER),AL1(8),CL10'RSU_OVER' 06430062
DC A(2),A(0),AL1(L'SMFOUT_RSU_AVERAGE),AL1(7),CL10'RSU_AVG' 06440062
DC XL4'FFFFFFFF' 06690059
*/*******************************************************************/* 06810000
*/* DEFINE DBS'S TO DATA SET PROCESSING */* 06820000
*/*******************************************************************/* 06830000
SMFIN DCB DDNAME=SMFIN,DSORG=PS,MACRF=GL,BFTEK=A, X06860000
EODAD=END_SMFIN 06870000
SMFPRINT DCB DDNAME=SMFPRINT,DSORG=PS,MACRF=PM, X06880000
LRECL=133,RECFM=FBA,BLKSIZE=0 06890000
SMFOUT DCB DDNAME=SMFOUT,DSORG=PS,MACRF=PM, X06900000
LRECL=0,RECFM=FB,BLKSIZE=0 06910000
*/********************************************************************/ 06920093
*/* DEFINE AREA WITH MESSAGE TO BE DISPLAIED ON PROGRAM */ 06930093
*/********************************************************************/ 06931093
SMFMSG DS 0F 06932093
SMF001E DC CL133' SMF001E - PARM IS MISSING' 06933093
SMF002E DC CL133' SMF002E - WRONG PARM PASSED' 06934093
SMF003E DC CL133' SMF003E - INVALID PARM USED' 06935093
SMF004I DC CL133' SMF004I - KEYWORD PARAMETER SELECTED WAS ' 06936093
SMF005I DC CL133' SMF005I - REPORT WILL BE GENERATED WITH RECORD LEX06937093
NGTH OF' 06938093
SMF006I DC CL133' SMF006I - READ FROM SMF A TOTAL OF XXXXXXXXX RECOX06939093
RDS AND PROCESSED XXXXXXXXX RECORDS TYPE' 06939193
SMF007E DC CL133' SMF007E - CONTROL CARD KEYWORD XXXXXXXXXX IS INVAX06939293
LID' 06939393
SMF008I DC CL133' SMF008I - PROGRAM ENDED WITH RETURN CODE' 06939493
*/*******************************************************************/* 06940000
*/* DEFINE DSECT WORKAREA TO VARIABLES USED BY PROGRAM */* 06950000
*/*******************************************************************/* 06960000
WORKAREA DSECT 06970000
SAVEAREA DS 18F 06980000
DOUBLE DS D 06990000
ORG DOUBLE 06991044
DOUBLE_WORK DS XL16 07000044
WORK_FULL DS F 07010000
REPORT_ADDRESS DS F 07030000
RECORD_LENGTH DS H 07030164
SMF_RECORD_ADDRESS DS F 07031014
SMF_RECORD_COUNT DS F 07050000
SMF_RECORD_SELECT DS F 07051000
SMF_DATE_START DS F 07090400
SMF_DATE_END DS F 07090600
SMFOUT_LINE DS PL2 07090700
FLAG_PROC DS X 07091000
FLAG_REPORT EQU X'01' 07100000
FLAG_CNTL EQU X'02' 07110000
FLAG_NOTITLE_KEYWORD EQU X'40' 07115000
FLAG_BREAK_KEYWORD EQU X'80' 07116000
FLAG_REPORT_TYPE DS X 07117062
FLAG_REPORT_HEAD EQU X'08' 07118062
FLAG_REPORT_MEM EQU X'01' 07118162
FLAG_REPORT_RSU EQU X'02' 07119062
PERFORM GENERATE 07181037
*/*******************************************************************/* 07190000
*/* DEFINE OUTPUT RECORD AREA TO PRINT PROGRAM MESSAGES */* 07200001
*/*******************************************************************/* 07210000
SMFPRINT_RECORD DS CL133 07220000
ORG SMFPRINT_RECORD+18 07230000
SMFPRINT_SMF_TYPE DS CL3 07240000
ORG SMFPRINT_RECORD+34 07241000
SMFPRINT_SMF_SUBTYPE DS CL3 07242000
ORG SMFPRINT_RECORD+36 07242100
SMFPRINT_RECTOT DS CL9 07242200
ORG SMFPRINT_RECORD+68 07243000
SMFPRINT_RECSEL DS CL9 07244000
ORG SMFPRINT_RECORD+42 07250000
SMFPRINT_RC DS CL3 07260000
ORG SMFPRINT_RECORD+44 07261000
SMFPRINT_DATE_ERROR DS CL7 07262000
ORG SMFPRINT_RECORD+50 07270000
SMFPRINT_DATES DS CL10 07280000
ORG SMFPRINT_RECORD+58 07280100
SMFPRINT_LRECL DS CL5 07280200
ORG SMFPRINT_RECORD+62 07281000
SMFPRINT_CHAR_EXPECTED DS CL1 07282000
ORG SMFPRINT_RECORD+69 07282100
SMFPRINT_DATEE DS CL10 07282200
ORG SMFPRINT_RECORD+74 07283000
SMFPRINT_CHAR_FOUND DS CL1 07284000
ORG SMFPRINT_RECORD+91 07285000
SMFPRINT_RECTYPE DS CL3 07286000
ORG 07290000
*/*******************************************************************/* 07450000
*/* DEFINE OUTPUT RECORD AREA TO WRITE REPORTING DATA */* 07460075
*/*******************************************************************/* 07470000
SMFOUT_RECORD_START EQU * 07480000
SMFOUT_DATE DS CL10 07490000
SMFOUT_TIME DS CL8 07500001
SMFOUT_MVSVERS DS CL8 07510001
SMFOUT_SYSID DS CL4 07510101
SMFOUT_JES DS CL4 07511001
SMFOUT_MEM_NAME DS CL12 07520001
SMFOUT_MEM_REGION DS CL11 07522087
ORG SMFOUT_MEM_REGION 07522180
SMFOUT_MEM_REGION_V DS CL9 07522287
SMFOUT_MEM_REGION_U DS CL2 07522380
SMFOUT_MEM_USE DS CL11 07522487
ORG SMFOUT_MEM_USE 07522586
SMFOUT_MEM_USE_V DS CL9 07522687
SMFOUT_MEM_USE_U DS CL2 07522786
SMFOUT_MEM_LOW DS CL11 07523087
ORG SMFOUT_MEM_LOW 07523186
SMFOUT_MEM_LOW_V DS CL9 07523287
SMFOUT_MEM_LOW_U DS CL2 07523386
SMFOUT_MEM_HIGH DS CL11 07523487
ORG SMFOUT_MEM_HIGH 07523586
SMFOUT_MEM_HIGH_V DS CL9 07523687
SMFOUT_MEM_HIGH_U DS CL2 07523786
SMFOUT_MEM_AVERAGE DS CL11 07524087
ORG SMFOUT_MEM_AVERAGE 07524186
SMFOUT_MEM_AVERAGE_V DS CL9 07524287
SMFOUT_MEM_AVERAGE_U DS CL2 07524386
SMFOUT_RSU_NAME DS CL8 07525001
SMFOUT_RSU_LIMIT DS CL8 07526001
SMFOUT_RSU_INUSE DS CL8 07527001
SMFOUT_RSU_LOW DS CL8 07528001
SMFOUT_RSU_HIGH DS CL8 07529001
SMFOUT_RSU_WARN DS CL5 07529152
SMFOUT_RSU_OVER DS CL8 07529201
SMFOUT_RSU_AVERAGE DS CL8 07530092
SMFOUT_L EQU *-SMFOUT_RECORD_START 07540048
WORKLEN EQU *-WORKAREA 08320000
*/*******************************************************************/* 08330000
*/* DEFINE DSECT TO MAPPING THE KEYWORD REPORT ENTRY */* 08340000
*/*******************************************************************/* 08350000
REPORT_ENTRY DSECT 08360000
REPORT_TABLE_ENTRY DS XL20 08370059
ORG REPORT_TABLE_ENTRY 08380000
REPORT_FIELD_AVAIL DS A 08390059
ORG REPORT_FIELD_AVAIL 08390159
DS XL3 08390462
REPORT_FIELD_INUSE DS X 08390562
REPORT_FIELD_ADDRESS DS A 08391059
REPORT_FIELD_LENGTH DS AL1 08400000
REPORT_KEYWORD_LENGTH DS AL1 08410000
REPORT_KEYWORD_DATA DS CL10 08420000
*/*******************************************************************/* 08590000
*/* DEFINE MACRO DSECT MAPPING TO MAP THE SMF 84 RECORD */* 08600075
*/*******************************************************************/* 08610000
IAZSMF84 SUBTYPE=21 08620001
YREGS 08680000
END SMF84RPT 08690004
An example of a PERFORM macro that is used by SMF84RPT program to run branches in program processing that uses GR10 is shown in Example C-5.
Example C-5 Sample of PERFORM macro
MACRO
&NAME PERFORM &LABEL,&R
GBLA &PRFINDX
*
AIF ('&LABEL' EQ '').E1
AIF ('&LABEL' EQ 'GENERATE').DEFINE
AIF ('&R' EQ 'R').RENT
*
AIF (&SYSOPT_RENT).RENT
&NAME ST 10,F&SYSNDX
B PERF&SYSNDX
F&SYSNDX DS F
PERF&SYSNDX BAL 10,&LABEL
L 10,F&SYSNDX
AGO .END
.RENT ANOP
&PRFINDX SETA &PRFINDX+1
&NAME ST 10,F_P#&PRFINDX
BAL 10,&LABEL
L 10,F_P#&PRFINDX
AGO .END
.DEFINE ANOP
LCLA &N
.LOOP ANOP
&N SETA &N+1
F_P#&N DS F
AIF (&N LT &PRFINDX).LOOP
AGO .END
.E1 MNOTE 8,'*** LABEL MISSING ***'
.END MEND
An example of a GETMSG macro that is used by the SMF84RPT program to get messages from GETMSG CSECT and then places it on the SYSPRINT output data set is shown in Example C-6.
Example C-6 Sample of GETMSG macro
MACRO
&NOME GETMSG &MSG,&AREA,&CSECT
LCLA &A
&NOME LA 15,&MSG
BCTR 15,0
MH 15,=AL2(L'&AREA)
AIF ('&CSECT'(1,1) EQ '(').REGOK
A 15,=A(&CSECT)
AGO .MOVE
.REGOK ANOP
&REG SETC '&CSECT'(2,1)
&REGNO SETA &REG
AR 15,&REGNO
.MOVE ANOP
MVC &AREA+0(L'&AREA),0(15)
.EXIT MEND
An example of the SMFDATE macro that is used by SMF84RPT program to convert date from SMF Julian format to edited European Gregorian format is shown in Example C-7.
Example C-7 Sample of SMFDATE macro
MACRO
&LABEL SMFDATE &DATEI,&DATEO
LCLC &GVALU
&GVALU SETC 'D'.'&SYSNDX'
UNPK DTI&SYSNDX+2(5),&DATEI+1(3)
MVC DTI&SYSNDX+0(2),A2&SYSNDX
CLI &DATEI,X'00'
BNE &GVALU.A
MVC DTI&SYSNDX+0(2),A1&SYSNDX
&GVALU.A EQU *
PACK SBL&SYSNDX+0(8),DTI&SYSNDX+0(4)
DP SBL&SYSNDX+0(8),P4&SYSNDX DIVIDE YEAR BY FOUR
CLI SBL&SYSNDX+7,X'0C'
BNE &GVALU.B
MVI M&SYSNDX+2,X'1D' ADJUST FEBRUARY
&GVALU.B EQU *
PACK SBL&SYSNDX+0(8),DTI&SYSNDX+4(3)
CVB 0,SBL&SYSNDX JULIAN DAY
LA 1,M&SYSNDX
XR 15,15
&GVALU.C EQU *
LA 1,1(1)
IC 15,0(1)
CR 0,15
BNH &GVALU.D
SR 0,15
B &GVALU.C
&GVALU.D EQU *
CVD 0,SBL&SYSNDX R0 GREGORIAN DAY
MVC &DATEO+0(10),DTE&SYSNDX
UNPK &DATEO+8(2),SBL&SYSNDX+6(2)
OI &DATEO+9,X'F0'
LA 15,M&SYSNDX
SR 1,15
CVD 1,SBL&SYSNDX R4 GREGORIAN MONTH
UNPK &DATEO+5(2),SBL&SYSNDX+6(2)
OI &DATEO+6,X'F0'
MVC &DATEO+0(4),DTI&SYSNDX
MVI M&SYSNDX+2,X'1C' ADJUST FEBRUARY MONTH
B &GVALU.E
SBL&SYSNDX DC D'0'
DTI&SYSNDX DC CL7' '
DTE&SYSNDX DC C'AAAA/MM/DD'
A1&SYSNDX DC C'19'
A2&SYSNDX DC C'20'
P4&SYSNDX DC P'4'
M&SYSNDX DC XL13'001F1C1F1E1F1E1F1F1E1F1E1F'
DS C
&GVALU.E EQU *
AGO .E
.E MEND
An example of the SMFTIME macro that is used by SMF84RPT program to convert time from SMF format to editable values is shown in Example C-8.
Example C-8 Sample of SMFTIME macro
MACRO
SMFTIME &TIMEI,&TIMEO
LCLC &GVALU
&GVALU SETC 'T'.'&SYSNDX'
AIF ('&TIMEI' EQ '').EI
AIF ('&TIMEO' EQ '').EO
&GVALU EQU *
XR R1,R1
ICM R1,15,&TIMEI
XR 0,0
D 0,F1&SYSNDX
XR 0,0
D 0,F3&SYSNDX
CVD 1,DBL&SYSNDX
MVC &TIMEO+0(8),TME&SYSNDX
UNPK &TIMEO+0(2),DBL&SYSNDX+6(2)
OI &TIMEO+1,X'F0'
LR 1,0
XR 0,0
D 0,F6&SYSNDX
CVD 1,DBL&SYSNDX
UNPK &TIMEO+3(2),DBL&SYSNDX+6(2)
OI &TIMEO+4,X'F0'
CVD 0,DBL&SYSNDX
UNPK &TIMEO+6(2),DBL&SYSNDX+6(2)
OI &TIMEO+7,X'F0'
B &GVALU.E
DBL&SYSNDX DC D'0'
TME&SYSNDX DC C'HH:MM:SS'
F1&SYSNDX DC F'100'
F3&SYSNDX DC F'3600'
F6&SYSNDX DC F'60'
&GVALU.E DS 0H
AGO .END
.EI MNOTE 8,'SM001E *** TIME INPUT FIELD NOT SPECIFIED ***'
AGO .END
.EO MNOTE 8,'SM001E *** TIME OUTPUT FIELD NOT SPECIFIED ***'
.END MEND
An example of the SMFEDIT macro that is used by SMFRPT84 program to edit numbers that are used to count are shown in Example C-9.
Example C-9 SMFEDIT sample for editing data on program
MACRO
&LABEL SMFEDIT &INPUT,&OUTPUT 00020004
LCLC &GVALU 00030004
LCLA &LEN 00040007
&GVALU SETC 'E'.'&SYSNDX' 00050004
XR 15,15 00150007
ICM 15,15,&INPUT 00280004
CVD 15,DBL&SYSNDX 00300004
MVC EDT&SYSNDX,MSK&SYSNDX 00310004
ED EDT&SYSNDX,DBL&SYSNDX 00320004
LA 15,EDT&SYSNDX+20-L'&OUTPUT 00330004
MVC &OUTPUT,0(15) 00340004
B &GVALU.E 00350004
EDT&SYSNDX DC XL20'00' 00360004
MSK&SYSNDX DC XL20'402020204B2020204B2020204B2020204B202120' 00370004
DBL&SYSNDX DC D'0' 00380004
&GVALU.E EQU * 00390004
AGO .END 00400006
.END MEND 00410006
An example of the EDITMK macro that is used to edit numbering for SMF report fields is shown in Example C-10.
Example C-10 EDITMK sample macro
MACRO
&LABEL EDITMK &INPUT,&OUTPUT
LCLC &GVALU
&GVALU SETC 'E'.'&SYSNDX'
AIF ('&OUTPUT'(1,1) NE '(').NOREG
AIF ('&OUTPUT'(3,1) NE ')').NOREG
&REG SETC '&OUTPUT'(2,1)
&REGNO SETA &REG
AIF (&REGNO LT 2).BADBASE
AIF (&REGNO GT 9).BADBASE
LR 14,&REGNO
AGO .OKREG
.NOREG ANOP
LA 14,&OUTPUT
.OKREG ANOP
XR 15,15
ICM 15,15,&INPUT
CVD 15,DBL&SYSNDX
LA 1,WRK&SYSNDX+19
MVC WRK&SYSNDX,MSK&SYSNDX
EDMK WRK&SYSNDX,DBL&SYSNDX
LA 15,WRK&SYSNDX+19
SR 15,1
EX 15,MVC&SYSNDX
LA 1,1(14,15)
B &GVALU.E
MSK&SYSNDX DC X'402020204B2020204B2020204B2020204B202120'
WRK&SYSNDX DC CL20' '
DBL&SYSNDX DC D'0'
MVC&SYSNDX MVC 0(1,14),0(1)
&GVALU.E EQU *
AGO .E
.BADBASE ANOP
MNOTE 8,'*** ERROR ON THE REGISTER SPECIFICATION'
.E MEND
 
 
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.133.140.79