Rational Developer for System z
PL/I for Windows, Version 7.6, プログラミング・ガイド

ソート・タイプの選択

ソート・プログラムを最大限活用するためには、ソート・プログラムの働きについて 理解する必要があります。PL/I プログラム内で、組み込みサブルーチン PLISRTx に対して CALL ステートメントを使うことによって、ソートを指定します。それぞれが未ソート・データの異なるソースおよびソートが完了したときの データの宛先を指定します。

例えば、PLISRTA の呼び出しは、未ソート・データ (ソートへの入力) が、ある 1 つのデータ・セット上にあることを指定し、ソート済みデータ (ソートからの出力) を別のデータ・セットに置くことを指定します。CALL PLISRTx ステートメントに含めなければならないものは、ソートしようとするデータ・セットに関するソート・プログラム情報を示した引数リスト、ソートを行うフィールド、ソートが成功したか失敗したかを示す戻りコードを ソート・プログラムが入れる変数の名前、および使用可能な出力または入力の処理プロシージャーの名前です。

ソート・インターフェース・ルーチンは、ソート用の引数リストを、PLISRTx 引数リストが提供する情報から作成します。また、このルーチンは、x として A、B、C、または D のいずれを選択したかによって異なります。次に、制御はソート・プログラムに移されます。出力または入力の処理ルーチンを指定していれば、それぞれの未ソートまたはソート済みレコードを処理するのに必要な回数だけ、処理ルーチンがソート・プログラムによって呼び出されます。

ソート操作は、以下の 2 つのいずれかの方法で終了します。

  1. 0 から 16 の戻りコードを PL/I 呼び出しプロシージャーに送信して、成功または失敗を伝達する。
  2. 特定のエラーが検出され、戻りコードが未定義の場合、エラー条件を発生する。

図 33 は、ソート操作を示す単純化されたフローチャートです。

図 33. ソート・プログラムの制御の流れ
                                      .--------------.
                                      |              |
                                      | CALL PLISRTx |
                                      |              |
                                      .--.--.--.--.--.
                                         |  |  |  |
            .----------------------------.  |  |  .----------------------------.
            |                     .---------.  .---------.                     |
            |                     |                      |                     |
         PLISRTA               PLISRTB                PLISRTC               PLISRTD
            |                     |                      |                     |
            |                     |                      |                     |
.-----------.---------------------.----------------------.---------------------.------------.
|                                       ソート・プログラム                                 |
|-----------.---------------------.----------------------.----------------------.-----------|
|           |                     |                      |                      |           |
| .---------.--------.  .---------.---------.  .---------.---------.  .---------.---------. |
| | ファイルの終わり |  | 1 つのレコードPL/I|  | ファイルの終わり |  | ファイルの終わり  | |
| | までデータ・    |  | を受け取る PL/I  |  | データ・セットから|  | ルーチンを      | |
| | セットから 1 つ |  | サブ・ルーチンを |  | レコードを取得する |  | 各呼び出しで呼び | |
| | のレコードを取得 |  | 各呼び出しで呼び  |  |                   |  | 出す(E15)         | |
| | する             |  | 出す(E15)         |  |                   |  |     (E15)         | |
| |                  |  |     (E15)         |  |                   |  |                   | |
| .---------.--------.  .---------.---------.  .---------.---------.  .--------.----------. |
|           |                     |                      |                     |            |
|           |                     .---------.  .---------.                     |            |
|           .----------------------------.  |  |  .----------------------------.            |
|                                        |  |  |  |                                         |
|                                        |  |  |  |                                         |
|                                     .--.--.--.--.--.                                      |
|                                     |              |                                      |
|                                     | ソートする   |                                      |
|                                     |              |                                      |
|                                     .--.--.--.--.--.                                      |
|                                        |  |  |  |                                         |
|           .----------------------------.  |  |  .-----------------------------.           |
|           |                     .---------.  .---------.                      |           |
|           |                     |                      |                      |           |
|           |                     |                      |                      |           |
| .---------.---------.  .--------.----------.  .--------.---------.  .---------.---------. |
| | ソート済みレコード|  | ソート済みレコード|  | 1 つのレコードを |  | 1 つのレコードを  | |
| | をデータ・セットに| | をデータ・セット |  | 渡す PL/I サブ  |  | 渡す PL/I サブ   | |
| | 置く              |  | に置く            |  | ルーチンを各呼び |  | ルーチンを各呼び | |
| |                   |  |                   |  | 出しで呼び出す   |  | 出しで呼び出す    | |
| |                   |  |                   |  | (E35)            |  | (E35)             | |
| .---------.---------.  .---------.---------.  .---------.--------.  .---------.---------. |
|           |                      |                      |                     |           |
|           |                      .---------.  .---------.                     |           |
|           .----------------------------.   |  |  .----------------------------.           |
|                                        |   |  |  |                                        |
|                                        |   |  |  |                                        |
|                                 .------.---.--.--.-----.                                  |
|                                 |ソートの成功または失敗|                                  |
|                                 |を示す戻りコードを    |                                  |
|                                 |セットアップする      |                                  |
|                                 .----------.-----------.                                  |
|                                            |                                              |
.--------------------------------------------.----------------------------------------------.
                                             |
                                             |
                                    .--------.---------.
                                    | PLISRTx への呼び |
                                    |   出し側に戻る   |
                                    .------------------.

ソート・プログラムそのものにおいては、ソート・プログラムと入力および出力処理ルーチンとの間の制御の流れは、戻りコードで制御されます。ソート・プログラムは、その処理の途中で、適切な時点でこれらのルーチンを呼び出します。(ソート・プログラム 内では、これらのルーチンはユーザー出口と呼ばれます。ソートされる入力を渡すルーチンは、E15 ソート・ユーザー出口です。ソート済み出力を処理する ルーチンは、E35 ソート・ユーザー出口です。) これらのルーチンから、ソート・プログラムは、そのルーチンをもう一度呼び出すべきか、または次の処理段階に進むべきかを示す戻りコードがくることを予期します。

この章の後半では、PL/I からどのようにソート・プログラムを使用するかについて 詳しく説明します。まず、必要な PL/I ステートメントについて説明し、次にデータ・セット要件について説明します。この章の終わりには、4 つの組み込みサブルーチンの使用法を示す一連の例があります。


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)