表の項目の整列

並べ替えをするために、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 の値が使用されている。