出口ルーチンとは

出口ルーチン(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

    コンソールにメッセージが出力されるときに呼び出されます。メッセージの抑止や変更、リプライ・メッセージへの自動応答、メッセージに対応したジョブの起動や管理データの書き込みなど、さまざま目的で利用されます。MVSの場合、出口ルーチンの他に、PARMLIBのMPFパラメーターによって、ある程度はノン・プログラミングでのカスタマイズも可能です。

    IEFUJV

    ジョブの入力時(JCLのサブミット)に呼び出されます。ユーザー独自のルールでJCLの妥当性をチェックしたり、ジョブの実行や、記述されたJCLのパラメーターに制限を掛けることができます。

    IEFACTRT

    ジョブやジョブ・ステップの終了時に呼び出されます。実行結果をユーザー独自にロギングしたり、実行結果に応じて後続の処理を開始させたりすることもできます。ジョブ・ステップが終了した際に、完了コードをコンソールに表示させるため(OSの標準メッセージでは完了コードまでは表示されない)、昔からよく利用された出口ルーチンの1つでもあります。

MSPやVOS3にも出口ルーチンは存在しますが、必ずしもMVSと同じものが提供されているわけではありません。ジョブ管理(SMF)関連は、同様のものが比較的ありますが、コンソール制御などはMVS程きめ細かく提供されていません。MSPの場合、コンソール・メッセージの制御は、OSの出口ルーチンよりは、AOFと言う自動運用ソフトの機能によってカスタマイズすることが多いようです。