Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【JP1/AJS】異常ジョブを「常に正常」にするメリットと注意点|KAVS0261-I・KAVS0264-Iの意味

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

こんにちは!JP1/AJSのジョブ設計や運用保守、日々お疲れ様です。

JP1のジョブ運用で、「このコマンド(スクリプト)は時々エラーコードを返すけれど、後続の処理は止めずに進めたい」という場面はありませんか?

そんなときに便利なのが、ジョブの「判定結果」設定を 「常に正常」 に変更する機能です。

しかし、ここで一つ疑問が浮かびます。 「常に正常」と判定されたとき、そのジョブの最終的な『終了コード』は本来のエラーコードのままなのか、それとも『0(正常)』に上書きされるのか?

今回は、この挙動の結論と、その際にJP1が出力するログメッセージ(KAVS〜)について解説します!

スポンサーリンク
バッチ処理の自動化スキルは市場価値が高いです。今の自分の単価を調べてみませんか?
顧客常駐はもう嫌だ!社内SEへ転職するなら【社内SE転職ナビ】
Cursor・Claude Code・Codex AIスキルを学ぶなら
環境構築不要!AIエージェント開発を非エンジニアでも即実践【AI Agent Camp】

1. 【結論】終了コードは「正常(0)」として扱われる

結論から言うと、ジョブの判定結果を「常に正常」に設定した場合、OSのコマンドやスクリプトが内部でどんなエラーコード(例: 1255)を返していたとしても、JP1上の終了コードは一律で「正常の終了コード(通常は 0)」として処理されます。

そのため、後続のジョブやジョブネットは「前のジョブが正常に終わった」と認識し、何事もなかったかのようにスムーズに実行されます。

2. ログには形跡が残る!出力される2つの重要メッセージ

「常に正常」にすると画面上は綺麗な緑色(正常終了)になりますが、「本当にコマンド自体は成功していたのか?」を後から調査したい時もありますよね。

JP1は優秀なので、スケジューラーサービスのログ( syslog や実行履歴ログ)に、「本来は異常コードだったけど、設定通り正常扱いにしたよ」という形跡をちゃんと残してくれます。

その際に出力されるのが、以下の2つのインフォメーションメッセージ(-I)です。

① KAVS0264-I

  • メッセージのメッセージテキスト例: KAVS0264-I ジョブ(ジョブ名)は,終了コード(本来のコード)で終了しましたが,判定結果が「常に正常」のため,正常終了とします。

  • 解説: このメッセージを見れば、本来そのジョブが内部で何番の終了コードを返していたのか(本来のエラー原因)をピンポイントで特定することができます。

② KAVS0261-I

  • メッセージのメッセージテキスト例: KAVS0261-I ジョブ(ジョブ名)は正常終了しました(終了コード:0)。

  • 解説: 最終的にJP1がこのジョブを「終了コード 0」として着地させたことを示すログです。

3. 運用設計時の注意点

「常に正常」は非常に便利な機能ですが、使いどころには注意が必要です。

  • 本当の異常を見逃すリスクがある ディスクフルや権限エラーなど、「本当に処理が失敗してデータが壊れているケース」であってもジョブネットが先に進んでしまいます。

  • 基本はスクリプト側での制御がおすすめ 可能であれば、JP1の機能に頼るよりも、バッチファイルやシェルスクリプト側で try-catchif 文を使い、「許容できるエラーのときだけ exit 0 を返す」という実装にした方が、後からのメンテナンスやログの可読性が高くなります。

まとめ

  • 判定結果を「常に正常」にすると、終了コードは正常(0)になる。

  • 後続ジョブは問題なく実行される。

  • 本来の終了コードを知りたい時は、ログから KAVS0264-I を探せば一発でわかる。

一時的なメンテナンスや、どうしてもエラーハンドリングが難しいレガシーなプログラムを組み込む際の頼れる機能です。挙動を正しく理解して、安全なジョブ設計に役立ててくださいね!

タイトルとURLをコピーしました