ユーザー出口は、必ず MFJUXIT という名前が付けられる (MFJUXIT 環境変数によってオーバーライドされる場合を除く) オプションです。ユーザー出口インターフェイス ブロック (
mfjdxit.cpy) によって、唯一のパラメーターとして呼び出されます。次の項目が含まれています。
- イベントのイベント コードと要求可能なアクションを表すアクション コードなどが含まれているヘッダー部分
- イベントを表すデータが含まれているデータ部分
mfjdxit.cpy では、すべてのイベント コード、アクション コード、および各イベントに関連付けられたデータが詳細に記述されます。
mfjdxit.cpy を調べる場合は、次のことに注意してください。
- -I- が含まれているフィールド名 (JXIT-I-size など) は、ユーザー出口への入力です。これらのフィールドは変更しないでください。
- -U- が含まれているフィールド名 (JXIT-U-PGM-alias など) は、入力と出力に使用されます。ユーザー出口へのエントリでは、これらのフィールドは適宜に設定され、場合によっては、復帰時にユーザー出口によって許容可能な値に変更されることがあります。
- 文字データは、すべて ASCII (ANSI) 形式です。NULL 値は、データ型に適した値になります。つまり、文字データの場合は空白、数値データやバイナリ データの場合はゼロです。
ユーザー出口は、イベントが発生すると呼び出されます。
ほとんどのイベントは、バッチ イニシエーター SEP で発生します。例外は次のとおりです。
- ESMAC コンソールからサブミットされたジョブでは、Event-job-ready、Event-job-queued、および Event-job-stmt-info イベントは Admin SEP で発生します。
- それ以外のジョブ サブミッション方法では、Event-job-ready、Event-job-queued、および Event-job-stmt-info イベントが通常 (標準) の SEP で発生します。
- SSTM ジョブでは、job-started から job-ended までのイベントが通常の SEP で 1 回ずつ発生します。ただし、コンソール ログには、バッチ イニシエーター SEP で発生したものとして報告されることがあります。
- サブミッション方法によっては、Event-job-concluded イベントが Admin SEP または通常の SEP で発生することがあります。ただし、このイベントが発生するのは、ジョブが実行を目的としたものでない場合 (TYPRUN=COPY または TYPRUN=SCAN の場合) や JCL エラーによってサブミッションに失敗した場合のみです。
JCL ユーザー出口は、そのユーザー出口の呼び出し元であるプロセス内のイベントのみ記憶できます。
何らかの理由でユーザー出口が失敗した場合は、失敗したプロセスの後続のすべてのイベントでそのユーザー出口が無効になります。
注:
- ユーザー出口の名前は、たとえば MFJUXIT=<optional location specification>MYEXIT.int のように、MFJUXIT 環境変数で名前をオーバーライドしない限り、必ず MFJUXIT という名前が付けられます。
サンプルの出口のソースが、%ProgramFiles(x86)%\Micro Focus\Enterprise Developer\src\enterpriseserver\exits に用意されています。
これをベースとして使用して、各自のニーズに合った出口をビルドすることをお奨めします。サンプル出口のソースでは、ユーザー出口インターフェイス ブロックのコピーブックを使用しています。このコピーブックのソース (mfjdxit.cpy) は、%ProgramFiles(x86)%\Micro Focus\Enterprise Developer\cpylib にあります。mfjdxit.cpy のリストは、「ユーザー出口インターフェイス ブロック (mfjdxit.cpy)」のセクションに記載されています。
- ユーザー出口は、ASCII (ANSI) 文字セットを使用する必要があります。ユーザー出口では非メインフレーム COBOL 方言「MF」を使用することをお奨めします。
- ユーザー出口はオプションです。動的プログラム ローダーにアクセス可能などのフォルダーにも常駐でき、その他の常駐場所を MFJUXIT 環境変数によって明示的に設定することもできます。MFJUXIT 環境変数を設定し、指定されたモジュールが見つからない場合は、リージョンが正しく起動しません。
- ユーザー出口は、COBOL で記述する必要があります。
- NOOUTDD 指令は指定する必要があります。