最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

13.12.PCクライアントでFTPコマンドファイル実行

[ Previous ] [ HOME ] [ Upper ] [ Next ]


今度は、PCからFTPを起動して、AS/400上のソースをSAVFに保管して、そのままそれを受け取り、PCのディスク上に保管する、ことをしてみましょう。

※Windows2000で検証しました。その他は、わかりません。

まず、AS/400で、指定のソースファイルを保管ファイルに落とすプログラムを作成します。これを、SAVSRCFTPとします。このプログラムは、保管したいソースファイル名をパラメータとして受け取ります。保管ファイル名は、このソースファイル名に_SVを付け足したものにします。

PGM:SAVSRCFTP (これはあくまで参考例です。)

0001.00 PGM &OBJ                                                                
0002.00                                                                         
0002.01   DCL  &CURLIB       *CHAR    10                                        
0004.00   DCL  &OBJ          *CHAR    10                                        
0005.00   DCL  &SAVF         *CHAR    10                                        
0006.00   DCL  &JOBDATE      *CHAR     6                                        
0007.00                                                                         
0008.00   MONMSG   CPF0000                                                      
0009.00                                                                         
0010.00   RTVJOBA  DATE(&JOBDATE)  CURLIB(&CURLIB)                              
0011.00   CHGVAR   %SST(&JOBDATE 5 2) '01' /* DAY=01 */                       
0012.00   CHGVAR   &SAVF ( %SST( &OBJ  1  7)|<'_'|<'SV')                        
0013.00                                                                         
0014.00   CRTSAVF  *CURLIB/&SAVF                                                
0015.00   CLRSAVF  *CURLIB/&SAVF                                                
0016.00                                                                         
0017.00              SAVCHGOBJ  OBJ(&OBJ) LIB(&CURLIB) DEV(*SAVF) +             
0018.00                           OBJTYPE(*FILE) REFDATE(&JOBDATE) +            
0019.00                           SAVF(*CURLIB/&SAVF) UPDHST(*NO) DTACPR(*YES)  
0020.00                                                                         
0021.00 RETURN                                                                  
0022.00 ENDPGM 

次に、このプログラムをFTPのセッションの中で、呼び出します。例のRCMDを使います。FTPへのコマンドは、PC上にテキストファイルをつくり、それを、FTPコマンドで指定します。

FTPコマンドファイルの中身

c:\ftpcmd.txt

user
password
lcd c:\
cd lib
bin
quote site namefmt 1
quote rcmd CALL SAVSRCFTP 'RPGSRC'
get rpgsrc_sv.savf rpgsrc_sv.savf
bye

userとpasswordは、AS/400のものです(この場合FTPサーバーがAS/400ですので)。

また、lcdは、PC側のドライブとフォルダー(例では、ルートになっています)、cdはサーバー内(AS/400)の現行ライブラリー名です。

binはバイナリ-モードの指定です。(*SAVFですので、変換しないように、binです。)

quote rcmd でAS/400のFTPジョブの上で、SAVSRCFTPが、パラメータRPGSRCとともに呼び出されます。このプログラムのなかで、ディスク上の現行ライブラリーのRPGSRCが、保管ファイルRPGSRC_SVに保管されます。

後は通常のFTPでのgetで、現行ライブラリーのRPGSRC_SVを取り出しています。

※PCから起動する RCMD文では、AS/400に渡す部分は、英語の大文字がいいと思います。CCSIDが絡むと思いますので、英語の小文字は、避けましょう。

たとえば

F:\>ftp 192.168.1.4
Connected to 192.168.1.x.
220-QTCP AT 192.168.1.x.
220 CONNECTION WILL CLOSE IF IDLE MORE THAN 5 MINUTES.
User (192.168.1.x:(none)): xxxxxxx
331 ENTER PASSWORD.
Password:
230 XXXXXX LOGGED ON.
ftp>
quote rcmd dspjoblog 
550-ERROR OCCURRED ON COMMAND dspjoblog.
550 *N{.
ftp>

dspjoblogを小文字にしてしまうと、エラー。AS/400のFTPジョブのログを覗くと、あー、これか。

ジョブ・ログ表示 

QSYS のサブシステム QSYSWRK のジョブ 047582/QTCP/QTFTP01489 が 02/05/01 
20:03:13 に開始された。ジョブは 02/05/01 20:03:13 にシステムに入れられ 
ました。 
ジョブ 047582/QTCP/QTFTP01489 が投入された。 
0 DDM 会話が終了し, 0 は活動状態のままである。 
QSYS のタイプ *LIB の QTEMP のオブジェクトが変更された。 
ジョブ 047584/QTCP/QTFTP02025 がライブラリー QSYS のジョブ待ち行列 
QSYSNOMAX に投入された。 
ストリング 'オミツシチウセチク ' に正しくない文字が入っている。 


終り 
続行するためには,実行キーを押してください。 

F3= 終了 F5= 最新表示 F10= 詳細メッセージの表示 F12= 取消し 
F16= ジョブ・メニュー F24= キーの続き 

FTPCMD.TXTの呼び出し

さて、どのように、PC上からこのコマンドファイルをFTPとともに、呼び出すのでしょうか?

Windwos2000 HELP より

Ftp

FTP サーバー サービス (デーモンと呼ばれることもあります) を実行中のコンピュータとの間で、ファイルの転送を行います。ftp は対話型で使用できます。利用できる ftp サブコマンドについては、"関連項目" の一覧の "ftp コマンド" をクリックしてください。このコマンドは TCP/IP プロトコルがインストールされている場合のみ有効です。ftp はサービスで、起動すると ftp コマンドが使えるサブ環境を作成します。この環境から Windows 2000 コマンド プロンプトに戻るには、quit サブコマンドを入力します。ftp サブ環境が実行されていると、ftp コマンド プロンプトが表示されます。

ftp [-v] [-n] [-i] [-d] [-g] [-s: filename] [-a] [-w:windowsize] [computer]

パラメータ

-v
リモート サーバーの応答を表示しないようにします。

-n
初期接続時に自動ログインできないようにします。

-i
複数ファイルの転送の際に対話型プロンプトを行わないようにします。

-d
クライアントとサーバー間で渡されたすべての ftp コマンドを表示して、デバッグ機能を有効にします。

-g
ローカル ファイル名とパス名にワイルドカード文字 (* および ?) を使えるようにする、ファイル名の globbing を無効にします。 (オンライン コマンド リファレンスの glob コマンドを参照してください)。

-s:filename
ftp が起動すると、このコマンドが自動的に実行されます。このパラメータの途中に空白を入れることはできません。リダイレクション (><) の代わりに、このスイッチを使ってください。

-a
データ接続を結合するとき、ローカル インターフェイスを使います。

-w:windowsize
転送バッファのサイズを指定します。既定の転送バッファ サイズは、4096 です。

computer
接続先となるリモート コンピュータのコンピュータ名または IP アドレスを指定します。コンピュータを指定する場合は、行の最後のパラメータとして指定しなければなりません。

とありますので、簡単ですね。

ftp -s:c:\ftpcmd.txt xxxxhost(またはIPアドレス)

で動き出します。

Connected to 192.168.1.x.
220-QTCP AT 192.168.1.x.
220 CONNECTION WILL CLOSE IF IDLE MORE THAN 5 MINUTES.
User (192.168.1.x:(none)):
331 ENTER PASSWORD.

230 xxxxx LOGGED ON.
ftp>
ftp> lcd c:\
Local directory now C:\.
ftp> cd ptk
250 "PTK" IS CURRENT LIBRARY.
ftp> bin
200 REPRESENTATION TYPE IS BINARY IMAGE.
ftp> quote site namefmt 1
250  NOW USING NAMING FORMAT "1".
ftp> quote rcmd CALL SAVSRCFTP 'SRCUSA'
250 COMMAND CALL SAVSRCFTP 'SRCUSA' SUCCESSFUL.
ftp> get srcusa_sv.savf srcusa_sv.savf
200 PORT SUBCOMMAND REQUEST SUCCESSFUL.
150 RETRIEVING MEMBER SRCUSA_SV IN FILE SRCUSA_SV IN LIBRARY PTK.
250 FILE TRANSFER COMPLETED SUCCESSFULLY.
ftp: 748176 bytes received in 1.94Seconds 386.06Kbytes/sec.
ftp> bye
221 QUIT SUBCOMMAND RECEIVED.

あまり、長い時間実行しないようにしましょう。タイムアウトが起きるので、あまり大きなファイルを保管すると、タイムアウトが起きますし、それをgetするのに回線に負荷をかけてしまいます。AS/400上のプログラムsavsrcftpを工夫して、なるべく効率よくできるようにしましょう。

アイコン化

さらに、アイコンとして利用するには

c:\>cmd /?

Windows 2000 コマンド インタープリタの新しいインスタンスを開始します。

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF] [[/S] [/C | /K] 文字列]

/C "文字列" に指定されたコマンドを実行した後、終了します。
/K "文字列" に指定されたコマンドを実行しますが、終了しません。

/S /C または /K の後の文字列の扱いを変更します (以下の説明を参照してください)。
/Q エコーをオフにします。
/D レジストリからの AutoRun コマンドの実行を無効にします(下記を参照してください)。
/A 内部コマンドの出力結果を ANSI でパイプまたはファイルに出力します。
/U 内部コマンドの出力結果を Unicode でパイプまたはファイルに出力します。
/T:fg 前景色および背景色を設定します (詳細は COLOR /? を参照してください)。
/E:ON コマンド拡張機能を有効にします (以下の説明を参照してください)。
/E:OFF コマンド拡張機能を無効にします (以下の説明を参照してください)。
/F:ON ファイル名およびディレクトリ名補完文字を有効にします
(以下の説明を参照してください)。
/F:OFF ファイルおよびディレクトリ名補完文字を無効にします(以下の説明を参照してください)。
/V:ON 区切り文字として c を使って遅延環境変数の展開を有効にします。
たとえば、 /V:ON とすると、!var! は、実行時に変数 var を展開します。
var 構文は、FOR ループ中とは違い、入力時に変数を展開します。
/V:OFF 遅延環境展開を無効にします。

というわけで、アイコン内のコマンドは、/c または/kスイッチを使います。

cmd.exe /c "ftp -s:c:\ftpcmd.txt xxxxhost"

となります。

このアイコンをクリックすると、/cの指定なので、

ftp開始 → ログオンおよび環境設定 → savsrcftp呼出 → get実行 → 終了

という流れとなります。(/Kだと、コマンドのウインドウが閉じないで、待機しています。)

最初は、アクセサリの中のコマンドプロンプトを、デスクトップにコピーして、その定義を書き換えていきました。(もっといい方法あるんでしょうか...このあたりは、「勘」でやりました。)

それから、タスク指定することもできました。

でも、ちゃんと時間どおりに動くのかなぁ...

 追記 2002-5-5

ちゃんと動きました。

以上

2002/5/1


[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送