PGM PARM(&FILE &QJOB &SPLNBR) DCL VAR(&FILE ) TYPE(*CHAR) LEN(10) DCL VAR(&QJOB ) TYPE(*CHAR) LEN(26) DCL VAR(&SPLNBR ) TYPE(*DEC) LEN(4 0) DCL VAR(&PSPLNBR) TYPE(*CHAR) LEN(4) + VALUE(' ') DCL VAR(&JOB ) TYPE(*CHAR) LEN(10) DCL VAR(&USR ) TYPE(*CHAR) LEN(10) DCL VAR(&NBR ) TYPE(*CHAR) LEN( 6) DCL VAR(&SPLFA ) TYPE(*CHAR) LEN(1142) DCL VAR(&LEN ) TYPE(*CHAR) LEN(4) DCL VAR(&JOBI ) TYPE(*CHAR) LEN(16) + VALUE(' ') DCL VAR(&SPLFI ) TYPE(*CHAR) LEN(16) + VALUE(' ') DCL VAR(&WIDTH) TYPE(*CHAR) LEN( 4) DCL VAR(&RECLEN) TYPE(*DEC) LEN(5 0) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERRLABEL)) /* スプール情報の取得 */ CHGVAR VAR(%BIN(&LEN)) VALUE(1142) CHGVAR VAR(%BIN(&PSPLNBR)) VALUE(&SPLNBR) CALL PGM(QUSRSPLA) PARM(&SPLFA &LEN 'SPLA0100' + &QJOB &JOBI &SPLFI &FILE &PSPLNBR) /* ページ幅 */ CHGVAR VAR(&WIDTH) VALUE(%SST(&SPLFA 429 4)) /* 物理ファイルの作成 */ CHGVAR VAR(&RECLEN) VALUE(%BIN(&WIDTH 1 4)) CRTPF FILE(QTEMP/PRTPF) RCDLEN(&RECLEN) IGCDTA(*YES) MONMSG MSGID(CPF7302) EXEC(DO) DLTF FILE(QTEMP/PRTPF) CRTPF FILE(QTEMP/PRTPF) RCDLEN(&RECLEN) IGCDTA(*YES) ENDDO CHGVAR VAR(&RECLEN) VALUE(&RECLEN+5) CRTPF FILE(QTEMP/SPLPF) RCDLEN(&RECLEN) IGCDTA(*YES) MONMSG MSGID(CPF7302) EXEC(DO) DLTF FILE(QTEMP/SPLPF) CRTPF FILE(QTEMP/SPLPF) RCDLEN(&RECLEN) IGCDTA(*YES) ENDDO /* スプールファイルのコピー */ CHGVAR VAR(&JOB) VALUE(%SST(&QJOB 1 10)) CHGVAR VAR(&USR) VALUE(%SST(&QJOB 11 10)) CHGVAR VAR(&NBR) VALUE(%SST(&QJOB 21 6)) IF COND(&SPLNBR *EQ -1) THEN(DO) IF COND(%SST(&QJOB 1 1) *EQ '*') THEN(DO) CPYSPLF FILE(&FILE) TOFILE(QTEMP/SPLPF) + SPLNBR(*LAST) CTLCHAR(*PRTCTL) ENDDO ELSE CMD(DO) CPYSPLF FILE(&FILE) TOFILE(QTEMP/SPLPF) + JOB(&NBR/&USR/&JOB) + SPLNBR(*LAST) CTLCHAR(*PRTCTL) ENDDO ENDDO IF COND(&SPLNBR *EQ 0) THEN(DO) IF COND(%SST(&QJOB 1 1) *EQ '*') THEN(DO) CPYSPLF FILE(&FILE) TOFILE(QTEMP/SPLPF) + SPLNBR(*ONLY) CTLCHAR(*PRTCTL) ENDDO ELSE CMD(DO) CPYSPLF FILE(&FILE) TOFILE(QTEMP/SPLPF) + JOB(&NBR/&USR/&JOB) + SPLNBR(*ONLY) CTLCHAR(*PRTCTL) ENDDO ENDDO IF COND(&SPLNBR *GE 1) THEN(DO) IF COND(%SST(&QJOB 1 1) *EQ '*') THEN(DO) CPYSPLF FILE(&FILE) TOFILE(QTEMP/SPLPF) + SPLNBR(&SPLNBR) CTLCHAR(*PRTCTL) ENDDO ELSE CMD(DO) CPYSPLF FILE(&FILE) TOFILE(QTEMP/SPLPF) + JOB(&NBR/&USR/&JOB) + SPLNBR(&SPLNBR) CTLCHAR(*PRTCTL) ENDDO ENDDO /* プログラムの実行 */ OVRDBF FILE(SPLPF) TOFILE(QTEMP/SPLPF) + OVRSCOPE(*JOB) OVRDBF FILE(PRTPF) TOFILE(QTEMP/PRTPF) + OVRSCOPE(*JOB) CALL PGM(SPLTOPFR) DLTOVR FILE(SPLPF) LVL(*JOB) DLTOVR FILE(PRTPF) LVL(*JOB) DLTF FILE(QTEMP/SPLPF) GOTO CMDLBL(ENDLABEL) ERRLABEL: SNDPGMMSG MSGID(CPF9899) MSGF(QCPFMSG) MSGTYPE(*ESCAPE) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ENDLABEL)) ENDLABEL: ENDPGM