+----------------------------------IBM 拡張----------------------------------+
DUPLICATES 句は、重複レコード・キーを割り当てられたファイルにしか指定できません。 これによってファイルは同じ値を持つ複数のキーを持つことができます。 ファイルに複数の形式がある場合、異なった形式の 2 つのキーは、キーの長さおよびキーの内容が同じであるときにのみ、同じ値を持ちます。
たとえば、次の 2 つの形式を持つファイルがあるとします。
フィールド C および D が同じ長さで、同じデータ・タイプ、および同じ値を持つ場合、ファイルには 1 つの重複キーを持つ 2 つのレコードが入ります。 重複キー という用語は、形式の完全なレコード・キーにのみ適用します。 形式についてのレコード・キーは、データベースにあるレコードの DDS 形式に定義されるキー・フィールドから構成されます。 この用語はファイルの共通キー (上の例のフィールド A および B のみ) には適用しません。
ユーザーは、RECORD KEY 文節に DUPLICATES を指定できます。 ファイル状況 95 は、以下の条件で正常にオープンした後に返されます。
これらのいずれかの条件が存在するときのファイルの処理は、予測できない結果をもたらすことがあります。
重複を認め、ランダムにもしくは動的に処理されるファイル内では、更新または削除される重複レコードは適切なものでなければなりません。 そのためには、REWRITE または DELETE 操作に先立って処理された最後の入出力ステートメントは、NO LOCK 句のない READ ステートメントが正常に処理されたものでなければなりません。
DDS ファイル・レベル・キーワード LIFO (後入れ先出し法) を指定した場合には、物理ファイル内の重複レコードは後入れ先出し法の順番で検索されます。
+------------------------------End of IBM 拡張-------------------------------+
レコード・キーの長さには制限があり、バイト数でのキー長は 2 000 を超えてはなりません。 詳細については、Web サイト http://www.ibm.com/eserver/iseries/infocenter にある、iSeries Information Center の「データベースおよびファイル・システム」カテゴリーの中の『DB2 Universal Database for iSeries』セクション を参照してください。
索引付きファイルに可変長レコードが入っていると、データ名-2 はそのレコードの最初の "x" 位置に入らなければなりません。 ここで、"x" はそのファイル用に指定された最小レコード・サイズです。
EXTERNAL ファイルの場合、EXTERNAL ファイルに関連しそして実行単位内にあるすべてのファイル記述項目には、 関連したレコード内の同じ相対ロケーションを使って、同じデータ記述項目をデータ名-2 に指定しなければなりません。 そうしないと、予期しない結果を生じます。
+----------------------------------IBM 拡張----------------------------------+
ファイルが DATABASE 装置タイプに割り当てられている場合は、RECORD KEY データ項目 (データ名-2) は日時項目または数字項目であっても構いません。 数字項目は、DISPLAY、COMP-1、COMP-2、COMP (COMP-3)、 COMP-4、PACKED-DECIMAL、または BINARY 形式の場合があります。数字項目は、外部浮動小数点データ項目にすることもできます。
ILE COBOL は、広範な日時データ項目形式をサポートしています。 これらの形式のうち、多くのものは DDS のサポート外です。 サポート外の場合、下層の DDS フィールドは文字フィールドまたは数字フィールドとして定義する必要があります。 COBOL は日時項目を定義しているが下層 DDS フィールドは日時用ではない場合は、データベースに対するレコード検索またはレコード書き込みは下層 DDS のデータ・タイプによって判別される順序に従って行われます。
+------------------------------End of IBM 拡張-------------------------------+
キーは、ファイルの作成時に使われた照合順序で順序づけされます。
データ名-2 のデータ記述およびレコード内の相対位置は、ファイルが DDS に定義されたときに使用したものと同じでなければなりません。
データ名-2 を定義するレコード記述は、入出力操作でレコード・キー・フィールドへその後アクセスするごとに使用されます。