MVS のもとでは、JCL ジョブ ストリームを SYSOUT データ セットの形式で動的に出力するプログラムを実行し、外部書き出しプログラムでそのジョブ ストリームを処理するように指定できます。IBM から提供された外部書き出しプログラム (INTRDR) を使用するか、または独自の外部書き出しプログラムを提供できます。
外部書き出しプログラムは、次のどの方法でも要求できます。
- JCL:(外部書き出しプログラムの名前は、SYSOUT データ セットに対する DD 文のパラメーター)
- TSO ALLOCATE コマンドで要求する
- DYNALLOC (SVC 99) サービスの発行によって要求する
MSS は、IBM から提供された外部書き出しプログラム (INTRDR) をエミュレートします。ユーザーから提供された外部書き出しプログラムはサポートしません。
INTRDR の MSS エミュレーションは、次の点で IBM の INTRDR と異なっています。
- IBM の INTRDR では、/*EOF、/*DEL、/*PURGE、/*SCAN などの制御文を含むレコードを書き込むことにより、データ セットを閉じることなくプログラムでジョブをサブミットすることができます。これらの各文は、事実上、その文までのすべてのデータが 1 つ以上の完全なジョブであること、およびその文によって指定された操作を実行する必要があることを示します。たとえば、/*EOF はジョブのサブミットを引き起こします。これはデータ セットを閉じることに相当します。ただし、INTRDR の MSS エミュレーションでは、プログラムはジョブ ストリーム全体を SYSOUT データ セットに書き込んでからデータ セットを閉じる必要があり、ジョブはその後、実行のためにサブミットされます。また、場合によっては、プログラムが SYSOUT データ セットを再び開き、別の完全なジョブストリームを書き込んでから、ジョブをサブミットするためにデータ セットを閉じることがあります。
- IBM の INTRDR は、サブミッションが制御文によってトリガーされるか、あるいはデータ セットを閉じることによってトリガーされるかに関わらず、1 つのジョブストリームで複数のジョブをサポートします。INTRDR の MSS エミュレーションは、MSS 自体が1 つのサブミッションで複数のジョブを処理できないため、そのようなジョブをサポートしません。各サブミッションには、1 つのジョブのみが含まれている必要があります。
- IBM の INTRDR では、サブミットされたジョブのクラスは、デフォルトで SYSOUT データ セットのクラスに設定されます。INTRDR の MSS エミュレーションでは、サブミットされたジョブのクラスは、クラスを指定せずにそのジョブがサブミットされた場合と同じになります。
- DYNALLOC (SVC 99) サービスの発行によって外部書き出しプログラムを要求することはできません。