MERGESPLF command: /* */ /* To compile : */ /* CRTCMD CMD(XXX/MERGESPLF) PGM(XXX/MERGESPLFC) + */ /* SRCFILE(XXX/QCMDSRC) */ /* */ /* */ MERGESPLF: CMD PROMPT('Merge Two Spoolfiles') PARM KWD(JOB1) TYPE(JOBNAME) DFT(*) SNGVAL((*)) + PROMPT('Job name') PARM KWD(SPLFILE1) TYPE(*NAME) LEN(10) DFT(QPRINT) + PROMPT('Spooled file name') PARM KWD(SPLNBR1) TYPE(*INT4) DFT(*LAST) RANGE(1 + 9999) SPCVAL((*ONLY 0) (*LAST -1)) MIN(0) + PROMPT('Spooled file number') PARM KWD(JOB2) TYPE(JOBNAME) DFT(*) SNGVAL((*)) + PROMPT('Job name') PARM KWD(SPLFILE2) TYPE(*NAME) LEN(10) DFT(QPRINT) + PROMPT('Spooled file name') PARM KWD(SPLNBR2) TYPE(*INT4) DFT(*LAST) RANGE(1 + 9999) SPCVAL((*ONLY 0) (*LAST -1)) MIN(0) + PROMPT('Spooled file number') JOBNAME: QUAL TYPE(*NAME) LEN(10) MIN(1) QUAL TYPE(*NAME) LEN(10) DFT(' ') SPCVAL((' ')) + CHOICE('Name') PROMPT('User') QUAL TYPE(*CHAR) LEN(6) DFT(' ') RANGE(000000 + 999999) SPCVAL((' ')) FULL(*YES) + CHOICE('000000-999999') PROMPT('Number') MERGESPLFC command processing program: /* To compile : */ /* CRTCLPGM PGM(XXX/MERGESPLFC) SRCFILE(XXX/QCLSRC) */ /* */ /* Uses the attributes from the first spool file. */ /* */ MERGESPLF: PGM PARM(&JOB1 &SPLFILE1 &SPLNBRBIN1 &JOB2 + &SPLFILE2 &SPLNBRBIN2) /* Parameters */ DCL VAR(&JOB1) TYPE(*CHAR) LEN(26) DCL VAR(&SPLFILE1) TYPE(*CHAR) LEN(10) DCL VAR(&SPLNBRBIN1) TYPE(*CHAR) LEN(4) DCL VAR(&JOB2) TYPE(*CHAR) LEN(26) DCL VAR(&SPLFILE2) TYPE(*CHAR) LEN(10) DCL VAR(&SPLNBRBIN2) TYPE(*CHAR) LEN(4) /* Form parms */ /* Variables */ DCL VAR(&SPLNBRDEC) TYPE(*DEC) LEN(8 0) DCL VAR(&SPLNBRCHR) TYPE(*CHAR) LEN(8) DCL VAR(&JOBNAME) TYPE(*CHAR) LEN(10) DCL VAR(&JOBUSER) TYPE(*CHAR) LEN(10) DCL VAR(&JOBNBR) TYPE(*CHAR) LEN(6) DLTF FILE(QTEMP/PFSPLF) MONMSG MSGID(CPF0000) CRTPF FILE(QTEMP/PFSPLF) RCDLEN(133) + OPTION(*NOSOURCE *NOLIST) SIZE(*NOMAX) /* Spool file #1 */ IF COND(%BIN(&SPLNBRBIN1) *EQ -1) THEN(CHGVAR + VAR(&SPLNBRCHR) VALUE(*LAST)) IF COND(%BIN(&SPLNBRBIN1) *GT 0) THEN(DO) CHGVAR VAR(&SPLNBRDEC) VALUE(%BIN(&SPLNBRBIN1)) CHGVAR VAR(&SPLNBRCHR) VALUE(&SPLNBRDEC) ENDDO IF COND(&JOB1 *EQ '*') THEN(RTVJOBA + JOB(&JOBNAME) USER(&JOBUSER) NBR(&JOBNBR)) ELSE CMD(DO) CHGVAR VAR(&JOBNAME) VALUE(%SST(&JOB1 1 10)) CHGVAR VAR(&JOBUSER) VALUE(%SST(&JOB1 11 10)) CHGVAR VAR(&JOBNBR) VALUE(%SST(&JOB1 21 6)) ENDDO CPYSPLF FILE(&SPLFILE1) TOFILE(QTEMP/PFSPLF) + JOB(&JOBNBR/&JOBUSER/&JOBNAME) + SPLNBR(&SPLNBRCHR) CTLCHAR(*FCFC) /* Spool file #2 */ IF COND(%BIN(&SPLNBRBIN2) *EQ -1) THEN(CHGVAR + VAR(&SPLNBRCHR) VALUE(*LAST)) IF COND(%BIN(&SPLNBRBIN2) *GT 0) THEN(DO) CHGVAR VAR(&SPLNBRDEC) VALUE(%BIN(&SPLNBRBIN2)) CHGVAR VAR(&SPLNBRCHR) VALUE(&SPLNBRDEC) ENDDO IF COND(&JOB2 *EQ '*') THEN(RTVJOBA + JOB(&JOBNAME) USER(&JOBUSER) NBR(&JOBNBR)) ELSE CMD(DO) CHGVAR VAR(&JOBNAME) VALUE(%SST(&JOB2 1 10)) CHGVAR VAR(&JOBUSER) VALUE(%SST(&JOB2 11 10)) CHGVAR VAR(&JOBNBR) VALUE(%SST(&JOB2 21 6)) ENDDO CPYSPLF FILE(&SPLFILE2) TOFILE(QTEMP/PFSPLF) + JOB(&JOBNBR/&JOBUSER/&JOBNAME) + SPLNBR(&SPLNBRCHR) MBROPT(*ADD) + CTLCHAR(*FCFC) /* Smush them together */ OVRPRTF FILE(QPRINTS) CTLCHAR(*FCFC) + SPLFNAME(MERGEDSPLF) OVRSCOPE(*JOB) CPYF FROMFILE(QTEMP/PFSPLF) TOFILE(QPRINTS) DLTOVR FILE(QPRINTS) LVL(*JOB) ENDPGM: ENDPGM