PLISRTC または PLISRTD を呼び出すプログラムは、E35 処理ルーチンのコンパイルに使用したのと同じオプション (ASCII または EBCDIC、NATIVE または NONNATIVE) を指定してコンパイルする必要があります。
出力処理ルーチンは通常、ソート後に必要なすべての処理に使われます。この処理は、図 39 および 図 40 に示してあるとおり、ソート済みデータを印刷することである場合も、そのソート済みデータを 使ってさらに情報を生成することである場合もあります。出力処理ルーチンは、ソート・プログラムが PLISRTC または PLISRTD を呼び出すときに使用します。
レコードのソートが終われば、ソート・プログラムは、それらを 1 度に 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 戻りコードにソートの成功または 失敗を反映させることができます。この方法は、この章の終わりにある例に示してあります。
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 */