Systemwalker Operation Manager リファレンスマニュアル - Microsoft(R) Windows NT(R)/Windows(R) 2000/Windows Server(TM) 2003 -
目次 索引 前ページ次ページ

第15章 出口情報

15.2 ジョブネット異常終了拡張出口

ジョブネットが異常終了または強制終了した場合に呼び出される出口プログラムについて説明します。

ジョブネットが異常終了または強制終了したとき、jobschexitex.bat、jobschexitex.exeの順に出口プログラムが検索され、見つかれば呼び出されます。jobschexitex.batが見つかった場合、jobschexitex.exeが存在しても呼び出されません。

利用者がこれらの出口を利用して独自の処理を行いたい場合は、同名の出口プログラムを作成してください。

ジョブネット異常終了拡張出口は、ジョブネット異常終了出口と異なり、ジョブ実行制御属性のジョブネットが異常終了した場合、出口プログラムに渡される終了コードはジョブ実行制御から返された値となります。

■出口プログラムに渡されるパラメタ

argc : パラメタの数(20)
argv[0] : 出口プログラム名
argv[1] : ジョブネットの登録されているプロジェクト名
argv[2] : ジョブネット名
argv[3] : ジョブネット名称
argv[4] : ジョブネットが属しているグループ名
      ただし、グループに属していなければ""です。
argv[5] : ジョブネット内ジョブの終了コードの最大値
      ジョブ実行制御属性のジョブネットの場合、256以上になることもあります。
      ただし、ジョブネットが強制終了した場合は256、実行中断した場合は239です。
argv[6] : ジョブネットの開始日時
      フォーマットは"年 月/日 時:分:秒"
argv[7] : ジョブネットの終了日時
      フォーマットは"年 月/日 時:分:秒"
argv[8] : ジョブネット内ジョブ数(文字列)
argv[9] : 一時ファイル名
argv[10] : SE版の場合は""、EE版の場合はサブシステム番号
argv[11〜19] : 予約済み("")


一時ファイルには、ジョブネット内の個々のジョブについての情報が、以下のように格納されます。ジョブ名/終了コード/状態がジョブ1個分の情報です。

ジョブ名
終了コード
状態
ジョブ名
終了コード
状態
…………
ジョブ名
終了コード
状態

上図の各情報について説明します。

ジョブ名:
実行属性によって、以下の内容が格納されます。
実行属性が“ジョブ実行制御”の場合:
ジョブ名です。ジョブ名が省略されている場合は、コマンドとして登録した文字列が格納されます。
実行属性が“Interstage”の場合:
ジョブのワークユニット名です。
終了コード:
ジョブの終了コードです。未実行のジョブの終了コードは0です。

ジョブ実行制御属性のジョブネットの場合、256以上になることもあります。

状態:
ジョブの状態を以下の7つのうちのいずれかの文字列で表します。
normal_end:
正常終了したことを示します。
pseudo-normal:
疑似正常終了したことを示します。
abnormal_end:
異常終了したことを示します。
canceled:
強制終了したことを示します。
not_executed:
未実行であったことを示します。
paused:
停止状態であることを示します。
disabled:
無効状態であることを示します。

なお、一時ファイルは、ファイル名“Extnnn.tmp”(nnnはシステムが付加)でジョブスケジューラのデータベースディレクトリ配下のworkディレクトリに作成されます。一時ファイルは、ジョブスケジューラ側では削除しないので、出口プログラムで削除する必要があります。

出口が登録されていない場合は、一時ファイルは作成されません。

◆パス状態のジョブについて

先行ジョブの終了コードによる後続ジョブの起動条件を指定している場合に、パス状態で終了したジョブは、以下のようになります。

■出口プログラム格納場所

Systemwalker Operation Managerインストール先ディレクトリ\MpWalker.JM\bin

■注意事項

■プログラム例

ジョブネット異常終了拡張出口のプログラムを以下に示します。

 

/*  ジョブネット異常終了時に、"KANRI”サーバに以下のメッセージを送信する
        ジョブネット名(グループ名) is abended !! code = 終了コード*/
#include <stdio.h>
#include <process.h>

main(int argc, char *argv[])
{
    char cmdline[256];

    sprintf(cmdline,
            "NET SEND KANRI %s(%s) is abended !! code = %s",
            argv[2],    //ジョブネット名
            argv[4],    //グループ名
            argv[5]);   //終了コード

    system(cmdline);

    unlink(argv[9]);    // temp ファイルを削除

    exit(0);
}

目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 1995-2005