ASCENDING/DESCENDING KEY 句
この句は、指定されたマージ・キーに基づいてレコードが昇順または降順 (指定された句に従います) に処理されるよう指定します。
- データ名-1
- キー・データ名です。レコードは、このキーに基づいて昇順または降順に処理されます。
データ名-1 は、マージの基礎となる KEY データ項目を指定します。 各データ名は、ファイル名-1 に関連付けられたレコード内のデータ項目を識別します。 MERGE ステートメントでは、KEY の後に続くデータ名は、それらの項目がどのように KEY 句に分割されているかにかかわりなく、重要度の高いものから順に左から右に列挙されます。 左端のデータ名が主要なキーであり、次のデータ名がその次に重要度の高いキーというようになります。
次の規則が適用されます。
- 特定の KEY データ項目は、各入力ファイル内で物理的に同じ位置に存在し、同じデータ・フォーマットをもっていなければなりません。 ただし、同じデータ名を持つ必要はありません。
- ファイル名-1 が複数のレコード記述をもっている場合には、KEY データ項目は 1 つだけのレコード記述中で記述されている必要があります。
- ファイル名-1 に可変長レコードが含まれている場合には、 すべての KEY データ項目はレコードの最初の n 文字の位置に入っていなければなりません。 ここで n は、ファイル名-1 について指定された最小レコード・サイズです。
- KEY データ項目は、OCCURS 文節を含んではならず、また、OCCURS 文節を含む項目に従属してもなりません。
- KEY データ項目を修飾することはできますが、添え字付けまたは指標付けすることはできません。
- KEY データ項目の位置は可変であってはなりません。
IBM Extension
IBM Extension
- KEY データ項目は、浮動小数点項目または日時項目にすることができます。
- KEY データ項目を参照変更することはできますが、添え字付けまたは指標付けすることはできません。
End of IBM Extension
- KEY データ項目の全長 (バイト単位) が 2 000 を超えてはなりません。
- MERGE キーの中で可変長フィールドを可変長フィールドとして使用することはできません。 可変長フィールドは、ILE COBOLによってグループ項目に変換されます。 可変長フィールドはグループ項目に変換されるため、MERGE キーの中で使用されると英数字項目として比較されます。
マージ操作の方向は、キーワード ASCENDING または DESCENDING の指定によって、次のように異なります。
- ASCENDING を指定すると、最下位キー値から最上位キー値への順序となります。
- DESCENDING を指定すると、最上位キー値から最下位キー値への順序となります。
- KEY データ項目が英字、英数字、英数字編集、または数字編集項目である場合には、 キー値の順序は使用される照合順序によって決まります (以下の COLLATING SEQUENCE 句を参照してください)。 KEY データ項目が DBCS または DBCS 編集である場合には、キー値の順序は DBCS 文字の 16 進数値の 2 進数照合順序に基づきます。 COLLATING SEQUENCE 句は無視されます。
IBM Extension
IBM Extension
- KEY が外部浮動小数点項目である場合には、キーは英数字として取り扱われます。 レコードがマージされる順序は、使用される照合順序によって異なります。
- KEY が内部浮動小数点数項目である場合には、キー値の順序は数字の順序になります。
- KEY が日時項目である場合は、いくつかの形式だけが日付項目または時刻項目としてソートされます。 ILE COBOL は、IBM® i DDS より多くの日時形式をサポートします。 一般的に、IBM i DDS 形式に一致する ILE COBOL の日時形式は、日付項目または時刻項目としてソートされます。 その他のすべての形式は英数字項目として扱われ、その 16 進値に基づいてソートされます。
End of IBM Extension
キーの比較は、比較条件内のオペランドの比較に関する規則に従って実行されます (比較条件を参照してください)。