Saveファイルを正しく転送する
標準のFTPを使用してSaveファイルを転送し、転送先のシステム上でSaveファイルとして認識させないようにすることはできません。iSeriesマシン間でSaveファイルを転送する方法は2つあります。1番目の方法は、図2に示すように、データを転送する前にリモートのシステム上でSaveファイルを作成するという方法です。Saveファイルがリモートのシステム上に既に存在する場合は、そのSaveファイルをCLR
SAVF (Clear Save File) コマンドでクリアしておくとよいでしょう。必ずクリアしなければならないというわけではありませんが、クリアしておかないと問題が発生することがあります。これには、図2のquote
rcmd crtsavfコマンドを次のclrsafvコマンドの呼び出しで置き換えます。
quote rcmd clrsavf myrmtlib/mysavf
リモート側のシステム上でSaveファイルを作成する手順は、図1でDDSソース・メンバーを転送するのに必要なソース・ファイルを作成した方法と同じです。
これより簡単な方法として、図3のようなiSeriesマシン間の転送や図4のようなPCとiSeriesマシン間の転送では、名前形式1を使用して.savfというファイル拡張子がついたSaveファイルとして指定する方法があります。
PCとiSeriesマシン間の転送:PCからiSeries上のOS/400 IFSルートや共有フォルダ(IFSのQDLSサブディレクトリなど)などといった他のシステムへファイルを転送する場合や、SaveファイルをPCからiSeriesマシンに転送する必要がある場合は、図4に示したテクニックが重要です。PC固有のFTPクライアント・セッション内からNAサブコマンドを使用すると、不正FTPコマンドエラーが発生します。QUOTE
SITE NA 1サブコマンドかQuote SITE NA 0サブコマンドを使用してFTPサーバー側でNAサブコマンドを実行すれば、この問題を解決できます。
iSeriesマシン間の転送:OS/400間でFTPを使用してファイル転送を行うときに名前形式を指定するには、名前形式サブコマンドNAを使用してローカル・マシンとリモート・マシンの両側で名前形式を切り換えます。
FTPではファイルの送受信の際にファイル定義を転送しません。ファイルの定義が存在しない場合は、FTPはフラットなシングル・カラムのファイルとしてファイルの定義を自動的に作成してしまいます。これではほとんどの場合うまくいきません。図1に示すように、リモートのiSeriesマシンに対してDDSを送信してから、ファイルを送信する前にそのDDSを元にファイルを作成することができます。しかし、図5ではより簡単で高速なソリューションを紹介しています。FTPセッション中で、ファイルをまずSaveファイルに書き出し、次にそのSaveファイルをリモートのiSeriesマシンに送信して、そのSaveファイルから元の復元させるという方法です。(ファイル圧縮ソフトウェアを使用して、ファイル定義を保持しながら転送するファイルのサイズを小さくすることもできます。)
大きなサイズのファイル転送の性能向上
iSeriesマシンから他のプラットフォームへファイルを正常に転送するには、ファイルをEBCDIC形式からASCII形式に変換しなければなりません。この変換はFTPが自動的に行ってくれますが、その処理にはかなりの時間がかかり、変換を必要とするファイルのサイズが大きくなると転送時間がそれに比例する以上の割合で増大します。
iSeriesのCPY TOPCD (Copy to PC Document) コマンドを使用して、iSeriesのEBCDICファイルをASCII形式に変換することによりこのボトルネックを回避することができます。一度変換してしまえば、変換されたドキュメントはiSeries統合ファイルシステムのQDLSファイルシステム中のASCIIフォルダに格納されます。図8には、このコマンドを使用してファイルを転送する前に変換する方法が説明してあります。この方法により、実際のファイル転送に必要な時間と全体の処理時間の両方を短縮することができます。
リモート・フォルダからファイル一覧を取得する
OS/400のFTPクライアントを含むほとんどのFTPクライアントでは、List Server (LS)サブコマンドやDirectory
(DIR) サブコマンドを使用して特定のフォルダ中にあるファイルの一覧を表示させることができます。また、これら2つのサブコマンドに対してDISKパラメータを指定することにより、ファイルの一覧をFTPユーザーのカレント・ライブラリにあるファイル(LSOUTPUTまたはDIROUTPUT)にダンプさせることができます。ユーザーはこのダンプされたファイルを読み込んで分析し、その内容に応じてアクションを取ることができます。このファイルを分析することにより、以下のことができます。