IBM iにもご存知のとおりFTPコマンドが用意されていて
対話式でFTPをコマンド入力画面上で操作することができる。
しかし多くの開発者は自分の適用業務の一部としてFTPデータ転送の
機能を組み込みたいはずである。
IBM が用意したFTPコマンドだけでは対話式でしか使用することが
できずバッチでの使用は難しいように見える。
そこでここではIBM FTPをバッチで動作させる方法を紹介する。
この方法でIBM iのデータなどを自由に他の社内サーバーに
転送することができるようになる。
原理は簡単で入力記述をINPUTという名前のソース・ファイル
(ただしソース・タイプはTXTであることが必要)に
記述しておき、出力ログ・ファイルとしてOUTPUTという名前の
ソース・ファイル(これもソース・タイプはTXTであることが必要)
を事前に作成しておいて FTP の実行直前にオーバーライドで
指定することである。
DCL VAR(&TOIP) TYPE(*CHAR) LEN(15) + VALUE('192.168.1.80') : : /*( FTP の実行 )*/ OVRDBF FILE(INPUT) TOFILE(QTEMP/INPUT) MBR(&MBR) + SECURE(*YES) OVRSCOPE(*JOB) OVRDBF FILE(OUTPUT) TOFILE(QTEMP/OUTPUT) MBR(&MBR) + SECURE(*YES) OVRSCOPE(*JOB) FTP RMTSYS(*INTNETADR) INTNETADR(&TOIP) DLTOVR FILE(INPUT OUTPUT) LVL(*JOB)
[解説]
ソース・ファイル INPUTのメンバー&MBR は次のようにSEUを使って入力する
0001.00 BACKUP xxxxxx 0002.00 BINARY 0003.00 PUT QTEMP/QTRSRC /BACKUP/V3R7/LIB/QTRSRC.SAV 0004.00 QUIT
[説明]
対話式でFTPを実行するときに入力する内容をINPUTファイルに
このようにあらかじめ登録しておくことによって
バッチ式での指示を行うことができるようになる。
転送先サーバーへのログイン・ユーザー名が BACKUP であり
パスワードが xxxxxx である。
BINARY で無変換で転送することをFTPコマンドで指定して
PUT でライブラリーQTEMPの QTRSRC という名前の *SAVF を
転送先の /BACKUP/V3R7/LIB/QTRSRC.SAV という名前のファイルとして
保管することを指示している。
最後は QUIT(終了) で FTPを終了する。
ソース・ファイル OUTPUT のメンバー &MBR には実行後に次のような
FTPログが出力される。
OUTPUTメンバーはFTPの実行前に空メンバーとして
存在していなければならない。
空のOUTPUTメンバーを用意しておけばログがここに出力される。
0001.00 ファイルに出力が送られる。 0002.00 指定した一時変更ファイルから入力が読み取られる。 0003.00 ポート 21 を使用して遠隔ホスト 192.168.1.8 に接続中である。 0004.00 220 Microsoft FTP Service 0005.00 Windows_NT 0006.00 ログイン ID (qtr) を入力してください。 0007.00 331 Password required for BACKUP. 0008.00 230 User logged in. 0009.00 FTP サブコマンドを入力してください。 0010.00 > BINARY 0011.00 200 Type set to I. 0012.00 FTP サブコマンドを入力してください。 0013.00 > PUT QTEMP/QTRSRC /BACKUP/V3R7/LIB/QTRSRC.SAV 0014.00 200 PORT command successful. 0015.00 125 Data connection already open; Transfer starting. 0016.00 226 Transfer complete. 0017.00 14.362 秒に 8553600 バイトが転送された。転送速度は 595.559 KB/ 秒です。 0018.00 FTP サブコマンドを入力してください。 0019.00 > QUIT 0020.00 221 Goodbye.
[説明]
まさしくDOSコマンド・プロンプトで実行するのと同じログが
排出されて実行の様子を監視することができる。
もし障害が発生して転送が失敗した場合でも
このOUTPUTメンバーの内容を解析すればよい。
つまりこれらのINPUT と OUTPUT というファイルを用意して
INPUT にFTPの実行命令を仕組んでおけばバッチでIBM i上でFTPを
実行することができるというわけである。
次回はこの一連の流れを実際に作ってみよう。