スプールファイルを別のOUTQに複写します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
スプールファイル複写 (CRTDUPSPLF) 選択項目を入力して,実行キーを押してください。 スプールファイル . . . . . . . > CRTDUPSPLC 名前 複写先 OUTQ . . . . . . . . . . > OUTQ 名前 ライブラリー . . . . . . . . > QGPL 名前 , *LIBL, *CURLIB ジョブ名 . . . . . . . . . . . * 名前 , * ユーザー . . . . . . . . . . 名前 番号 . . . . . . . . . . . . 000000-999999 スプールファイル番号 . . . . . > *LAST 1-9999, *ONLY, *LAST 新ユーザー . . . . . . . . . . > *SAME 名前 , *SAME 終り F3= 終了 F4=プロンプト F5= 最新表示 F12= 取消し F13= この画面の使用法 F24= キーの続き |
CMD:CRTDUPSPLF
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
CMD PROMPT('スプールファイル複写') PARM KWD(FILE) TYPE(*SNAME) LEN(10) MIN(1) + PROMPT('スプールファイル') PARM KWD(TOOUTQ) TYPE(QUAL1) PROMPT('+ 複写先OUTQ') PARM KWD(JOB) TYPE(QUAL2) DFT(*) SNGVAL((*)) + PROMPT('ジョブ名') PARM KWD(SPLNBR) TYPE(*DEC) LEN(5) DFT(*ONLY) + RANGE(1 9999) SPCVAL((*ONLY 0) (*LAST + 99999)) PROMPT('スプールファイル番号') PARM KWD(USER) TYPE(*NAME) LEN(10) DFT(*SAME) + SPCVAL((*SAME)) MIN(0) MAX(1) PROMPT('+ 新ユーザー') QUAL1: QUAL TYPE(*NAME) MIN(1) QUAL TYPE(*NAME) DFT(*LIBL) SPCVAL((*LIBL) + (*CURLIB)) PROMPT('ライブラリー') QUAL2: QUAL TYPE(*NAME) LEN(10) MIN(1) QUAL TYPE(*NAME) LEN(10) PROMPT('ユーザー') QUAL TYPE(*CHAR) LEN(6) RANGE(000000 999999) + PROMPT('番号') |
CL:CRTDUPSPLC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
PGM PARM(&FROMSPLF + &TOOUTQ + &JOB + &SPLNBR + &TOUSER) DCL VAR(&FROMSPLF) TYPE(*CHAR) LEN(10) DCL VAR(&TOOUTQ) TYPE(*CHAR) LEN(20) DCL VAR(&JOB) TYPE(*CHAR) LEN(26) DCL VAR(&SPLNBR) TYPE(*DEC) LEN(5 0) DCL VAR(&TOUSER) TYPE(*CHAR) LEN(10) DCL VAR(&OUTQ) TYPE(*CHAR) LEN(10) DCL VAR(&OUTQL) TYPE(*CHAR) LEN(10) DCL VAR(&RTNLIB) TYPE(*CHAR) LEN(10) DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) DCL VAR(&MSGLIB) TYPE(*CHAR) LEN(10) DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(80) DCL VAR(&ERRORIND) TYPE(*LGL) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) CHGVAR VAR(&OUTQ) VALUE(%SST(&TOOUTQ 1 10)) CHGVAR VAR(&OUTQL) VALUE(%SST(&TOOUTQ 11 10)) CHKOBJ OBJ(&OUTQL/&OUTQ) OBJTYPE(*OUTQ) AUT(*USE) IF COND(&OUTQL *EQ '*LIBL') THEN(DO) RTVOBJD OBJ(&OUTQ) OBJTYPE(*OUTQ) RTNLIB(&RTNLIB) CHGVAR VAR(&TOOUTQ) VALUE(&OUTQ *CAT &RTNLIB) CHGVAR VAR(&OUTQL) VALUE(&RTNLIB) ENDDO IF COND(&OUTQL *EQ '*CURLIB') THEN(DO) RTVOBJD OBJ(*CURLIB/&OUTQ) OBJTYPE(*OUTQ) + RTNLIB(&RTNLIB) CHGVAR VAR(&TOOUTQ) VALUE(&OUTQ *CAT &RTNLIB) CHGVAR VAR(&OUTQL) VALUE(&RTNLIB) ENDDO CALL PGM(CRTDUPSPLR) PARM(&FROMSPLF &TOOUTQ &JOB + &SPLNBR &TOUSER &ERRORIND) IF COND(&ERRORIND) THEN(DO) SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('+ スプールファイルは複写されませんでした。') + MSGTYPE(*ESCAPE) ENDDO ELSE CMD(DO) SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('+ スプールファイルは複写されました。') + MSGTYPE(*COMP) ENDDO GOTO CMDLBL(END) ERROR: RCVMSG MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) + MSGF(&MSGF) MSGFLIB(&MSGLIB) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGLIB/&MSGF) + MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE) END: ENDPGM |
RPG:CRTDUPSPLR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
D FROMSPLF S 10 D TOOUTQ S 20 D JOB S 26 D SPLNBR S 5 0 D TOUSER S 10 D ERRORIND S N * D UZRSPC S 20 INZ('CRTDUPSPLRQTEMP ') D ATR S 10 D SIZE S 9B 0 INZ(10000) D INIT S 1 D AUT S 10 INZ('*ALL') D DESC S 50 INZ('USER SPACE') D RPLXPX S 10 INZ('*YES') * D ERROR DS INZ D BYTPRV 1 4B 0 * D RECLEN S 9B 0 INZ(4000) D FORMATSPLA S 8 INZ('SPLA0200') D INTJOB S 16 D INTSPOOL S 16 D SPOOL# S 9B 0 D NEWSPLFHDL S 9B 0 INZ(3850) D FRMSPLFHDL S 9B 0 INZ(3850) D BUFFER# S 9B 0 INZ(-1) D FORMATGET S 9 INZ('SPFR0200') D ENDSPOOLF S 10 INZ('*WAIT') * D QUSA0200 DS 4000 INZ D QUSOU01 10 OVERLAY(QUSA0200:59) D QUSON01 10 OVERLAY(QUSA0200:191) D QUSOL01 10 OVERLAY(QUSA0200:201) * D QUSCRTUS C 'QUSCRTUS' D QUSRSPLA C 'QUSRSPLA' D QSPCRTSP C 'QSPCRTSP' D QSPOPNSP C 'QSPOPNSP' D QSPGETSP C 'QSPGETSP' D QSPPUTSP C 'QSPPUTSP' D QSPCLOSP C 'QSPCLOSP' * C *ENTRY PLIST C PARM FROMSPLF C PARM TOOUTQ C PARM JOB C PARM SPLNBR C PARM TOUSER C PARM ERRORIND * C IF SPLNBR = 99999 C EVAL SPOOL# = -1 C ELSE C EVAL SPOOL# = SPLNBR C ENDIF * C CALL QUSCRTUS C PARM UZRSPC C PARM ATR C PARM SIZE C PARM INIT C PARM AUT C PARM DESC C PARM RPLXPX C PARM ERROR * C CALL QUSRSPLA C PARM QUSA0200 C PARM RECLEN C PARM FORMATSPLA C PARM JOB C PARM INTJOB C PARM INTSPOOL C PARM FROMSPLF C PARM SPOOL# C PARM ERROR * C CALL QSPOPNSP C PARM FRMSPLFHDL C PARM JOB C PARM INTJOB C PARM INTSPOOL C PARM FROMSPLF C PARM SPOOL# C PARM BUFFER# C PARM ERROR * C IF TOUSER <> '*SAME' C EVAL QUSOU01 = TOUSER C ENDIF C EVAL QUSON01 = %SUBST(TOOUTQ:1:10) C EVAL QUSOL01 = %SUBST(TOOUTQ:11:10) * C CALL QSPCRTSP C PARM NEWSPLFHDL C PARM QUSA0200 C PARM ERROR * C CALL QSPGETSP C PARM FRMSPLFHDL C PARM UZRSPC C PARM FORMATGET C PARM BUFFER# C PARM ENDSPOOLF C PARM ERROR * C CALL QSPPUTSP C PARM NEWSPLFHDL C PARM UZRSPC C PARM ERROR * C CALL QSPCLOSP C PARM FRMSPLFHDL C PARM ERROR * C CALL QSPCLOSP C PARM NEWSPLFHDL C PARM ERROR * C EVAL *INLR = *ON C RETURN * C *PSSR BEGSR C EVAL ERRORIND = *ON C EVAL *INLR = *ON C RETURN C ENDSR |