/*š**************************************************************************€*/ /*šSRCPARSER: Parse source members from single member €*/ /*šCopyright (C) 2000 Martin Rowe €*/ /*š €*/ /*šThis program is free software; you can redistribute it and/or modify €*/ /*šit under the terms of the GNU General Public License as published by €*/ /*šthe Free Software Foundation; either version 2 of the License, or €*/ /*š(at your option) any later version. €*/ /*š €*/ /*šThis program is distributed in the hope that it will be useful, €*/ /*šbut WITHOUT ANY WARRANTY; without even the implied warranty of €*/ /*šMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the €*/ /*šGNU General Public License for more details. €*/ /*š €*/ /*šYou should have received a copy of the GNU General Public License €*/ /*šalong with this program; if not, write to the Free Software €*/ /*šFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA€*/ /*š**************************************************************************€*/ PGM DCL VAR(&LINECOUNT) TYPE(*DEC) LEN(6 0) DCL VAR(&FROMRCD) TYPE(*DEC) LEN(6 0) VALUE(1) DCL VAR(&TORCD) TYPE(*DEC) LEN(6 0) DCL VAR(&MEMBER) TYPE(*CHAR) LEN(10) DCL VAR(&TYPE) TYPE(*CHAR) LEN(10) DCL VAR(&TEXT) TYPE(*CHAR) LEN(50) DCL VAR(&SRCLIB) TYPE(*CHAR) LEN(10) VALUE('DBG400') DCL VAR(&SRCFILE) TYPE(*CHAR) LEN(10) DCLF FILE(DBGSRCFILE) RCDFMT(DBGSRCFILE) /*š**************************************************************************€*/ /*šMAINLINE: €*/ /*š**************************************************************************€*/ CHKOBJ OBJ(&SRCLIB/QCLSRC) OBJTYPE(*FILE) MONMSG MSGID(CPF9801) EXEC(CRTSRCPF + FILE(&SRCLIB/QCLSRC)) CHKOBJ OBJ(&SRCLIB/QCMDSRC) OBJTYPE(*FILE) MONMSG MSGID(CPF9801) EXEC(CRTSRCPF + FILE(&SRCLIB/QCMDSRC)) CHKOBJ OBJ(&SRCLIB/QDDSSRC) OBJTYPE(*FILE) MONMSG MSGID(CPF9801) EXEC(CRTSRCPF + FILE(&SRCLIB/QDDSSRC)) CHKOBJ OBJ(&SRCLIB/QRPGSRC) OBJTYPE(*FILE) MONMSG MSGID(CPF9801) EXEC(CRTSRCPF + FILE(&SRCLIB/QRPGSRC)) CHKOBJ OBJ(&SRCLIB/QTXTSRC) OBJTYPE(*FILE) MONMSG MSGID(CPF9801) EXEC(CRTSRCPF + FILE(&SRCLIB/QTXTSRC)) CHKOBJ OBJ(&SRCLIB/QPNLSRC) OBJTYPE(*FILE) MONMSG MSGID(CPF9801) EXEC(CRTSRCPF + FILE(&SRCLIB/QPNLSRC)) CHKOBJ OBJ(&SRCLIB/QQMQRYSRC) OBJTYPE(*FILE) MONMSG MSGID(CPF9801) EXEC(CRTSRCPF + FILE(&SRCLIB/QQMQRYSRC)) CHKOBJ OBJ(&SRCLIB/QRPGLESRC) OBJTYPE(*FILE) MONMSG MSGID(CPF9801) EXEC(CRTSRCPF + FILE(&SRCLIB/QRPGLESRC) RCDLEN(112)) OVRDBF FILE(DBGSRCFILE) TOFILE(&SRCLIB/DBGSRCFILE) + MBR(ALLSRCMBRS) /*šProcess all the records in the ALLDBGMBRS member €*/ TOPOFLOOP: RCVF RCDFMT(DBGSRCFILE) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ENDPGM)) CHGVAR VAR(&LINECOUNT) VALUE(&LINECOUNT + 1) /*šCheck if we've reached the end of the member yet €*/ IF COND(%SST(&SRCDTA 1 10) = '::PARSER::') + THEN(DO) /*šSet the end of the previous member €*/ CHGVAR VAR(&TORCD) VALUE(&LINECOUNT - 1) /*šExtract the member details €*/ CHGVAR VAR(&MEMBER) VALUE(%SST(&SRCDTA 11 10)) CHGVAR VAR(&TYPE) VALUE(%SST(&SRCDTA 21 10)) CHGVAR VAR(&SRCFILE) VALUE(%SST(&SRCDTA 31 10)) CHGVAR VAR(&TEXT) VALUE(%SST(&SRCDTA 41 50)) /*šCreate a matching member in the appropriate source file €*/ CHKOBJ OBJ(&SRCLIB/&SRCFILE) OBJTYPE(*FILE) + MBR(&MEMBER) MONMSG MSGID(CPF9815) EXEC(ADDPFM + FILE(&SRCLIB/&SRCFILE) MBR(&MEMBER) + TEXT(&TEXT)) CHGPFM FILE(&SRCLIB/&SRCFILE) MBR(&MEMBER) + SRCTYPE(&TYPE) TEXT(&TEXT) /*šAdd in the records from the subsection just processed €*/ CPYF FROMFILE(&SRCLIB/DBGSRCFILE) + TOFILE(&SRCLIB/&SRCFILE) + FROMMBR(ALLSRCMBRS) TOMBR(&MEMBER) + MBROPT(*REPLACE) FROMRCD(&FROMRCD) + TORCD(&TORCD) FMTOPT(*MAP) SRCOPT(*SEQNBR + *DATE) /*šSet the start point for the next section €*/ CHGVAR VAR(&FROMRCD) VALUE(&LINECOUNT + 1) ENDDO GOTO CMDLBL(TOPOFLOOP) ENDPGM: RETURN ENDPGM