/* SHORT FORM DYNAMIC IP ADDRESS */
/* DIALUP CONNECTION */
/* LPD: OBTAIN IP ADDRESS OF USER AND MODIFY TCP/IP DEVICE */
/* QUEUE TO USE NEW ADDRESS (FIREWALL PRINTING) */
/* OS/400 V3.7 */
/* */
PGM
DCL VAR(&RECEIVER) TYPE(*CHAR) LEN(892)
DCL VAR(&DEVICE) TYPE(*CHAR) LEN(10)
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
DCL VAR(&PRTQ) TYPE(*CHAR) LEN(10)
DCL VAR(&CHANGE) TYPE(*CHAR) LEN(3)
DCL VAR(&ERROR) TYPE(*CHAR) LEN(4) +
VALUE(X'00000000')
DCL VAR(&RCVRLN) TYPE(*CHAR) LEN(4)
DCL VAR(&FORMAT) TYPE(*CHAR) LEN(8) +
VALUE('DEVD0600')
DCL VAR(&IPADDR) TYPE(*CHAR) LEN(15)
DCL VAR(&DONEXT) TYPE(*CHAR) LEN(1)
DCL VAR(&YESNO) TYPE(*CHAR) LEN(1)
DCL VAR(&PRINTER) TYPE(*CHAR) LEN(10)
/* OBTAIN DEVICE NAME AND USERID */
RTVJOBA JOB(&DEVICE) CURUSER(&USER)
CHGVAR VAR(&CHANGE) VALUE(%SST(&USER 1 3))
/* NAME PRINT QUEUE TO CHANGE */
SNDUSRMSG MSG('Enter the name of the printer to +
change!') MSGTYPE(*INQ) TOMSGQ(*) +
MSGRPY(&PRINTER)
CHGVAR VAR(&PRTQ) VALUE(&PRINTER)
/* OBTAIN IP ADDRESS */
CHGVAR VAR(%BIN(&RCVRLN)) VALUE(892)
CALL PGM(QDCRDEVD) PARM(&RECEIVER &RCVRLN &FORMAT +
&DEVICE &ERROR)
CHGVAR VAR(&IPADDR) VALUE(%SST(&RECEIVER 878 15))
/* MODIFY OUTQ WITH CURRENT IP ADDRESS */
SNDMSG MSG('IP address is being updated, it will +
take about 15 seconds, please wait: +
<<<hit enter>>>') TOUSR(*REQUESTER) +
MSGTYPE(*INFO)
ENDWTR WTR(&PRTQ) OPTION(*IMMED)
MONMSG MSGID(CPF3313) /* SUPPRESS WRITER NOT STARTED MSG */
GOTO CMDLBL(CHGOUTQ)
TRYAGAIN:
CHGVAR VAR(&DONEXT) VALUE('a')
SNDUSRMSG MSG('Enter the name of the printer to +
change!') MSGTYPE(*INQ) TOMSGQ(*) +
MSGRPY(&PRINTER)
CHGVAR VAR(&PRTQ) VALUE(&PRINTER)
SNDMSG MSG('IP address is being updated, it will +
take about 15 seconds, please wait: +
<<<hit enter>>>') TOUSR(*REQUESTER) +
MSGTYPE(*INFO)
ENDWTR WTR(&PRTQ) OPTION(*IMMED)
MONMSG MSGID(CPF3313) /* SUPPRESS WRITER NOT STARTED MSG */
CHGOUTQ:
DLYJOB DLY(15) /* WAIT 15 SECONDS */
CHGOUTQ OUTQ(QUSRSYS/&PRTQ) AUTOSTRWTR(1) +
INTNETADR(&IPADDR)
MONMSG MSGID(CPF3319) EXEC(SNDMSG MSG('UNABLE TO +
MODIFY IP ADDRESS, WRITER IS CURRENTLY IN +
USE. (CPF3319)') TOUSR(&USER))
MONMSG MSGID(CPF3357) EXEC(SNDUSRMSG MSG('Printer +
not found!, <<R-Retry(enter PRT name), +
C-Cancel(end program)>>') VALUES(R C) +
TOMSGQ(*) MSGRPY(&DONEXT))
IF COND(&DONEXT *EQ 'C') THEN(GOTO CMDLBL(ENDPGM))
IF COND(&DONEXT *EQ 'R') THEN(GOTO +
CMDLBL(TRYAGAIN))
ADDPRT:
SNDUSRMSG MSG('Update another printer address? +
Yes/No(Y/N)') VALUES(Y N) MSGTYPE(*INQ) +
TOMSGQ(*) MSGRPY(&YESNO)
IF COND(&YESNO *EQ 'N') THEN(GOTO CMDLBL(ENDPGM))
IF COND(&YESNO *EQ 'Y') THEN(GOTO +
CMDLBL(TRYAGAIN))
ENDPGM:
ENDPGM
|