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

E35 - 出力処理ルーチン (ソート出口 E35)

PLISRTC または PLISRTD を呼び出すプログラムは、E35 処理ルーチンのコンパイルに使用したのと同じオプション (ASCII または EBCDIC、NATIVE または NONNATIVE) を指定してコンパイルする必要があります。

出力処理ルーチンは通常、ソート後に必要なすべての処理に使われます。この処理は、図 39 および 図 40 に示してあるとおり、ソート済みデータを印刷することである場合も、そのソート済みデータを 使ってさらに情報を生成することである場合もあります。出力処理ルーチンは、ソート・プログラムが PLISRTC または PLISRTD を呼び出すときに使用します。

レコードのソートが終われば、ソート・プログラムは、それらを一度に 1 つずつ、出力処理ルーチンに渡します。次に、出力ルーチンは、必要に応じてそれを処理します。すべてのレコードを渡し終えると、ソート・プログラムはその戻りコード をセットアップし、CALL PLISRTx ステートメントの後のステートメントに戻ります。ソート・プログラムから、最終レコードに達したことを出力処理ルーチンに 知らせる指示はありません。したがって、データの終わり処理 (EOD) は、PLISRTx を呼び出すプロシージャーで行わなければなりません。

レコードはソート・プログラムから出力ルーチンへ文字ストリングとして 渡されるため、そのデータを受け取るには、出力処理サブルーチン内で 文字ストリング・パラメーターを宣言しなければなりません。また、出力処理サブルーチンは、ソート・プログラムへ戻りコード 4 を渡して、別のレコードを処理する準備ができたことを通知する必要があります。この戻りコードは、PLIRETC への呼び出しによって設定します。

戻りコード 16 をソート・プログラムに渡せば、ソートを停止することができます。この場合、ソート・プログラムは戻りコード 16 (ソート失敗) とともに、呼び出し側プログラムに戻ることになります。

ソート・プログラムからルーチンに渡されるレコードは、文字ストリング・パラメーターです。PLISRTx への呼び出し内の 2 番目の引数でレコード・タイプを F と指 定するときには、レコード長をもつパラメーターを宣言しなければなりません。レコード・タイプを V と指定するときには、次の例のように、パラメーターを調整可能と宣言する必要があります。

dcl string char(*);

典型的な出力処理ルーチンの骨組みコードは、図 36 に示してあります。

PLIRETC を呼び出すと、PL/I プログラムから渡され、その後の任意のジョブ・ステップで使用できる戻りコードが設定されることに注意してください。出力処理ルーチンを使用した後は、PLISRTx を呼び出して から PLIRETC を呼び出し、戻りコードをリセットして、ゼロ以外の完了コードが出ないようにすることをお勧めします。ソート・プログラムからの戻りコードを引数として 使用して PLIRETC を呼び出せば、PL/I 戻りコードにソートの成功または 失敗を反映させることができます。この方法は、この章の終わりにある例に示してあります。

図 36. 出力処理プロシージャー用の骨組みコード
E35: proc(String);
                         /* The procedure must have a character string
                            parameter to receive the record from sort   */

  dcl String char(80);   /* Declaration of parameter                    */

 /* Your code goes here */

  call pliretc(4);       /* Pass return code to sort indicating that
                            the next sorted record is to be passed to
                            this procedure.                             */
   end E35;              /* End of procedure returns control to sort    */

Terms of use | Feedback

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