出口ルーチン:Exit Routineとは、MVS(MSP,VOS3)においては、OSまたは各種のミドルウェア製品をカスタマイズするためのプログラムを指します。OSがさまざな制御を行いサービスを提供する際に、その動作や機能の一部をユーザーが認識したり、変更したりするための仕組みです。出口ルーチンを使用することでOSのカスタマイズができるようになっています。SYS1.PARMLIBに定義するさまざまなOSの起動パラメーターでもカスタマイズが可能ですが、それらに加え、MVSでは伝統的に出口ルーチンと呼ばれるアセンブラー・プログラムによるカスタマイズ方法も提供してきました。
出口ルーチンは、OSから呼び出されるサブルーチンとして捉えるとわかりやすいです。OS内で何らかのイベントが発生すると対応する出口ルーチンが呼び出されます。ただし、すべてのイベントで呼び出されるわけではなく、出口ルーチンが呼び出されるイベントはOSによって予め決まっています。
例えば、コンソールにメッセージが出る際に呼び出される出口ルーチンがあります。OSはコンソールにメッセージを出力する時、対応する出口ルーチンが登録されていれば、「今からこういうメッセージを出すがかまわないか?」という問いかけの意味で出口ルーチンを呼び出します。出口ルーチンではユーザーの運用に合わせて、メッセージを削除したり、変更したり、宛先を変えたり、などのコントロールができるようになります。出口ルーチンを応用して、独自のジョブ・スケジューリングや自動運用のしくみなどを構築するようなことも可能になります。
OSのみならず多くのミドルウェア製品も同様です。例えば、IBMのCICS、IMS、DB2などにもさまざまな出口ルーチンが提供されていて、ユーザー独自のセキュリティー管理を行ったり、ログを取ったりすることができます。また、ISVソフトウェア製品にはOSの出口ルーチンを応用したものも数多くあります。システムやジョブの自動運用ソフトウェアなどはその代表的なものです。さらに、ISVソフトウェア製品自身もそれぞれ独自の出口ルーチンによってカスタマイズ可能になっているものがあります。
MVS(z/OS)にはさまざまな出口ルーチンがありますが、以下にその一例を示します。
- IEAVMXIT
- IEFUJV
- IEFACTRT
コンソールにメッセージが出力されるときに呼び出されます。メッセージの抑止や変更、リプライ・メッセージへの自動応答、メッセージに対応したジョブの起動や管理データの書き込みなど、さまざま目的で利用されます。z/OSの場合、出口ルーチンの他にもPARMLIBのMPFパラメーターやAUTORパラメーターによって、ある程度はノンプログラミングでのカスタマイズも可能です。
ジョブの入力(JCLのサブミット)時に呼び出されます。ユーザー独自のルールでJCLの妥当性をチェックしたり、ジョブの実行や記述されたJCLのパラメーターに制限を掛けることができます。
ジョブおよびジョブ・ステップの終了時に呼び出されます。実行結果をユーザー独自にロギングしたり、実行結果に応じて後続の処理を開始させたりすることもできます。ジョブ・ステップが終了した際に、完了コードをコンソールに表示させるために(OSの標準メッセージではステップ毎の完了コードまでは表示されない)昔からよく利用された出口ルーチンの1つでもあります。
MSPやVOS3にも出口ルーチンは存在しますが、必ずしもMVSと同じものが提供されているわけではありません。ジョブ管理(SMF)関連は同様のものが比較的ありますが、コンソール制御などはMVSほどきめ細かく提供されていません。MSPの場合、コンソール・メッセージの制御は、OSの出口ルーチンではなくAOFと呼ばれる自動運用ソフトの機能によってカスタマイズすることが多いです。