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