如何辨別哪些線上工作 (Interactive Job) 是由 telnet 方式進入?(API QDCRDEVD)
有時候 telnet job 於 signoff 時,需要將連線同時中斷,所以要使用 SIGNOFF ENDCNN(*YES)
才能將 telnet 的連線同時中斷(特別是由一台 AS/400 telnet 至另一台 AS/400 時),
回到原主機,AS/400 預設 signoff 並不會將連線中斷, signoff 時,僅是回 SignOn 畫面,
此時若欲中斷 telnet 連線,須按 Attn (PC 的ESC)鍵,接著輸入選項 99 即可中斷 telnet
連線,返回原 AS/400 主機。
但是這種方式非常不方便,所以最好的方式是利用 API 判斷 Interactive Job 是否為 Telent 形態方式?
可以使用 API QDCRDEVD 取得。
File : QCLSRC
Member: RTVDEVTYPC
Type : CLP
Usage : CRTCLPGM RTVDEVTYPC
CALL RTVDEVTYPC PARM(&ISTELNET)
利用參數 ISTELNET 判斷
1 : Telnet job
0 : 非 Telnet Job
PGM PARM(&ISTELNET)
DCL VAR(&ISTELNET) TYPE(*LGL) VALUE('0')
DCL VAR(&RCVVAR) TYPE(*CHAR) LEN(1000)
DCL VAR(&RCVLEN) TYPE(*CHAR) LEN(4)
DCL VAR(&ERRCODE) TYPE(*CHAR) LEN(8)
DCL VAR(&DEVNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&JOBTYPE) TYPE(*CHAR) LEN(1)
DCL &IPADDRESS *CHAR 15
/* MAKE SURE THAT THIS IS AN INTERACTIVE JOB, AND +
GET THE DEVICE'S NAME */
RTVJOBA JOB(&DEVNAME) TYPE(&JOBTYPE)
IF (&JOBTYPE *NE '1') DO
SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('This +
must be run from an interactive job!') +
MSGTYPE(*ESCAPE)
ENDDO
/* CALL THE RETRIEVE DEVICE DESCRIPTION (QDCRDEVD) API +
WITH FORMAT 'DEVD0600' WHICH SPECIES "DISPLAY DEVICE +
DETAILS" */
CHGVAR VAR(%BIN(&ERRCODE 1 4)) VALUE(0)
CHGVAR VAR(%BIN(&RCVLEN)) VALUE(1000)
CALL PGM(QDCRDEVD) PARM(&RCVVAR +
&RCVLEN +
'DEVD0600' +
&DEVNAME +
&ERRCODE)
/* POSITION 831 IS THE "PASS-THROUGH INDICATOR" AND IT +
WILL HAVE ONE OF THE FOLLOWING VALUES: +
'0' = NOT A PASSTHROUGH JOB +
'1' = 5250 PASSTHROUGH +
'2' = VIRTUAL DEVICE ASSOC WITH VIRTUAL TERMINAL APIS +
'3' = VIRTUAL DEVICE ASSOC WITH TELNET SESSION +
'4' = VIRTUAL DEVICE ASSOC WITH STRPASTHR COMMAND */
IF (%SST(&RCVVAR 831 1) *EQ '3') DO
CHGVAR VAR(&ISTELNET) VALUE('1')
CHGVAR &IPADDRESS %SST(&RCVVAR 878 15)
SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('This +
Job device type is Telnet and Client IP is' +
*BCAT &IPADDRESS *TCAT '.') +
MSGTYPE(*COMP)
ENDDO
ELSE DO
CHGVAR VAR(&ISTELNET) VALUE('0')
ENDDO
ENDPGM
A blog about IBM i (AS/400), MQ and other things developers or Admins need to know.
星期一, 11月 06, 2023
2004-09-26 如何辨別哪些線上工作 (Interactive Job) 是由 telnet 方式進入?(API QDCRDEVD)
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言