ネットワーク

70. IBM iのFTP業務の開発(1)

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を
実行することができるというわけである。

次回はこの一連の流れを実際に作ってみよう。