您的位置:首页 > 其它

AS400里怎样取得一个工作站的IP

2010-09-10 13:36 281 查看
利用 System API QSYS/QDCRDEVD (去QSYSINC/H下面去找那个API的参数) 取得 与工作站ID 对应的 IP address.

PGM1:(已经测试)

PGM
DCL        VAR(&DEVICENAME) TYPE(*CHAR) LEN(10)
DCL        VAR(&IPADDRESS) TYPE(*CHAR) LEN(15)
DCL        VAR(&RECEIVER) TYPE(*CHAR) LEN(892)
DCL        VAR(&RCVRLENGTH) TYPE(*CHAR) LEN(4)
DCL        VAR(&FORMATNAME) TYPE(*CHAR) LEN(8) +
VALUE('DEVD0600') /* THE FORMAT FOR +
DISPLAY DEVICES */
DCL        VAR(&ERRORCODE) TYPE(*CHAR) LEN(4) +
VALUE(X'00000000') /* USE NORMAL ERROR +
HANDLING */
DCL        VAR(&OUTMSG) TYPE(*CHAR) LEN(512)
RTVJOBA    JOB(&DEVICENAME)
CHGVAR     VAR(%BIN(&RCVRLENGTH)) VALUE(892)
CALL       PGM(QDCRDEVD) PARM(&RECEIVER &RCVRLENGTH +
&FORMATNAME &DEVICENAME &ERRORCODE)
MONMSG     MSGID(CPF0000)
CHGVAR     VAR(&IPADDRESS) VALUE(%SST(&RECEIVER 878 15))
CHGVAR     VAR(&OUTMSG) VALUE(&DEVICENAME *BCAT ' IP +
address is ' *CAT &IPADDRESS)
SNDPGMMSG  MSGID(CPF9898) MSGF(QSYS/QCPFMSG) +
MSGDTA(&OUTMSG) TOPGMQ(*PRV)
DLYJOB     DLY(2)
MONMSG     MSGID(CPF0000)
ENDPGM


PGM2:一种是DSP显示的客户端,一种是PRT虚拟打印客户端的。(第二种情况未作测试)

PGM
DCL        VAR(&DEVNAME) TYPE(*CHAR) LEN(10)
DCL        VAR(&DEVINFO) TYPE(*CHAR) LEN(1550)
DCL        VAR(&LENGTH) TYPE(*DEC) LEN(4 0) VALUE(1550)
DCL        VAR(&FMTNAME) TYPE(*CHAR) LEN(8) +
VALUE(DEVD0600)
DCL        VAR(&IPADDR) TYPE(*CHAR) LEN(15)
DCL        VAR(&ERRINFO) TYPE(*CHAR) LEN(1024)
DCL        VAR(&PORTBIN4) TYPE(*CHAR) LEN(4)
DCL        VAR(&LPORT) TYPE(*DEC) LEN(5 0)
DCL        VAR(&LPORTC) TYPE(*CHAR) LEN(5)
DCL        VAR(&RPORT) TYPE(*DEC) LEN(5 0)
DCL        VAR(&RPORTC) TYPE(*CHAR) LEN(5)
DCL        VAR(&LCLADDR) TYPE(*CHAR) LEN(15)
DCL        VAR(&OUTMSG) TYPE(*CHAR) LEN(999)
DCL        VAR(&DEVTYPE) TYPE(*CHAR) LEN(10) +
VALUE('          ')
RTVJOBA    JOB(&DEVNAME)
CALL       PGM(QSYS/QDCRDEVD) PARM(&DEVINFO &LENGTH +
'DEVD0100' &DEVNAME &ERRINFO)
MONMSG     MSGID(CPF0000)
CHGVAR     VAR(&DEVTYPE) VALUE(%SST(&DEVINFO 32 4))
IF         COND(&DEVTYPE *EQ '*PRT      ') THEN(CHGVAR +
VAR(&FMTNAME) VALUE('DEVD1100'))
CALL       PGM(QSYS/QDCRDEVD) PARM(&DEVINFO &LENGTH +
&FMTNAME &DEVNAME &ERRINFO)
MONMSG     MSGID(CPF0000)
/* DISPLAY DEVICE          */
IF         COND(&DEVTYPE *EQ '*DSP      ') THEN(DO)
/* SET CLIENT IP ADDRESS   */
CHGVAR     VAR(&IPADDR) VALUE(%SST(&DEVINFO 878 15))
/* SET CLIENT TCP PORT   */
CHGVAR     VAR(%SST(&PORTBIN4 3 2)) VALUE(%SST(&DEVINFO +
860 2))
CHGVAR     VAR(%SST(&PORTBIN4 1 2)) VALUE(X'0000')
CHGVAR     VAR(&RPORT) VALUE(%BIN(&PORTBIN4))
/* SET SERVER IP ADDRESS   */
CHGVAR     VAR(&LCLADDR) VALUE(%SST(&DEVINFO 958 15))
/* SET SERVER TCP PORT   */
CHGVAR     VAR(%SST(&PORTBIN4 3 2)) VALUE(%SST(&DEVINFO +
940 2))
CHGVAR     VAR(%SST(&PORTBIN4 1 2)) VALUE(X'0000')
CHGVAR     VAR(&LPORT) VALUE(%BIN(&PORTBIN4))
CHGVAR     VAR(&LPORTC) VALUE(&LPORT)
ENDDO
/* DISPLAY DEVICE TYPE    */
/* PRINTER DEVICE          */
IF         COND(&DEVTYPE *EQ '*PRT      ') THEN(DO)
/* SET CLIENT IP ADDRESS   */
CHGVAR     VAR(&IPADDR) VALUE(%SST(&DEVINFO 1405 15))
/* SET CLIENT TCP PORT   */
CHGVAR     VAR(%SST(&PORTBIN4 3 2)) VALUE(%SST(&DEVINFO +
1387 2))
CHGVAR     VAR(%SST(&PORTBIN4 1 2)) VALUE(X'0000')
CHGVAR     VAR(&RPORT) VALUE(%BIN(&PORTBIN4))
CHGVAR     VAR(&RPORTC) VALUE(&RPORT)
/* SET SERVER IP ADDRESS   */
CHGVAR     VAR(&LCLADDR) VALUE(%SST(&DEVINFO 1495 15))
/* SET SERVER TCP PORT   */
CHGVAR     VAR(%SST(&PORTBIN4 3 2)) VALUE(%SST(&DEVINFO +
1477 2))
CHGVAR     VAR(%SST(&PORTBIN4 1 2)) VALUE(X'0000')
CHGVAR     VAR(&LPORT) VALUE(%BIN(&PORTBIN4))
CHGVAR     VAR(&LPORTC) VALUE(&LPORT)
ENDDO
/* END OF PRINTER DEVICE TYPE SECTION */
/* SET OUTPUT MESSAGE   */
CHGVAR     VAR(&OUTMSG) VALUE('Telnet Client from ' +
*CAT &IPADDR *CAT ' port:' *CAT &RPORTC +
*CAT '     to local interface:' *BCAT +
&LCLADDR *CAT ' port:' *CAT &LPORTC)
SNDPGMMSG  MSGID(CPF9898) MSGF(QSYS/QCPFMSG) +
MSGDTA(&OUTMSG) TOPGMQ(*PRV)
DLYJOB     DLY(2)
MONMSG     MSGID(CPF0000)
ENDPGM
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐