We've got some old code that makes copies of a report and changes the user data using the CHGSPLFA. Is it possible to also change the user attribute on this duplicated spool file so I can direct it to another user's WRKSPLF? If not are there any suggestions?
Announcement
Collapse
No announcement yet.
Using CHGSPLFA to change user?
Collapse
X
-
Re: Using CHGSPLFA to change user?
Hi Eric,
Please try to write on CL program to achieve this. It will work.
CHGSPLFA FILE(QPJOBLOG) JOB(597638/VINOMAILS/USBDSP2)
SPLNBR(2) SELECT(<User Name>)
Regards,
Vinothkumar S.Regards,
Vinothkumar S.
-
Re: Using CHGSPLFA to change user?
Herman from one of those other sites says:
Code:/* */ /* \\\\\\\ */ /* ( o o ) */ /*------------------------oOO----(_)----OOo-------------------------*/ /* */ /* Command : DUPCHGSPLF */ /* Version : 2.01 */ /* System : iSeries */ /* Author : Herman Van der Staey */ /* */ /* Description : Duplicate and Change Spooled file */ /* */ /* ooooO Ooooo */ /* ( ) ( ) */ /*----------------------( )-------------( )---------------------*/ /* (_) (_) */ /* */ /* To compile : */ /* */ /* CRTCMD CMD(XXX/DUPCHGSPLF) PGM(XXX/DUPCHGSPLF) + */ /* SRCFILE(XXX/QCMDSRC) */ /* */ DUPCHGSPLF: CMD PROMPT('Duplicate and change SPLF') PARM KWD(JOB) TYPE(JOBNAME) DFT(*) SNGVAL((*)) + PROMPT('Job name') PARM KWD(SPLFILE) TYPE(*NAME) LEN(10) DFT(QPRINT) + PROMPT('Spooled file name') PARM KWD(SPLNBR) TYPE(*INT4) DFT(*LAST) RANGE(1 + 9999) SPCVAL((*ONLY 0) (*LAST -1)) MIN(0) + PROMPT('Spooled file number') PARM KWD(LPI) TYPE(*INT4) RSTD(*YES) DFT(*SAME) + SPCVAL((*SAME 0) (6 60) (8 80) (3 30) (4 + 40) (7.5 75) (7,5 75) (9 90) (12 120)) + MIN(0) PROMPT('Lines per inch') PARM KWD(CPI) TYPE(*INT4) RSTD(*YES) DFT(*SAME) + SPCVAL((*SAME 0) (10 100) (5 50) (12 120) + (13.3 133) (13,3 133) (15 150) (16.7 167) + (16,7 167) (18 180) (20 200)) MIN(0) + PROMPT('Characters per inch') PARM KWD(FONT) TYPE(*CHAR) LEN(5) RSTD(*YES) + DFT(*SAME) VALUES(*SAME *CPI) PROMPT('Font') PARM KWD(PAGRTT) TYPE(*INT4) RSTD(*YES) + DFT(*SAME) VALUES(0 90 180 270) + SPCVAL((*AUTO -1) (*DEVD -2) (*COR -3) + (*SAME -4)) PROMPT('Degree of page rotation') PARM KWD(OUTQ) TYPE(OUTQ) DFT(*SAME) + SNGVAL((*SAME)) MIN(0) PROMPT('Output queue') PARM KWD(DRAWER) TYPE(*INT4) DFT(*SAME) RANGE(1 + 255) SPCVAL((*SAME 0) (*E1 -1)) + PROMPT('Source drawer') PARM KWD(FORMTYPE) TYPE(*CHAR) LEN(10) DFT(*SAME) + SPCVAL((*SAME) (*STD)) PROMPT('Formtype') PARM KWD(USRDTA) TYPE(*CHAR) LEN(10) DFT(*SAME) + SPCVAL((*SAME)) PROMPT('User specified data') PARM KWD(HOLD) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*SAME) VALUES(*YES *NO) + SPCVAL((*SAME)) PROMPT('Hold file before + written') PARM KWD(SAVE) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*SAME) VALUES(*YES *NO) + SPCVAL((*SAME)) PROMPT('Save file after + written') PARM KWD(DUPLEX) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*SAME) VALUES(*YES *NO *TUMBLE + *FORMDF) SPCVAL((*SAME)) PROMPT('Print on + both sides (Duplex)') PARM KWD(OUTBIN) TYPE(*INT4) DFT(*SAME) RANGE(1 + 65535) SPCVAL((*SAME -1) (*DEVD 0)) + PROMPT('Output bin') PARM KWD(NEWUSER) TYPE(*NAME) LEN(10) DFT(*SAME) + SPCVAL((*SAME)) PROMPT('New User') PARM KWD(NEWSPLNAME) TYPE(*NAME) LEN(10) + DFT(*SAME) SPCVAL((*SAME) (*JOBNAME) + (*USER)) PROMPT('New Spool file name') PARM KWD(DLTSPLF) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*NO) VALUES(*YES *NO) PROMPT('Delete + file after duplication') OUTQ: QUAL TYPE(*NAME) LEN(10) MIN(1) QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) + SPCVAL((*CURLIB) (*LIBL)) PROMPT('Library') 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')Code:/* 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(6 0) DCL VAR(&SPLNBRCHR) TYPE(*CHAR) LEN(6) 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') /* Retrieve Spooled file attributes */ CALL PGM(QUSRSPLA) PARM(&SPLATTR &ATTRLEN + 'SPLA0200' &JOB ' ' ' ' &SPLFILE &SPLNBRBIN) IF COND(%BIN(&LPI) *NE 0) THEN(CHGVAR + VAR(%SST(&SPLATTR 181 4)) VALUE(&LPI)) IF COND(%BIN(&CPI) *NE 0) THEN(CHGVAR + VAR(%SST(&SPLATTR 185 4)) VALUE(&CPI)) IF COND(&FONT *NE *SAME) THEN(CHGVAR + VAR(%SST(&SPLATTR 537 4)) VALUE(&FONT)) IF COND(%BIN(&PAGRTT) *NE -4) THEN(CHGVAR + VAR(%SST(&SPLATTR 553 4)) VALUE(&PAGRTT)) IF COND(&OUTQ *NE *SAME) THEN(CHGVAR + VAR(%SST(&SPLATTR 191 20)) VALUE(&OUTQ)) IF COND(%BIN(&DRAWER) *NE 0) THEN(CHGVAR + VAR(%SST(&SPLATTR 533 4)) VALUE(&DRAWER)) IF COND(%BIN(&OUTBIN) *NE -1) THEN(CHGVAR + VAR(%SST(&SPLATTR 3313 4)) VALUE(&OUTBIN)) IF COND(&FORMTYPE *NE *SAME) THEN(CHGVAR + VAR(%SST(&SPLATTR 89 10)) VALUE(&FORMTYPE)) IF COND(&USRDTA *NE *SAME) THEN(CHGVAR + VAR(%SST(&SPLATTR 99 10)) VALUE(&USRDTA)) IF COND(&HOLD *NE *SAME) THEN(CHGVAR + VAR(%SST(&SPLATTR 129 10)) VALUE(&HOLD)) IF COND(&SAVE *NE *SAME) THEN(CHGVAR + VAR(%SST(&SPLATTR 139 10)) VALUE(&SAVE)) IF COND(&DUPLEX *NE *SAME) THEN(CHGVAR + VAR(%SST(&SPLATTR 561 10)) VALUE(&DUPLEX)) IF COND(&NEWUSER *NE *SAME) THEN(CHGVAR + VAR(%SST(&SPLATTR 59 10)) VALUE(&NEWUSER)) CHGVAR VAR(&JOBNAME) VALUE(%SST(&SPLATTR 49 10)) CHGVAR VAR(&JOBUSER) VALUE(%SST(&SPLATTR 59 10)) IF COND(&NEWSPLNAME *EQ *JOBNAME) THEN(CHGVAR + VAR(&NEWSPLNAME) VALUE(&JOBNAME)) IF COND(&NEWSPLNAME *EQ *USER) THEN(CHGVAR + VAR(&NEWSPLNAME) VALUE(&JOBUSER)) IF COND(&NEWSPLNAME *NE *SAME) THEN(CHGVAR + VAR(%SST(&SPLATTR 75 10)) VALUE(&NEWSPLNAME)) /* Create Spooled file */ CALL PGM(QSPCRTSP) PARM(&HANDLE &SPLATTR + X'00000000') /* Put Spooled File data */ CALL PGM(QSPPUTSP) PARM(&HANDLE &USPQUAL + X'00000000') /* Close Spooled file */ CALL PGM(QSPCLOSP) PARM(&HANDLE X'00000000') /* Retrieve User space HEADER information */ CHGVAR VAR(%BIN(&STARTPOS)) VALUE(1) /* set start + position */ CHGVAR VAR(%BIN(&DATALEN)) VALUE(140) /* set data + length */ CALL PGM(QUSRTVUS) PARM(&USPQUAL &STARTPOS + &DATALEN &HEADER) DLTUSRSPC USRSPC(&USPLIB/&USPNAME) CHGVAR VAR(&INDIC) VALUE(%SST(&HEADER 87 1)) IF COND(&INDIC *EQ C) THEN(DO) SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Spooled + file' *BCAT &SPLFILE *BCAT 'duplicated') + MSGTYPE(*COMP) ENDDO ELSE CMD(DO) SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Spooled + file' *BCAT &SPLFILE *BCAT 'not + completely duplicated') MSGTYPE(*ESCAPE) ENDDO /* Delete Original Spooled File */ IF COND(&DLTSPLF *EQ *NO) THEN(RETURN) IF COND(&JOB *EQ '*') THEN(RTVJOBA + JOB(&JOBNAME) USER(&JOBUSER) NBR(&JOBNBR)) ELSE CMD(DO) CHGVAR VAR(&JOBNAME) VALUE(%SST(&JOB 1 10)) CHGVAR VAR(&JOBUSER) VALUE(%SST(&JOB 11 10)) CHGVAR VAR(&JOBNBR) VALUE(%SST(&JOB 21 6)) ENDDO IF COND(%BIN(&SPLNBRBIN) *EQ 0) THEN(CHGVAR + VAR(&SPLNBRCHR) VALUE(*ONLY)) IF COND(%BIN(&SPLNBRBIN) *EQ -1) THEN(CHGVAR + VAR(&SPLNBRCHR) VALUE(*LAST)) IF COND(%BIN(&SPLNBRBIN) *GT 0) THEN(DO) CHGVAR VAR(&SPLNBRDEC) VALUE(%BIN(&SPLNBRBIN)) CHGVAR VAR(&SPLNBRCHR) VALUE(&SPLNBRDEC) ENDDO DLTSPLF FILE(&SPLFILE) + JOB(&JOBNBR/&JOBUSER/&JOBNAME) + SPLNBR(&SPLNBRCHR) MONMSG MSGID(CPF0000) END: ENDPGMAll my answers were extracted from the "Big Dummy's Guide to the As400"
and I take no responsibility for any of them.
www.code400.com
Comment
-
Re: Using CHGSPLFA to change user?
trust me it does change the user.....download the code and give it a try.
use the command in CL and test.
jamieAll my answers were extracted from the "Big Dummy's Guide to the As400"
and I take no responsibility for any of them.
www.code400.com
Comment
-
Re: Using CHGSPLFA to change user?
Excellent! Thanks!Originally posted by jamief View Posttrust me it does change the user.....download the code and give it a try.
use the command in CL and test.
jamieEric Pell
Comment
-
Re: Using CHGSPLFA to change user?
Hi All,
I have one issue . a day job is generating 20 spool files a day.
I am having only the job name .
How can i retrive the latest spool file from that job ?
how can use that latest spool file in my CL program.(basically i wanted to copy that spool file)
Please give me repy ASAP.
Thanks in advance,
Bala.
Comment
-
Re: Using CHGSPLFA to change user?
bala ... start a new post ASAP!All my answers were extracted from the "Big Dummy's Guide to the As400"
and I take no responsibility for any of them.
www.code400.com
Comment




Comment