ILE COBOL 相対ファイルは、相対レコード番号によって処理されるファイルです。 相対レコード番号によってファイルを処理するには、そのファイルに対する SELECT ステートメントで ORGANIZATION IS RELATIVE を指定する必要があります。 相対ファイルに対しては、順次アクセス、レコード番号によるランダム・アクセス、または動的アクセスが可能です。 ILE COBOL 相対ファイルでは、キー順アクセス・パスは不可能です。
相対ファイルにアクセスする標準的な COBOL プログラムを作成するには、特定の特性のファイルを作成する必要があります。 表 25 に、それらの特性とそれを制御する方法を示します。
相対ファイルに格納されているデータにアクセスするには、OPEN、READ、 WRITE、START、REWRITE、DELETE、および CLOSE ステートメントを使用します。 それらのステートメントのそれぞれについては、「WebSphere Development Studio: ILE COBOL 解説書」を参照してください。 START ステートメントは、INPUT または I-O 用にオープンされて、 順次アクセスまたは動的アクセスされるファイルにのみ適用されます。
順次アクセスされる相対ファイルの場合、START ステートメント以外では SELECT 文節の KEY 句は無視されます。 START ステートメントに KEY 句が指定されていない場合、SELECT 文節の RELATIVE KEY 句が使用され、KEY IS EQUAL であると見なされます。
相対ファイルがランダム・アクセスまたは動的アクセスされる場合、SELECT 文節の RELATIVE KEY 句が使用されます。
NEXT 句を指定できるのは、SEQUENTIAL または DYNAMIC アクセス・モードが指定されているファイルに対する READ ステートメントだけです。 NEXT が指定されている場合、SELECT 文節の KEY 句は無視されます。 RELATIVE KEY データ項目は、READ 操作での順次アクセスが指定されているファイルの相対レコード番号によって更新されます。
OUTPUT 用にオープンされている物理データベース・ファイルは、すべてクリアされます。 RELATIVE 編成のデータベース・ファイルのうち、動的またはランダム・アクセス・モードを指定されているものは、 削除されたレコードによっても初期設定されます。 動的またはランダム・アクセス・モードでアクセスされる非常に大きい相対ファイル (1,000,000 レコード以上) では、 削除されたレコードについてファイルが初期設定されるため、OPEN OUTPUT 処理に時間がかかるのが普通です。 初期設定の必要なファイルをオープンするのに必要な時間は、そのファイルの中のレコード数によって異なります。
ファイルに対する最初の OPEN ステートメントが OPEN OUTPUT ではない場合、 その相対ファイルを使う前に、ファイルをクリアし、削除されたレコードについて初期設定する必要があります。 INZPFM コマンドの RECORDS パラメーターは、*DLT に指定する必要があります。 ILE COBOL によってクリア操作と初期設定操作が処理される場合には指定変更が適用されますが、CL コマンドによって処理される場合は指定変更が適用されません。 詳細については、Web サイト http://www.ibm.com/eserver/iseries/infocenter にある iSeries Information Center の 「プログラミング」カテゴリーの中の『CL および API』セクションの CLRPFM および INZPFM コマンドの説明を参照してください。
順次アクセス・モードで OUTPUT 用にオープンされる新しい相対ファイルの処理は、これとは異なります。表 26 に、関係する条件をまとめます。
RELATIVE 編成の ILE COBOL ファイルの場合、物理ファイル・メンバー再編成 (RGZPFM) CL コマンドによって、次のことができます。
さらに、REUSEDLT オプションを指定した物理ファイル変更 (CHGPF) CL コマンドでは、削除されたレコードの再使用が可能になるため、 ファイルの順次操作においてレコードの検索や書き込みの順序を変えることができます。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.