Hitachi

JP1 Version 10 JP1/Automatic Job Management System 3 設計ガイド(業務設計編)


7.8.3 ジョブの終了コードを確認する

ジョブの終了コードは,JP1/AJS3 - Viewの[モニタ詳細−[アイコン名]]ダイアログボックス,またはjpqjobgetコマンドで出力したジョブ情報のEXITCODEなどで確認できます。ジョブの終了コードには,通常,正常終了では「0」,異常検出終了では起動したジョブプロセスの終了コードが設定されます。ただし,次の表に示す場合は,JP1/AJS3によって終了コードが設定されます。

表7‒12 JP1/AJS3によって終了コードが設定される条件とその終了コード

条件

JP1/AJS3によって設定される終了コード

PCジョブ,UNIXジョブ,アクションジョブ,カスタムジョブ,またはJP1/AJS3をホストに指定したQUEUEジョブで,次の状態になる場合。

  • 起動失敗

  • 強制終了(打ち切り時間指定による打ち切り終了も含みます)

  • 異常検出終了

-1

UNIXジョブで,JP1/AJS3で予期しないエラーが発生した場合。

255

注※

ジョブプロセスが終了したあとのJP1/AJS3側のあと処理で何か問題が発生した場合(例えば,マネージャーホストへの結果ファイルの転送失敗など)は,ジョブプロセスのリターンコードがJP1/AJS3によって「-1」に上書きされ,異常検出終了になります。

注意事項

PCジョブの場合は,起動したジョブプロセス自身がリターンコードとして「-1」を返すこともできます。また,UNIXジョブでは負の値で終了すると,終了コードは,256 + 負の値と扱われます。例えば,ジョブプロセスが「-1」で終了した場合,終了コードは,256 - 1 = 255となります。したがって,ジョブプロセスによって設定された終了コードなのか,JP1/AJS3によって設定された終了コードなのかを判別する必要がある場合は,ユーザーアプリケーションなどで設定する終了コードには「-1」および「255」を使用しないようにしてください。

イベントジョブおよびアクションジョブが,実行しているとき(ジョブプロセスが起動されてから終了するまで)に設定される終了コードについては,「付録A イベントジョブおよびアクションジョブ実行時の戻り値一覧」を参照してください。

ジョブの終了コードには,ユーザーアプリケーションやJP1/AJS3以外にOSが設定するものがあります。代表的な終了コードを次の表に示します。これらの終了コードはOSのアップグレードなどによって変更になる場合もあるため,使用しているOSの技術情報を確認してください。

表7‒13 OSが設定するジョブの終了コードの例

OS

終了コード

原因

対処方法

Windows

259または-1

結果ファイルのオープンに失敗していることが考えられます。この場合は,同時に次に示すどちらかのメッセージが出力されます。

  • 「KAVU3284-W 内部処理(論理ホスト名)でシステムコールエラーが発生しました(要因個所:要因個所,要因番号1:0x2013000a,システムコール名:CreateFile,要因番号2:要因番号2)」

  • 標準エラー出力に「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」

ジョブとして実行するプログラム内でオープンするファイル,またはバッチファイル内のリダイレクションでオープンするファイルを,ジョブを登録するときの標準出力ファイル,または標準エラー出力ファイルとして指定しないでください。ただし,プログラム内で関数を使用してオープンする場合に限って,共有の読み取りまたは共有の書き込みを許可する設定でオープンすることによって回避することもできます。

128

デスクトップヒープの領域不足が考えられます。この場合は,同時に次に示すどちらかのメッセージが出力されます。

  • 「XXXX.XXX - アプリケーションエラー:アプリケーションを正しく初期化できませんでした。」

  • 「XXXX.XXXの初期化に失敗しました。」

デスクトップヒープ領域の消費を少なくしたい場合は,ジョブを実行するユーザーのアカウントを,「JP1/AJS3サービス」のアカウントと同じにして運用してください。

UNIX

シグナル番号+128

ジョブプロセスから起動したプログラムがシグナルを受信したことが考えられます。

次に示すどちらかの方法で対処してください。

  • ジョブプロセスから起動するプログラムがシグナルを受信しないようにする。

  • ジョブプロセスから起動するプログラムにシグナルハンドラーなどを設定して,シグナルの種類によって終了コードを切り分けるなどの処理を追加する。

注※

ジョブプロセス自身がシグナルを受信すると,実行先サービスが[通常]のジョブは,終了コード「-1」で終了状態「強制終了」になります。また,実行先サービスが[キューレス]のジョブは,終了コード「-1」で終了状態「異常検出終了」になります。