普段は PING というと、DOS コマンドとして DOS 上で使用されることが多いが
System i 上でも PING コマンド が IBM によって提供されており、
System i に用意されている PING コマンドを使えば、次のように
外部の TCP/IP サーバーが現在、起動されているかどうかを検査することができる。
これとは別にプログラムの中から PING でTCP/IP サーバーが起動されているかどうかを
検査したい場合がある。
TCP/IP サーバーが起動されていれば、ファイルをプログラムによって転送したい、等の
要求がある場合である。
ここでは PING コマンドをモニターして PING が成功裡に終わったのかどうかを
判定するための手法を紹介する。
0001.00 CMD PROMPT('CHECK PING') 0002.00 PARM KWD(URL) TYPE(*CHAR) LEN(128) PROMPT(URL)
CRTCMD CMD(MYLIB/CHKPING) PGM(MYLIB/CHKPINGCL) SRCFILE(MYSRCLIB/QCMDSRC) AUT(*ALL)
0001.00 PGM PARM(&URL) 0002.00 /*---------------------------------------------------------*/ 0003.00 /* CHKPING : CHECK PING */ 0004.00 /*---------------------------------------------------------*/ 0005.00 DCL VAR(&URL) TYPE(*CHAR) LEN(128) 0006.00 DCL VAR(&STATUS) TYPE(*CHAR) LEN(4) VALUE(UP) 0007.00 DCL VAR(&MSG) TYPE(*CHAR) LEN(132) 0008.00 DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) 0009.00 DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) 0010.00 DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) 0011.00 DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(132) 0012.00 MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) 0013.00 0014.00 PING RMTSYS(&URL) MSGMODE(*QUIET *ESCAPE) 0015.00 MONMSG MSGID(TCP3210) EXEC(DO) 0016.00 CHGVAR VAR(&STATUS) VALUE(DOWN) 0017.00 ENDDO 0018.00 CHGVAR VAR(&MSG) VALUE(&URL *TCAT ' = ' *CAT &STATUS) 0019.00 GOTO SNDMSG 0020.00 RETURN 0021.00 0022.00 ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) 0023.00 SNDMSG: 0024.00 SNDPGMMSG MSG(&MSG) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG) 0025.00 ENDPGM
CRTCLPGM PGM(MYLIB/CHKPINGCL) SRCFILE(MYSRCLIB/QCLSRC) AUT(*ALL)
PING コマンドは
0014.00 PING RMTSYS(&URL) MSGMODE(*QUIET *ESCAPE)
のようにして リモート・システム (RMTSYS
) によって PING の検査をしているが
IP アドレスを検査したい場合は リモート IP アドレス (INTNETADR
) を指定するようにすればよい。
0015.00 MONMSG MSGID(TCP3210) EXEC(DO)
によって TCP3210
メッセージ ID をモニターすることによって PING が成功であったか、
それとも失敗であったかを判断することができる。
このPING による検査手法は、また、System i がインターネットに接続可能であるかを
判断することもできる。
通常では、ほぼインターネットで接続できるはずのサイト: WWW.YAHOO.CO.JP に PING でテストして
もし、エラーとなるのであれば その System i がインターネットに繋がらない状態であると
判断することができる。
つまり PING コマンドは PING 先のサーバーの起動状態を検査するだけでなく、自分自身の
状態を検査することに利用することができるのである。