如何找出物理文件中损坏的记录?
解答 下面提供的CL源程序可以帮助您找出物理文件中损坏的记录,但是不支持其他文件
系统中的文件类型,例如:/QNTS,/QOPT等。也不支持OS/400上其他类型的对象。
如果您的操作系统版本在R420以上,则该程序需要一个逻辑文件来支持:
/**********************************/
R RECORD PFILE(QSYS/QADBXREF)
DBXFIL
DBXLIB
DBXATR
DBXRDL
K DBXLIB
K DBXFIL
/**********************************/
以下就是CL源程序,将该程序编译成可执行代码,就可以运行了。
**********************************************************************
** 特别提示: ----------------------------------------------------- -**
** 请不要在生产机器上运行该程序!!请先在测试机器上充分测试后再运行!! -**
**********************************************************************
/* ACCEPT TWO PARAMETERS, THE RANGE OF LIBRARIES TO BE SCANNED ---- -*/
/* DO NOT FORGET TO CHECK FILES STARTING WITH $,@, # -------------- -*/
/* IF YOU WANT TO SCAN EVERYTHING, START WITH $ AND --------------- -*/
/* END WITH Z999999999 -------------------------------------------- -*/
/* WARNING: - A SMALL SPOOLED FILE WILL BE CREATED FOR EACH ----------*/
/* FILE TESTED. IF NO ERRORS ARE FOUND, THE SPOOL */ /* FILE IS EMPTY.*/
PGM PARM(&START &END)
/* LIBRARY TO START WITH --------------------------------------------*/
DCL VAR(&START) TYPE(*CHAR) LEN(10)
/* LIBRARY TO STOP AFTER --------------------------------------------*/
DCL VAR(&END) TYPE(*CHAR) LEN(10)
DCL VAR(&NBRRCDS) TYPE(*DEC) LEN(6)
DCLF FILE(CHECKLF) ALWNULL(*YES)
CHGJOB LOG(4 30 *SECLVL) LOGCLPGM(*NO)
OVRPRTF FILE(*PRTF) HOLD(*YES)
/* POSITION IN THE FILE TO THE PARTIAL KEY LIBRARY NAME------------ */
OVRDBF FILE(CHECKLF) POSITION(*KEYAE 1 RECORD + &START) OPNSCOPE(*JOB)
RCF: RCVF
MONMSG MSGID(CPF0864) EXEC(GOTO CMDLBL(ENDP))
CHGVAR VAR(&NBRRCDS) VALUE(32000 / &DBXRDL)
OVRDBF FILE(&DBXFIL) OPNSCOPE(*JOB) SEQONLY(*YES + &NBRRCDS)
IF COND(&DBXLIB > &END) THEN(GOTO CMDLBL(ENDP))
IF COND(&DBXATR = 'PF' │ &DBXATR = 'TB') THEN(DO)
IF COND(&DBXRDL > 4) THEN(DO)
CPYF FROMFILE(&DBXLIB/&DBXFIL) TOFILE(*PRINT) +
FROMMBR(*ALL) FROMRCD(1) INCCHAR(*RCD 1 + *EQ '[-')
MONMSG MSGID(CPF0000)
ENDDO
ENDDO
DLTOVR FILE(&DBXFIL)
GOTO CMDLBL(RCF)
ENDP:
ENDPGM