並べ替えをするために、OCCURS 句で KEYS を使用して次のように表を整列する。
working-storage section. 01 group-item. 05 tabl occurs 10 times ascending elem-item2 descending elem-item1. 10 elem-item1 pic x. 10 elem-item2 pic x. ... procedure division. ... sort tabl. if tabl (1) . . ...
これは単純な整列であり、データ項目 Tabl の OCCURS 句内のキー定義を使用して順序を判定し、表を昇順に整列する。具体的には、Elem-Item2 が第 1 キー (昇順) であり、Elem-Item1 が第 2 キー (降順) である。
要素全体を使用して表を整列するには、次のようにする。
working-storage section. 01 group-item. 05 tabl occurs 10 times 10 elem-item1 pic x. 10 elem-item2 pic x. ... procedure division. ... sort tabl ascending. if tabl (1) ...
これは単純な整列であり、表のすべての要素を使用して順序を判定し、表を昇順に整列する。
指定した項目を使用して表を整列するには、次のようにする。
working-storage section. 01 group-item. 05 tabl occurs 10 times ascending elem-item3 descending elem-item1. 10 elem-item1 pic x. 10 elem-item2 pic x. 10 elem-item3 pic x. ... procedure division. ... sort tabl descending elem-item2 elem-item3 if tabl (1) ...
この処理では、指定したキー データ項目に基づいて表を整列する。Elem-Item2 は OCCURS 句ではキーとして指定されていないが、第 1 キーとなる。Elem-Item3 は第 2 キーとなる。Elem-Item3 はこのソートに関しては DESCENDING キーとして処理される。これは、SORT 文で指定された DESCENDING (キー データ項目全体に影響) の方が OCCURS 句で指定された ASCENDING よりも優先されるためである。
入れ子になった表を整列するには、次のようにする。
working-storage section. 01 group-item. 05 tabl1 occurs 10 times indexed by t1-ind t2-ind. 10 tabl2 occur 5 times. 15 group1. 20 elem-item1 pic x. 15 group2. 20 elem-item1 pic 9. ... procedure division. ... set t1-ind to 3 sort tabl2 descending elem-item1 of group2 if group1 (3 1) ...
この処理では、Tabl2 の 3 番目のインスタンス、つまり Tabl2(3) だけが整列される。修飾されたデータ項目である、Group2 の Elem-Item1 がキーとして使用される。手続き部で参照する場合、通常は Group2 の Elem-Item1 は 2 レベルの添え字付けまたは指標付けが必要となるが、ここでは添え字付けも指標付けも行わない。同様に、Tabl2 は通常は 1 レベルの添え字付けが必要となるが、SORT 文内の data-name-2 として添え字付けすることはできない。代わりに、整列対象のインスタンスを判定するために、T1-Ind の値が使用されている。