並べ替えをするために、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 文内のデータ名-2 として添字付けすることはできない。代わりに、整列対象のインスタンスを判定するために、T1-Ind の値が使用されている。