Troubles with removing bad SMF records
Contents:
1. Bad SMF records detected
1. Bad SMF records detected
When the failed job DUMPXY with RC=0008 is resubmitted the following trouble can occur – some SMF records are dumped (written) in a wrong way on the summary SMF file (IPOSAV.SMFDUMPW) that will reflect negative on the monthly SCRT report processing for Sub-capacity charges of Mainframe.
When an SMF extract from KCI08.SMF.D051112 (copy of IPOSAV.SMFDUMPW after resubmitting job DUMPXY with RC=0008) is read, an ABEND002 with rc=0004 occurs during writing the SMF records to the output file HLQ.SMFEXTR.FEB90 in the following job SMFEXTR:
//SMFEXTR JOB (9999,IPO,10,10),MSGCLASS=O,NOTIFY=HLQ,REGION=5M
//SMFDUMP EXEC PGM=IFASMFDP
//SYSABEND DD SYSOUT=A
//INDD1 DD DSN=KCI08.SMF.D031012,DISP=SHR
//INDD2 DD DSN=KCI08.SMFR.D051112,DISP=SHR
//OUTDD1 DD DSN=HLQ.SMFEXTR.FEB90,UNIT=(3390,1),
// DISP=(NEW,CATLG,DELETE),VOL=SER=SP1789,
// SPACE=(TRK,(700,600))
//SYSPRINT DD SYSOUT=A
//SYSIN DD *
INDD(INDD1,OPTIONS(DUMP))
INDD(INDD2,OPTIONS(DUMP))
OUTDD(OUTDD1,TYPE(70,89))
DATE(2012276,2012306)
START(0000)
END(2400)
/*
The following error abend messages appears:
IEC036I
002-04,IGC0005E,SMFEXTR,SMFDUMP,INDD2,05B6,ARH195,KCI08.SMFR.D051112
Job SMFEXTR JOB02053 (BC2A/90) is reading bad SMF records from KCI08.SMFR.D051112 when writing extract to output file HLQ.SMFEXTR.FEB90 file for next SCRT processing.
…………………………………….
SMF INDD2 DATASET CANNOT BE READ
SYSTEM ABEND CODE IS 002 REASON/RETURN CODE IS 0004
NO FURTHER PROCESSING OF THIS DATASET
Abend002-04 (ABEND002 with rc=0004) usually occurs as a result of previous abend which causes a partial record to be written out to the dataset IPOSAV.SMFDUMPW (during job DUMPXY with RC=0008) which is later copied as KCI08.SMFR.D051112used for SCRT processing.
. When more records are mod’d to the end of the dataset, the partial record is then followed by valid records. Since SMF records can span blocks, the segment descriptor word (SDW)is used to determine if a record is complete; the 1st part of a segmented record, the middle part of a segmented record, or the end of a segmented record.When another record is mod’d onto the partial record, the segment descriptor words may not match up. This results of the abend002-4 are: Segment descriptor values:
00 – complete record
01 – first part of a segmented record
10 – last part of a segmented record
11 – middle of a segmented record
2. Removing bad SMF records
The solution of this problem (Abend002-04) is to use the program VBSFIX received as the attached file vbsfix_Source.txt in the e-mail from IBM SMF Level 2 Support. VBSFIX program read VBS records, detect, report on, and delete “bad” (i.e., invalidly spanned) Variable Blocked Spanned (VBS) records. This program is designed to read a VBS (non-VSAM) data set and check on valid SDW‘s. Invalid segments are converted to VB output in file ‘BADRECS’. Valid records are copied to file ‘OUTPUT’.
The character file vbsfix_Source.txt is saved from the attached file of e-mail of IBM SMF Level 2 Support on PC. This is an Assembler source program that is transferred to Mainframe in character format using FTP or TSO/IND$FILE with command ‘send vbsfix_Source.txt a: BC2A.ZOS140.OPER.LIB(VBSFIXA) ascii crlf’ to library BC2A.ZOS140.OPER.LIB as member VBSFIXA. The following JCL in the member ASSBATCH of library BC2A.ZOS140.OPER.LIB is used to assemble, Link Edit the source program and catalog it as a load program VBSFIXA into library BCI05.LIB.BASE.LOAD:
//ASSBATCH JOB TIME=1440,
// NOTIFY=&SYSUID,
// REGION=6500K,
// CLASS=B,
// MSGCLASS=X,
// MSGLEVEL=(1,1)
//*——————————————————————-
//* ASSEMBLER JCL – 07/2003 –
//* –
//* CHANGE PARMS BELOW: –
//* BCCSLIB = SOURCE LIBRARY –
//* BCCTLOAD = LOAD LIBRARY –
//* BCCMEMBR = SOURCE AND OUTPUT MEMBER NAME –
//*——————————————————————-
// SET BCCSLIB=‘BC2A.ZOS140.OPER.LIB’ ** SOURCE LIBRARY
// SET BCCTLOAD=‘BCI05.LIB.BASE.LOAD’ ** LOAD LIBRARY
//* SET BCCTLOAD=’BCI05.LIB.BASE.OBJECT’ ** OBJ LIBRARY
// SET BCCMEMBR=VBSFIXA ** MEMBER
//*——————————————————————-
//*- JCL BELOW –
//*——————————————————————-
//ASM EXEC PGM=ASMA90,
// PARM=’OBJECT,XREF(SHORT),NODECK,NORENT’
//SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR
//SYSUT1 DD DSN=&&SYSUT1,UNIT=3390,SPACE=(1700,(900,900)),
// SEP=(SYSLIB)
//SYSUT2 DD DSN=&&SYSUT2,UNIT=3390,SPACE=(1700,(900,900)),
// SEP=(SYSLIB,SYSUT1)
//SYSUT3 DD DSN=&&SYSUT3,UNIT=3390,SPACE=(1700,(900,900))
//SYSPRINT DD SYSOUT=*,DCB=BLKSIZE=1089
//SYSLIN DD DSN=&&OBJSET1,UNIT=3390,SPACE=(80,(200,50)),
// DISP=(,PASS),DCB=BLKSIZE=3120
//SYSIN DD DSN=&BCCSLIB(&BCCMEMBR),DISP=SHR,
// FREE=CLOSE
//LKED EXEC PGM=IEWL,COND=(4,LT,ASM),
// PARM=’RENT,MAP,LET,LIST,NCAL’
//SYSLIN DD DSN=&&OBJSET1,DISP=(OLD,DELETE)
//SYSUT1 DD DSN=&&SYSUT1,UNIT=(3390,SEP=(SYSLIN,SYSLMOD)),
// SPACE=(1024,(50,20))
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DSN=&BCCTLOAD(&BCCMEMBR),DISP=SHR
//STGO EXEC PGM=&BCCMEMBR
//STEPLIB DD DSN=BCI05.LIB.BASE.LOAD,DISP=SHR
// DD DSN=KCI55.LIB.PROD.LOAD,DISP=SHR
//*SNDUMP DD SYSOUT=*
//
The execution of the program VBSFIXA is performed by JCL job VBSFIXE using as input the file KCI08.SMFR.D051112 and the valid records are copied to output file KCI08.SMFRF.D051112. Invalid segments are converted to VB output badrecs file KCI08.SMFRFB.D051112.
//VBSFIXE JOB (9999,IPO,10,10),MSGCLASS=O,NOTIFY=HLQ,REGION=5M
//STEPNAME EXEC PGM=VBSFIXA
//SYSPRINT DD SYSOUT=A
//SYSIN DD * S
//STEPLIB DD DSN=BCI05.LIB.BASE.LOAD,DISP=SHR
//INPUT DD DSN=KCI08.SMFR.D051112,DISP=SHR
//OUTPUT DD DSN=KCI08.SMFRF.D051112,
// DCB=(RECFM=VBS,
// LRECL=32760,
// BLKSIZE=32760),
// UNIT=(3390,1),
// SPACE=(TRK,(700,600)),
// DISP=(NEW,CATLG,DELETE)
//BADRECS DD DSN=KCI08.SMFRFB.D051112,
// DCB=(RECFM=VB,LRECL=32756,BLKSIZE=32760),
// UNIT=(3390,1),
// SPACE=(TRK,(700,600)),
// DISP=(NEW,CATLG,DELETE)
The job SMFEXTR is executed using as input the repared file KCI08.SMFRFB.D051112 with only valid SMF records (bad SMF records are removed) and finished with cc=0000 producing a good SMF extract file for the next SCRT processing.
Comments
No comments yet, be the first to add one!