COBOL ソート処理

COBOLでソート処理を書いた
バブルソート
二つの文字をくっつけて、ソートする処理
例(「5」と「2794」をくっ付けて、「52794」と言う形にして、ソートする)
数値ではなく文字の比較だが、たいていの処理系ではうまく動くと思う
バブルソートにした理由は、ソートする配列数が少ないため
また、確実に引数として「a」や「b」が入ってこない状態を想定している

000000**************************************************************
000000 WORKING-STORAGE         SECTION.
000000**************************************************************
000000 01  FLG-AREA.
000000   03  FLG-SORT                      PIC  9(01). *>ソート処理用
000000*
000000 01  WK-AREA.
000000   03  WK-FOOBAR.
000000     05  WK-FOOBARS                OCCURS  50.
000000       07  WK-ARR-CD                 PIC  X(10).
000000       07  WK-ARR-NO                 PIC  X(10).
000000   03  WK-FOOBARS-R                REDEFINES  WK-FOOBARS.
000000     07  WK-CDNO                     PIC  X(20) OCCURS  50.
000000   03  WK-TMP                        PIC  X(20).
000000*
000000**************************************************************
000000 PROCEDURE               DIVISION.
000000**************************************************************
000000     MOVE  '1'          TO  WK-ARR-CD(1).
000000     MOVE  '1794'       TO  WK-ARR-NO(1).
000000     MOVE  '2'          TO  WK-ARR-CD(2).
000000     MOVE  '2794'       TO  WK-ARR-NO(2).
000000*
000000*    // ソートする
000000     MOVE  ZERO         TO  FLG-SORT
000000     MOVE  SPACE        TO  WK-TMP
000000     PERFORM  SORT-SEC  UNTIL
000000                      FLG-SORT  =  ZERO
000000**************************************************************
000000*    ソート処理                                              *
000000**************************************************************
000000 SORT-SEC                SECTION.
000000*    // ソートする
000000     MOVE  ZERO          TO  FLG-SORT.
000000*
000000     PERFORM  VARYING  I2  FROM  1  BY  1  UNTIL  I2  <  50
000000         IF  WK-CDNO(I2)  >  WK-CDNO(I2 + 1)
000000             MOVE  WK-CDNO(I2)         TO  WK-TMP
000000             MOVE  WK-CDNO(I2 + 1)     TO  WK-CDNO(I2)
000000             MOVE  WK-TMP              TO  WK-CDNO(I2 + 1)
000000             MOVE  1                   TO  FLG-SORT
000000         END-IF
000000     END-PERFORM.
000000*
000000   SORT-990.
000000     EXIT.

誰か参考にする日が来るのだろうか?...