以下に示す形式で作成してください。なお、ワークユニット出口の作成言語は、ワークユニット定義の“kind”(ワークユニット種別)および、“Application Language”(アプリケーション言語)にかかわらず、C言語のみ有効です。
関数様式
[形式]
long 出口名 ( char *sysname, char *wuname, char *username, long mode, long *userdata1, long *userdata2) |
[引数]
パラメタ | 設定内容 | 入出力 |
char *sysname | システム名(注1) | 入力値 |
char *wuname | ワークユニット名 | 入力値 |
char *username | ワークユニット起動ユーザ名 | 入力値 |
long mode | 状態遷移モード | 入力値 |
long *userdata1 | 復帰情報1設定領域アドレス | 入出力値 (注2) |
long *userdata2 | 復帰情報2設定領域アドレス | 入出力値 (注2) |
(注1)
“default”が設定されます。
デフォルトシステムの場合は“default”が設定されます。拡張システムの場合は拡張システムのシステム名が設定されます。
(注2)
状態遷移モードが1(ワークユニット起動)の場合、出口プログラムで復帰情報を設定します。それ以外の状態モードでは、ワークユニット起動時に設定された復帰情報が出口プログラムの入力値として設定されます。
状態遷移モードでは、ワークユニット出口の呼出し契機を通知します。以下のいずれかが設定されます。
状態 | 設定値 | 呼出し契機 |
ワークユニット起動 | 1 | ワークユニット起動時 |
ワークユニット通常停止 | 2 | ワークユニット通常停止時 |
ワークユニット強制停止 | 3 | ワークユニット強制停止時 |
ワークユニット異常終了 | 4 | ワークユニット異常終了時 |
ワークユニット起動失敗 | 5 | ワークユニット起動失敗時 |
ワークユニット出口は、各呼出し契機で同一の出口プログラムが呼び出され、状態遷移モードにより呼出し契機を通知します。したがって、出口プログラムでは、必要に応じて状態遷移モードごとに処理を作成し、設定されている状態遷移モードを判断して処理の振り分けを行ってください。
ワークユニット起動時のユーザ情報を設定する領域です。ワークユニット起動時の情報を、その他の状態で呼び出された場合に持ちまわることができます。
状態遷移モードが“ワークユニット起動”の場合に、ワークユニット出口の出力値として復帰情報を設定してください。その他のモードの場合は、ワークユニット起動時に設定された復帰情報が、入力値として設定されます。
これにより、ワークユニット起動時の復帰情報を、その他の呼出し契機に使用することができます。また、ワークユニット起動時に設定された復帰情報は、プロセス回収出口にも入力値として設定されます。さらに、ワークユニットプロセス情報通知機能を使用して、サーバアプリケーションプログラムに情報を通知することができます。
[復帰値]
復帰値 | 意味 |
0 | 正常復帰 |
0以外 | 異常復帰 |
出口プログラムが正常復帰する場合は、復帰値に0を設定し、異常の場合は0以外を設定してください。
ワークユニット起動時にワークユニット出口が異常復帰(復帰値が0以外で復帰)した場合、メッセージが出力され、ワークユニットの起動は失敗します。
また、ワークユニット起動以外の契機で呼び出されたワークユニット出口が異常復帰した場合は、メッセージのみ出力し、動作異常とはなりません。
プログラミング例
ワークユニット出口プログラムの記述例を以下に示します。
long wuexit( char *sysname, char *wuname, char *username, long mode, long *userdata1, long *userdata2) { long data1, data2; /* 状態遷移モードごとに処理を振り分ける */ switch(mode){ case 1: /* ワークユニット起動時の処理を記述 */ /* 復帰情報を設定して復帰 */ *userdata1 = data1; *userdata2 = data2; break; case 2: /* 起動時の情報の取出し */ data1 = *userdata1; data2 = *userdata2; /* ワークユニット通常停止時の処理を記述 */ break; case 3: /* 起動時の情報の取出し */ data1 = *userdata1; data2 = *userdata2; /* ワークユニット強制停止時の処理を記述 */ break; case 4: /* 起動時の情報の取出し */ data1 = *userdata1; data2 = *userdata2; /* ワークユニット異常終了時の処理を記述 */ break; case 5: /* 起動時の情報の取出し */ data1 = *userdata1; data2 = *userdata2; /* ワークユニット起動失敗時の処理を記述 */ break; } return(0); } |
ワークユニット定義の記述例を示します。
ワークユニット出口プログラム機能を使用するために必要なワークユニット定義を以下に示します。
[Control Option]セクションに以下の定義を設定します。
ワークユニット出口プログラム名を設定します。
31バイト以内の英数字とアンダースコアが使用できます。
ワークユニット出口プログラムが格納されている実行ファイル名を指定します。
31バイト以内の制御文字(ShiftJISの0x00~0x1f,0x7f)を除く文字が使用できます。ただし、半角および全角英文字の大文字と小文字は区別されません。
31バイト以内の空白文字と半角カナを除く文字が使用できます。
“WorkUnit Exit Program”ステートメントが設定された場合、本ステートメントは省略できません。
出口プログラムの最大処理時間の監視値(秒)を設定します。
1~1800の整数値。
本ステートメントは省略可能です。本ステートメントを省略した場合、省略値として300が設定されます。
標準出力および標準エラー出力
出口プログラムが動作する時のカレントディレクトリは、以下のような構成になっており、カレントディレクトリ配下に標準出力用のファイルと標準エラー出力用のファイルが設定されています。
標準出力には、stdoutファイルが割り当てられています。出口プログラムで標準出力にデータを出力した場合に、出力先として使用されます。
標準エラー出力には、stderrファイルが割り当てられています。出口プログラムで標準エラー出力にデータを出力した場合に、出力先として使用されます。
カレントフォルダ:xxx\yyy\zzz_exit |
カレントディレクトリ:xxx/yyy/zzz_exit |
なお、マルチシステム機能の拡張システムを使用している場合は、上記yyyは“当該ワークユニット名.拡張システム名”となります。