ディレクトリ管理の文

本セクションでは、ディレクトリ ポーリング方式を実装する際に役立つ文について説明します。

ディレクトリ ポーリングは、XML ドキュメントに関する方法であり、2 つ以上の独立したプロセスにおいてプロセス間で XML ドキュメントを渡すことができるようにします。たとえば、1 つ以上のライター プロセスで、既知のディレクトリ (既知のディレクトリとは、関連するすべてのプロセスが認識しているディレクトリ名です) 内に XML ドキュメントを配置する場合があります。各 XML ドキュメントには一意の名前が付けられている必要があります。リーダー プロセスでは、同じ既知のディレクトリから XML ドキュメントを見つけて、処理し、削除します。

ディレクトリ ポーリングは、メッセージ ドリブン通信システムと通信するために使用することもできます。また、この手法はさまざまな COBOL アプリケーション間で使用することもできます。(通常は同じローカル エリア ネットワーク上の別々のマシンで実行されている) 複数の COBOL ランタイム システムで、(通常はネットワーク上で使用可能なディレクトリに対して) ディレクトリ ポーリングを使用して、XML ドキュメントの処理におけるスループットを向上させることができます。

同じディレクトリに対して複数のリーダー プロセスを使用することはできません。これは、別々のプロセスから呼び出された XML FIND FILE 文で同じファイルを探す可能性があるためです。Windows の実装では、単一のディレクトリをポーリングし、配置されたファイルをサブディレクトリに配布するサンプル C 言語プログラム (DirSplit) が用意されています。これにより、各 COBOL プログラムで個別のサブディレクトリを処理できるようになります。

注: 以前の FAT32 ファイル システムを実行している Windows システム上では、次の問題が発生しています。
  • あるプログラムで XML ドキュメント ファイルをディレクトリに追加していると同時に、別のプログラムで C ライブラリ関数 rename または Windows API 関数 MoveFile を使用して XML ドキュメント ファイルを別のディレクトリに移動している場合、誤ったファイルが移動される、または誤った場所にファイルが移動されることがあります。この問題は、XML 拡張の関与なしに発生する可能性があります。
  • 多数の XML ドキュメント ファイルが XML EXPORT FILE (30 ページ) を使用して XML 拡張によってディレクトリに書き込まれる場合、ファイルがディレクトリに配置されず、XML 拡張にも、その文を発行したプログラムにも、オペレーティング システムからエラーが返されないことがあります。FAT32 ファイル システムは (少なくとも特定の条件では) ディレクトリあたり 65,535 ファイルに制限されている場合があると考えられます。また、長いファイル名が使用されている場合は、ファイル名ごとに複数のディレクトリ エントリが必要となることがあり、ディレクトリあたりのファイル数の削減も必要となることがあります。
これらの理由から、FAT32 ファイル システムで実行されている Windows ではディレクトリ ポーリングを使用しないことをお勧めします。NTFS ファイル システムおよび UNIX ファイル システムを使用する Windows では、この問題は発生しません。