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

ソート・タイプの選択

ソート・プログラムを最大限活用するためには、ソート・プログラムの働きについて 理解する必要があります。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 |
                                      |              |
                                      *--*--*--*--*--*
                                         |  |  |  |
            *----------------------------*  |  |  *----------------------------*
            |                     *---------*  *---------*                     |
            V                     V                      V                     V
         PLISRTA               PLISRTB                PLISRTC               PLISRTD
            |                     |                      |                     |
            V                     V                      V                     V
*-----------*---------------------*----------------------*---------------------*-----------*
|                                    ソート・プログラム                                    |
*-----------*---------------------*----------------------*---------------------*-----------*
|           V                     V                      V                     V           |
| *---------*--------*  *---------*---------*  *---------*--------*  *---------*---------* |
| | ファイルの終わり |  | 各呼び出しで 1 を |  | ファイルの終わり |  | 各呼び出しで 1 つ | |
| | までデータ・     |  | 受け取る PL/I    |  | までデータ・    |  | のレコードを      | |
| | セットからの   |  | サブルーチン    |  | サブルーチン   |  | 受け取る PL/I を  | |
| | レコードを取得 |  | を呼び出す(E15) |  | セットからレコー |  | 呼び出す(E15)     | |
| | する             |  |                   |  | ドを取得する     |  |                   | |
| |                  |  |  (E15)            |  |                  |  |  (E15)            | |
| *---------*--------*  *---------*---------*  *---------*--------*  *---------*---------* |
|           |                     |                      |                     |           |
|           |                     *---------*  *---------*                     |           |
|           *----------------------------*  |  |  *----------------------------*           |
|                                        |  |  |  |                                        |
|                                        V  V  V  V                                        |
|                                     *--*--*--*--*--*                                     |
|                                     |  レコードを  |                                     |
|                                     |  ソートする  |                                     |
|                                     |              |                                     |
|                                     *--*--*--*--*--*                                     |
|                                        |  |  |  |                                        |
|           *----------------------------*  |  |  *----------------------------*           |
|           |                     *---------*  *---------*                     |           |
|           |                     |                      |                     |           |
|           V                     V                      V                     V           |
| *---------*--------*  *---------*---------*  *---------*--------*  *---------*---------* |
| | ソート済み       |  | ソート済み        |  | 各呼び出しで     |  | 各呼び出しで      | |
| | レコードを       |  | レコードを        |  | 1 つのレコードを |  | 1 つのレコードを  | |
| | データ・セット  |  | データ・セット   |  | 渡す PL/I       |  | 渡す PL/I       | |
| | に置く           |  | に置く            |  | サブルーチン     |  | サブルーチン     | |
| |                  |  |                   |  | を呼び出す (E35) |  | を呼び出す (E35)  | |
| *---------*--------*  *---------*---------*  *---------*--------*  *---------*---------* |
|           |                     |                      |                     |           |
|           |                     *---------*  *---------*                     |           |
|           *----------------------------*  |  |  *----------------------------*           |
|                                        |  |  |  |                                        |
|                                        V  V  V  V                                        |
|                                 *------*--*--*--*------*                                 |
|                                 |ソートの成功または失敗|                                 |
|                                 |を示す戻りコードを    |                                 |
|                                 |セットアップする      |                                 |
|                                 *----------*-----------*                                 |
|                                            |                                             |
*-----------------------------------------------------------------------------------------*
                                             |
                                             V
                                    *--------*---------*
                                    | PLISRTx への呼び |
                                    |   出し側に戻る   |
                                    *------------------*

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

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


Terms of use | Feedback

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