VIEWMFFC
来源:互联网 发布:cydia 网络超时 编辑:程序博客网 时间:2024/05/16 19:34
/**************************************************************/
/* PROGRAM ID : VIEWMFFC */
/* PURPOSE : VIEW MAINFRAME FILE ACCORDING TO COPYBOOK */
/* CALLED BY : */
/* CALLING : CBL2DDS */
/* DATE : JUL/27/2004 */
/* WRITTEN : GRACE.GUO RON.YANG */
/* */
/* CODE DATE(YYMD) REASON */
/* ------- ---------- ------------------------------------*/
/* JZ01 05/01/15 HANDLE SELECTING RECORD RANGE */
/* FIX BUG */
/**************************************************************/
/*JZ01 PGM PARM(&FILE &LIB &MBR &CPYBKMBR &CPYBKFILE +
&CPYBKLIB) */
/*JZ01*/ PGM PARM(&FILE &LIB &MBR &CPYBKMBR &CPYBKFILE +
&CPYBKLIB &FROMRCDBIN &TORCDBIN)
DCL VAR(&FILE) TYPE(*CHAR) LEN(10)
DCL VAR(&LIB) TYPE(*CHAR) LEN(10)
DCL VAR(&MBR) TYPE(*CHAR) LEN(10)
DCL VAR(&CPYBKMBR) TYPE(*CHAR) LEN(10)
DCL VAR(&CPYBKFILE) TYPE(*CHAR) LEN(10)
DCL VAR(&CPYBKLIB) TYPE(*CHAR) LEN(10)
/*JZ01*/ DCL VAR(&FROMRCDCHR) TYPE(*CHAR) LEN(10)
/*JZ01*/ DCL VAR(&TORCDCHR) TYPE(*CHAR) LEN(10)
/*JZ01*/ DCL VAR(&FROMRCDDEC) TYPE(*DEC) LEN(15)
/*JZ01*/ DCL VAR(&TORCDDEC) TYPE(*DEC) LEN(15)
/*JZ01*/ DCL VAR(&FROMRCDBIN) TYPE(*CHAR) LEN(4)
/*JZ01*/ DCL VAR(&TORCDBIN) TYPE(*CHAR) LEN(4)
DCL VAR(&MSGMBR) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGFILE) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGLIB) TYPE(*CHAR) LEN(10)
/*JZ01*/ DCL VAR(&MSGTXT) TYPE(*CHAR) LEN(3000)
/*JZ01*/ DCL VAR(&RCD#) TYPE(*DEC) LEN(10 0)
/*JZ01*/ CHGVAR VAR(&FROMRCDDEC) VALUE(%BIN(&FROMRCDBIN))
/*JZ01*/ CHGVAR VAR(&TORCDDEC) VALUE(%BIN(&TORCDBIN))
/*JZ01*/ CHGVAR VAR(&FROMRCDCHR) VALUE(&FROMRCDDEC)
/*JZ01*/ IF COND(&TORCDDEC *EQ -1) THEN(DO)
/*JZ01*/ CHGVAR VAR(&TORCDCHR) VALUE('*END')
/*JZ01*/ ENDDO
/*JZ01*/ ELSE CMD(DO)
/*JZ01*/ CHGVAR VAR(&TORCDCHR) VALUE(&TORCDDEC)
/*JZ01*/ ENDDO
/*JZ01*/ RTVMBRD FILE(&LIB/&FILE) NBRCURRCD(&RCD#)
/*JZ01*/ IF COND(&TORCDDEC *EQ -1) THEN(DO)
/*JZ01*/ CHGVAR VAR(&TORCDDEC) VALUE(&RCD#)
/*JZ01*/ ENDDO
/*JZ01*/ CHGVAR VAR(&RCD#) VALUE(&TORCDDEC - &FROMRCDDEC)
/*JZ01*/ IF COND((&RCD# *GE 100000) *OR +
(&RCD# *LE 0)) THEN(DO)
/*JZ01*/ SNDPGMMSG MSG('SELECTED RECORDS ARE GREATE THAN 99999 +
OR LESS THAN 1')
/*JZ01*/ GOTO CMDLBL(#ENDP)
/*JZ01*/ ENDDO
/*JZ01*/ DLTF FILE(QTEMP/&FILE)
/*JZ01*/ MONMSG MSGID(CPF2105) EXEC(GOTO CMDLBL(#NEXT))
/*JZ01*/ MONMSG MSGID(CPF0601 CPF2114 CPF2189 CPF3203) +
EXEC(DO)
/*JZ01*/ SNDPGMMSG MSG('DELETE QTEMP FILE ERROR !')
/*JZ01*/ GOTO CMDLBL(#ENDP)
/*JZ01*/ ENDDO
/*JZ01*/ #NEXT: DLTF FILE(QTEMP/CPY2DDS)
/*JZ01*/ MONMSG MSGID(CPF2105) EXEC(GOTO CMDLBL(#NEXT1))
/*JZ01*/ MONMSG MSGID(CPF0601 CPF2114 CPF2189 CPF3203) +
EXEC(DO)
/*JZ01*/ SNDPGMMSG MSG('DELETE QTEMP/CPY2DDS ERROR !')
/*JZ01*/ GOTO CMDLBL(#ENDP)
/*JZ01*/ ENDDO
/*JZ01*/ #NEXT1:
/*CHECK COPY BOOK MEMBER, NOT EQUAL *BLANL */
/* IF COND(&CPYBKMBR *EQ ' ') THEN(DO) */
/* SNDPGMMSG MSG('COPY BOOK MEMBER NOT ALLOWED EMPTY!') */
/* GOTO CMDLBL(#ENDP) */
/* ENDDO */
/*CHECK MEMBER MUST BE EXIST */
CHGVAR VAR(&MSGMBR) VALUE(&MBR)
CHGVAR VAR(&MSGFILE) VALUE(&FILE)
CHGVAR VAR(&MSGLIB) VALUE(&LIB)
CHKOBJ OBJ(&LIB/&FILE) OBJTYPE(*FILE) MBR(&MBR)
MONMSG MSGID(CPF9801) EXEC(DO)
GOTO CMDLBL(#MSG9801)
ENDDO
MONMSG MSGID(CPF9802) EXEC(DO)
GOTO CMDLBL(#MSG9802)
ENDDO
MONMSG MSGID(CPF9810) EXEC(DO)
GOTO CMDLBL(#MSG9810)
ENDDO
MONMSG MSGID(CPF9815) EXEC(DO)
GOTO CMDLBL(#MSG9815)
ENDDO
MONMSG MSGID(CPF9820) EXEC(DO)
GOTO CMDLBL(#MSG9820)
ENDDO
MONMSG MSGID(CPF9830) EXEC(DO)
GOTO CMDLBL(#MSG9830)
ENDDO
MONMSG MSGID(CPF9899) EXEC(DO)
GOTO CMDLBL(#MSG9899)
ENDDO
/*CHECK COPY BOOK MEMBER: MUST EXIST, UNLESS EQ 'DUMMY' */
IF COND(&CPYBKMBR *NE 'DUMMY') THEN(DO)
CHGVAR VAR(&MSGMBR) VALUE(&CPYBKMBR)
CHGVAR VAR(&MSGFILE) VALUE(&CPYBKFILE)
CHGVAR VAR(&MSGLIB) VALUE(&CPYBKLIB)
CHKOBJ OBJ(&CPYBKLIB/&CPYBKFILE) OBJTYPE(*FILE) +
MBR(&CPYBKMBR)
MONMSG MSGID(CPF9801) EXEC(DO)
GOTO CMDLBL(#MSG9801)
ENDDO
MONMSG MSGID(CPF9802) EXEC(DO)
GOTO CMDLBL(#MSG9802)
ENDDO
MONMSG MSGID(CPF9810) EXEC(DO)
GOTO CMDLBL(#MSG9810)
ENDDO
MONMSG MSGID(CPF9815) EXEC(DO)
GOTO CMDLBL(#MSG9815)
ENDDO
MONMSG MSGID(CPF9820) EXEC(DO)
GOTO CMDLBL(#MSG9820)
ENDDO
MONMSG MSGID(CPF9830) EXEC(DO)
GOTO CMDLBL(#MSG9830)
ENDDO
MONMSG MSGID(CPF9899) EXEC(DO)
GOTO CMDLBL(#MSG9899)
ENDDO
ENDDO
OVRDBF FILE(MFFILE) TOFILE(&LIB/&FILE) +
MBR(&MBR)
/* IF COPY BOOK MEMBER = 'DUMMY', THEN NO COPY BOOK EXIST */
IF COND(&CPYBKMBR *EQ 'DUMMY') THEN(DO)
/*JZ01 CPYF FROMFILE(MFFILE) TOFILE(QTEMP/&FILE) +
TOMBR(&MBR) CRTFILE(*YES) */
/*JZ01*/ CPYF FROMFILE(MFFILE) TOFILE(QTEMP/&FILE) +
TOMBR(&MBR) CRTFILE(*YES) +
FROMRCD(&FROMRCDCHR) TORCD(&TORCDCHR)
MONMSG MSGID(CPF0000) EXEC(DO)
SNDPGMMSG MSG('COPY FILE' *BCAT &FILE *BCAT +
'TO QTEMP FAILED!')
GOTO CMDLBL(#ENDJOB)
ENDDO
ENDDO
/* ELSE COPY FILE TO QTEMP ACCORDING TO DDS */
ELSE DO
/* CREATE SOURCE FILE IN QTEMP */
CRTSRCPF FILE(QTEMP/CPY2DDS) RCDLEN(112)
MONMSG MSGID(CPF0000) EXEC(DO)
/* SNDPGMMSG MSG('CREATE SRC_PF CPY2DDS IN QTEMP FAILED') */
/* GOTO CMDLBL(#ENDJOB) */
ENDDO
/* CALL PGM TO CONVERT COPYBOOK TO DDS */
/*JZ01*/ RMVMSG CLEAR(*ALL)
/*JZ01*/ CHGVAR VAR(&MSGTXT) VALUE(' ')
CBL2DDS INMBR(&CPYBKMBR) INFILE(&CPYBKFILE) +
INLIB(&CPYBKLIB) +
OUTMBR(&CPYBKMBR) OUTFILE(CPY2DDS) +
OUTLIB(QTEMP) +
REPLACE(Y)
/*JZ01*/ RCVMSG MSGTYPE(*PRV) MSGKEY(*TOP) MSG(&MSGTXT)
/*JZ01*/ IF COND(&MSGTXT *NE ' ') THEN(DO)
/*JZ01 MONMSG MSGID(CPF0000) EXEC(DO) */
SNDPGMMSG MSG('COMMAND CBL2DDS FAILED!')
SNDPGMMSG MSG('CONVERT COPYBOOK TO DDS FAILED!')
GOTO CMDLBL(#ENDJOB)
ENDDO
/* RETRIVE THE MEMBER NAME OF BROWSED FILE. IF *FIRST */
IF COND(&MBR *EQ '*FIRST') THEN(DO)
RTVMBRD FILE(&LIB/&FILE) MBR(&MBR) +
RTNMBR(&MBR)
ENDDO
CRTPF FILE(QTEMP/&FILE) SRCFILE(QTEMP/CPY2DDS) +
SRCMBR(&CPYBKMBR) MBR(&MBR)
MONMSG MSGID(CPF0000) EXEC(DO)
SNDPGMMSG MSG('CREATE PF ' *BCAT &FILE *CAT '/' +
*CAT &MBR *BCAT 'IN QTEMP FAILED!')
GOTO CMDLBL(#ENDJOB)
ENDDO
/* COPY FLAT FILE'D DATA TO NEW CREATED PF */
/*JZ01 CPYF FROMFILE(MFFILE) TOFILE(QTEMP/&FILE) +
MBROPT(*REPLACE) FMTOPT(*NOCHK) */
/*JZ01*/ CPYF FROMFILE(MFFILE) TOFILE(QTEMP/&FILE) +
MBROPT(*REPLACE) FROMRCD(&FROMRCDCHR) +
TORCD(&TORCDCHR) FMTOPT(*NOCHK)
MONMSG MSGID(CPF0000) EXEC(DO)
SNDPGMMSG MSG('COPY FILE' *BCAT &FILE *BCAT +
'TO QTEMP FAILED!')
GOTO CMDLBL(#ENDJOB)
ENDDO
ENDDO
/* RUN QUERY TO BROWSE THE DATA */
/* RUNQRY QRY(*NONE) QRYFILE((QTEMP/&FILE)) */
/* START DBU UTILITIES */
DBU FILE(QTEMP/&FILE) DBUTYP(*FILE) MBR(&MBR)
GOTO CMDLBL(#ENDJOB)
/* PROCESSING DISPLAY MESSAGE OF CHECKING OBJECT */
#MSG9801: SNDPGMMSG MSG('OBJECT' *BCAT &MSGFILE *BCAT +
'IN LIBRARY' *BCAT &MSGLIB *BCAT 'NOT FOUND!')
GOTO CMDLBL(#ENDP)
#MSG9802: SNDPGMMSG MSG('NOT AUTHORIZED TO OBJECT' +
*BCAT &MSGFILE *BCAT 'IN' *BCAT &MSGLIB *BCAT +
'!')
GOTO CMDLBL(#ENDP)
#MSG9810: SNDPGMMSG MSG('LIBRARY' *BCAT &MSGLIB *BCAT 'NOT FOUND!')
GOTO CMDLBL(#ENDP)
#MSG9815: SNDPGMMSG MSG('MEMBER' *BCAT &MSGMBR *BCAT 'FILE' *BCAT +
&MSGFILE *BCAT 'IN LIBRARY' *BCAT &MSGLIB +
*BCAT 'NOT FOUND!')
GOTO CMDLBL(#ENDP)
#MSG9820: SNDPGMMSG MSG('NOT AUTHORIZED TO USE LIBRARY' +
*BCAT &MSGLIB *BCAT '!')
GOTO CMDLBL(#ENDP)
#MSG9830: SNDPGMMSG MSG('CANNOT ASSIGN LIBRARY' +
*BCAT &MSGLIB *BCAT '!')
GOTO CMDLBL(#ENDP)
#MSG9899: SNDPGMMSG MSG('ERROR OCCURRED DURING PROCESSING OF +
COMMAND!')
GOTO CMDLBL(#ENDP)
#ENDJOB: DLTOVR FILE(MFFILE)
/*JZ01*/ MONMSG MSGID(CPF0000)
DLTF FILE(QTEMP/&FILE)
/*JZ01*/ MONMSG MSGID(CPF0000)
IF COND(&CPYBKMBR *NE 'DUMMY') THEN(DO)
DLTF FILE(QTEMP/CPY2DDS)
/*JZ01*/ MONMSG MSGID(CPF0000)
ENDDO
#ENDP: ENDPGM