/* Program : DUPCHGSPLF */
/* Version : 2.01 */
/* System : iSeries */
/* Author : Herman Van der Staey */
/* Description : Duplicate and Change Spooled File */
/* To compile : */
/* CRTCLPGM PGM(XXX/DUPCHGSPLF) SRCFILE(XXX/QCLSRC) */
DUPCHGSPLF: PGM PARM(&JOB &SPLFILE &SPLNBRBIN &LPI &CPI +
&FONT &PAGRTT &OUTQ &DRAWER &FORMTYPE +
&USRDTA &HOLD &SAVE &DUPLEX &OUTBIN +
&NEWUSER &NEWSPLNAME &DLTSPLF)
/* Parameters */

DCL VAR(&JOB) TYPE(*CHAR) LEN(26)
DCL VAR(&SPLFILE) TYPE(*CHAR) LEN(10)
DCL VAR(&SPLNBRBIN) TYPE(*CHAR) LEN(4)
DCL VAR(&LPI) TYPE(*CHAR) LEN(4)
DCL VAR(&CPI) TYPE(*CHAR) LEN(4)
DCL VAR(&PAGRTT) TYPE(*CHAR) LEN(4)
DCL VAR(&DRAWER) TYPE(*CHAR) LEN(4)
DCL VAR(&FONT) TYPE(*CHAR) LEN(5)
DCL VAR(&OUTQ) TYPE(*CHAR) LEN(20)
DCL VAR(&FORMTYPE) TYPE(*CHAR) LEN(10)
DCL VAR(&USRDTA) TYPE(*CHAR) LEN(10)
DCL VAR(&HOLD) TYPE(*CHAR) LEN(10)
DCL VAR(&SAVE) TYPE(*CHAR) LEN(10)
DCL VAR(&DUPLEX) TYPE(*CHAR) LEN(10)
DCL VAR(&OUTBIN) TYPE(*CHAR) LEN(4)
DCL VAR(&NEWUSER) TYPE(*CHAR) LEN(10)
DCL VAR(&NEWSPLNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&DLTSPLF) TYPE(*CHAR) LEN(10)

/* 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)
DCL VAR(&HANDLE) TYPE(*CHAR) LEN(4) /* Spooled +
file handle */
DCL VAR(&BUFFER) TYPE(*CHAR) LEN(4) /* number of +
buffers to get */

DCL VAR(&SPLATTR) TYPE(*CHAR) LEN(5000)
DCL VAR(&ATTRLEN) TYPE(*CHAR) LEN(4)
DCL VAR(&INDIC) TYPE(*CHAR) LEN(1)

/* Parameters for the QUSCRTUS API */

DCL VAR(&USPNAME) TYPE(*CHAR) LEN(10) /* user +
space name */
DCL VAR(&USPLIB) TYPE(*CHAR) LEN(10) /* user +
space library */
DCL VAR(&USPQUAL) TYPE(*CHAR) LEN(20) /* user +
space qualified name */
DCL VAR(&USPTYPE) TYPE(*CHAR) LEN(10) /* user +
space type */
DCL VAR(&USPSIZE) TYPE(*CHAR) LEN(4) /* user +
space size */
DCL VAR(&USPFILL) TYPE(*CHAR) LEN(1) /* user +
space fill character */
DCL VAR(&USPAUT) TYPE(*CHAR) LEN(10) /* user +
space authority */
DCL VAR(&USPTEXT) TYPE(*CHAR) LEN(50) /* user +
space text */

/* Parameters for the QUSRTVUS API */

DCL VAR(&STARTPOS) TYPE(*CHAR) LEN(4)
DCL VAR(&DATALEN ) TYPE(*CHAR) LEN(4)
DCL VAR(&HEADER) TYPE(*CHAR) LEN(150)

CHGVAR VAR(%BIN(&ATTRLEN)) VALUE(5000)

/* Create User space */

CHGVAR VAR(&USPNAME) VALUE('DUPCHGSPLF') /* set +
user space name */
CHGVAR VAR(&USPLIB) VALUE('QTEMP') /* set user +
space library */
CHGVAR VAR(&USPQUAL) VALUE(&USPNAME *CAT &USPLIB) +
/* set user space qualified name */
CHGVAR VAR(&USPTYPE) VALUE('MYTYPE') /* set user +
space type */
CHGVAR VAR(%BIN(&USPSIZE)) VALUE(64000) /* set +
user space size */
CHGVAR VAR(&USPFILL) VALUE(' ') /* set user space +
fill character */
CHGVAR VAR(&USPAUT) VALUE('*USE') /* set user +
space authority */
CHGVAR VAR(&USPTEXT) VALUE('my user space') +
/* set user space text */

CALL PGM(QUSCRTUS) PARM(&USPQUAL &USPTYPE +
&USPSIZE &USPFILL &USPAUT &USPTEXT)

/* Open spooled file */

CHGVAR VAR(&BUFFER) VALUE(X'FFFFFFFF')

CALL PGM(QSPOPNSP) PARM(&HANDLE &JOB ' ' ' ' +
&SPLFILE &SPLNBRBIN &BUFFER X'00000000')

/* Get spooled file data */

CALL PGM(QSPGETSP) PARM(&HANDLE &USPQUAL +
'SPFR0200' &BUFFER '*WAIT' X'00000000')

/* Close spooled file */

CALL PGM(QSPCLOSP) PARM(&HANDLE X'00000000')