//jobname JOB (ACCT#),CLASS=x,MSGCLASS=x,NOTIFY=user-id //* *************************************************************** //* SMF RECORD EDIT PROGRAM ! //* rec type record name dd name //* 41 : VLF REPORT . TYPE41 //* *************************************************************** //A EXEC PGM=IEV90,PARM=OBJECT,REGION=2000K //SYSIN DD * START PRINT NOGEN DC C'< SMF EDITER V0.0.0 _ KIMU _ &SYSDATE _ &SYSTIME >' SMFEDIT CSECT SAVE (14,12),T,* BALR R03,0 USING *,R03,R04,R05 BASE REG. R03 LA R04,2048(R03) LA R04,2048(R04) 2ND BASE REG. R04 LA R05,2048(R04) LA R05,2048(R05) 3RD BASE REG. R05 ST R13,SAVEAREA+4 SAVE A(OLD SAVEAREA) LR R12,R13 LA R13,SAVEAREA ST R13,8(R12) SAVE A(NEW SAVEAREA) * *** FILE OPEN **************************************************** OPEN (INDCB,,TYPE41,(OUTPUT)) PUT TYPE41,#41TITLE *** FILE READ **************************************************** LOOP01 EQU * GET INDCB,RECAREA CLC RECAREA+5(1),=X'29' TYPE 41 ( VLF REPORT ) BE EDIT41 B LOOP01 *** RECORD TYPE 41 *********************************************** EDIT41 EQU * MVI #41,X'40' OUT AREA SPACE CLEAR MVC #41+1(132),#41 * MVC #41RTY,=CL2'41' * --- JOB NAME --- MVC #41SID(4),RECAREA+14 * --- DATE --- UNPK UPK_AREA(8),RECAREA+10(4) OI UPK_AREA+7,X'F0' MVC #41DT(2),UPK_AREA+3 MVI #41DT+2,C'/' MVC #41DT+3(3),UPK_AREA+5 * --- INTERVAL TIME --- L R06,RECAREA+6 SRDA R06,32 D R06,=F'100' 1sec = 1ms * 100 LR R06,R07 SRDA R06,32 D R06,=F'60' 1min = 1s * 60 LR R06,R07 SRDA R06,32 D R06,=F'60' 1hor = 1min * 60 * CVD R07,PK_AREA UNPK UPK_AREA(8),PK_AREA(8) OI UPK_AREA+7,X'F0' MVC #41INT(2),UPK_AREA+6 CVD R06,PK_AREA MVI #41INT+2,C':' UNPK UPK_AREA(8),PK_AREA(8) OI UPK_AREA+7,X'F0' MVC #41INT+3(2),UPK_AREA+6 * --- VLF SUMMARY CHECK --- XR R06,R06 LH R06,RECAREA+66 LTR R06,R06 BZ E41#X IF NO-VLF SUMMARY XR R07,R07 XR R08,R08 L R07,RECAREA+60 OFFSET LA R07,RECAREA(R07) LH R08,RECAREA+64 LENGTH E41LOP01 EQU * * --- VLF CLASS NAME --- MVC #41CLASS,0(R07) * --- ALLOCATION BLOCK --- L R01,8(R07) CVD R01,PK_AREA UNPK UPK_AREA(16),PK_AREA(8) OI UPK_AREA+15,X'F0' MVC #41MVT(12),UPK_AREA+4 * --- USED BLOCK --- L R01,12(R07) CVD R01,PK_AREA UNPK UPK_AREA(16),PK_AREA(8) OI UPK_AREA+15,X'F0' MVC #41USD(12),UPK_AREA+4 * --- ALLOCATION BLOCK --- L R01,16(R07) CVD R01,PK_AREA UNPK UPK_AREA(16),PK_AREA(8) OI UPK_AREA+15,X'F0' MVC #41SRC(12),UPK_AREA+4 * --- ALLOCATION BLOCK --- L R01,20(R07) CVD R01,PK_AREA UNPK UPK_AREA(16),PK_AREA(8) OI UPK_AREA+15,X'F0' MVC #41FND(12),UPK_AREA+4 * --- ALLOCATION BLOCK --- L R01,24(R07) CVD R01,PK_AREA UNPK UPK_AREA(16),PK_AREA(8) OI UPK_AREA+15,X'F0' MVC #41ADD(12),UPK_AREA+4 * --- ALLOCATION BLOCK --- L R01,28(R07) CVD R01,PK_AREA UNPK UPK_AREA(16),PK_AREA(8) OI UPK_AREA+15,X'F0' MVC #41DEL(12),UPK_AREA+4 * --- ALLOCATION BLOCK --- L R01,32(R07) CVD R01,PK_AREA UNPK UPK_AREA(16),PK_AREA(8) OI UPK_AREA+15,X'F0' MVC #41TRM(12),UPK_AREA+4 * --- ALLOCATION BLOCK --- L R01,36(R07) CVD R01,PK_AREA UNPK UPK_AREA(16),PK_AREA(8) OI UPK_AREA+15,X'F0' MVC #41LRG(12),UPK_AREA+4 * --- WRITE --- PUT TYPE41,#41 * --- WRITE --- LA R07,0(R07,R08) BCT R06,E41LOP01 E41#X EQU * B LOOP01 *** END OF PROCESS *********************************************** @BYE EQU * CLOSE (INDCB,,TYPE41) L R13,SAVEAREA+4 RETURN (14,12),RC=0 *** HEXA CHARACTER PRINTOUT ROUTINE ****************************** @CO_HEX EQU * CONVERT HEX-CHARACTER STM R00,R15,REGS LA R15,5 @CO_HC EQU * LTR R09,R09 BZ @CO_EXIT BCT R15,@CO_SKIP * MVI 0(R08),X'40' LA R08,1(R08) LA R15,4 @CO_SKIP EQU * SR R01,R01 IC R01,0(R07) SRL R01,4 A R01,A_TR ICM R02,B'0010',0(R01) IC R01,0(R07) N R01,=F'15' A R01,A_TR ICM R02,B'0001',0(R01) STCM R02,B'0011',0(R08) LA R07,1(R07) LA R08,2(R08) BCTR R09,0 B @CO_HC @CO_EXIT EQU * LM R00,R15,REGS BR R14 *** DCB ********************************************************** INDCB DCB DSORG=PS,MACRF=(GM),DDNAME=INDD, * EODAD=@BYE TYPE41 DCB DSORG=PS,MACRF=(PM),DDNAME=TYPE41 *** DEFINE STORAGE *********************************************** DS 0F SAVEAREA DS 18F SAVEAREA REGS DS 18F WORK SAVEAREA TR DC C'0123456789ABCDEF' CHAR TRUNC TABLE A_TR DC A(TR) DS 0D PK_AREA DS PL8 UPK_AREA DS XL16 PK_ARE2 DS PL16 UPK_ARE2 DS XL16 WK#F DS F *** REC TYPE 41 ************************************************** #41TITLE DC CL133' SID YY/DDD HH:MM CLASS MVT USD * SRC FND ADD DEL * TRM LRG ' #41 DS 0CL133 DS CL1 #41SID DS CL4 DS CL1 #41DT DS CL6 DS CL1 #41INT DS CL5 DS CL1 #41CLASS DS CL8 DS CL1 #41MVT DS CL12 DS CL1 #41USD DS CL12 DS CL1 #41SRC DS CL12 DS CL1 #41FND DS CL12 DS CL1 #41ADD DS CL12 DS CL1 #41DEL DS CL12 DS CL1 #41TRM DS CL12 DS CL1 #41LRG DS CL12 DS CL133 *** REC TYPE LITERAL ORIGIN ************************************** LTORG DS 0D RECAREA DS 32767C ERBSMF R00 EQU 00 R01 EQU 01 R02 EQU 02 R03 EQU 03 R04 EQU 04 R05 EQU 05 R06 EQU 06 R07 EQU 07 R08 EQU 08 R09 EQU 09 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 END SMFEDIT /* //SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR // DD DSN=SYS1.AMODGEN,DISP=SHR //SYSUT1 DD UNIT=(SYSDA,SEP=SYSLIB),SPACE=(CYL,(10,5)),DSN=&SYSUT1 //SYSPUNCH DD DUMMY //SYSPRINT DD SYSOUT=*,DCB=(BLKSIZE=3509), // UNIT=(,SEP=(SYSUT1,SYSPUNCH)) //SYSLIN DD DISP=(,PASS),UNIT=SYSDA,SPACE=(CYL,(5,5,0)), // DCB=(BLKSIZE=400),DSN=&&LOADSET //L EXEC PGM=IEWL,PARM='MAP,LET,LIST', // REGION=1M,COND=(8,LT,A) //SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(3,2)),DSN=&SYSUT1 //SYSPRINT DD SYSOUT=*,DCB=(RECFM=FB,BLKSIZE=3509) //OBJ DD DISP=SHR,UNIT=SYSDA, // DSN=DDMS.V1R2M1.OBJLIB //SYSLMOD DD DISP=(,PASS),UNIT=SYSDA, // SPACE=(CYL,(2,1,2)),DSN=&GOSET(@SE41#00) //SYSIN DD * ENTRY SMFEDIT NAME @SE41#00(R) /* // -------------------------------------------------------- //DEL EXEC PGM=IEFBR14 //DD3 DD DSN=SMFEDIT.TYPE41,DISP=(OLD,DELETE), // UNIT=SYSDA,VOL=SER=serial // -------------------------------------------------------- //STEP1 EXEC PGM=UFASMFDP //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //INDD DD DSN=smf-dataset,DISP=SHR //OUTDD DD DSN=&&DUMPOUT,DISP=(,PASS), // UNIT=SYSDA,VOL=SER=serial,SPACE=(CYL,(50,50),RLSE) //SYSIN DD * SID(sysid) INDD(INDD,OPTIONS(DUMP)) OUTDD(OUTDD,TYPE(41)) // -------------------------------------------------------- //G EXEC PGM=*.L.SYSLMOD,COND=((9,LT,A),(9,LT,L)) //STEPCAT DD DSN=user.catalog,DISP=SHR //INDD DD DSN=&&DUMPOUT,DISP=(OLD,PASS) //TYPE41 DD DSN=*.DEL.DD3,DISP=(,CATLG), // VOL=REF=*.DEL.DD3,SPACE=(CYL,(10,10),RLSE), // DCB=(RECFM=FB,LRECL=133,BLKSIZE=1330)