5.9.10 ジョブ実行中にエラーが発生した場合の動作

ジョブ実行中にエラーが発生した場合の,後続のコマンド・制御文の動作について説明します。発生するエラーの種類を次に示します。

<この項の構成>
(1) ジョブステップ外でエラーが発生した場合
(2) ジョブステップ正常ブロック内でエラーが発生した場合
(3) ジョブステップエラーブロック内でエラーが発生した場合
(4) 注意事項

(1) ジョブステップ外でエラーが発生した場合

ジョブステップ外でエラーが発生した場合の動作を次の表に示します。

表5-39 ジョブステップ外でエラーが発生した場合の動作

発生したエラーの種類後続のコマンド・制御文の動作
スクリプト拡張コマンドのエラー
  • run属性がabnormalまたはalwaysのジョブステップを実行します。
  • 上記以外のすべてのコマンド・制御文は実行しません。
シェル標準コマンドのエラー(続行できる場合)
  • run属性がnormalのジョブステップは実行しません。
  • 上記以外のすべてのコマンド・制御文を実行します。
シェル標準コマンドのエラー(続行できない場合)ジョブ定義スクリプトの実行を終了します。

ジョブステップ外でエラーが発生した場合の例を次に示します。

表5-40 ジョブステップ外でエラーが発生した場合の例

ジョブ定義スクリプトのコーディング例スクリプト拡張コマンドのエラーシェル標準コマンドのエラー
続行できる場合続行できない場合

#-adsh_file JOBFILE jobfile

×

cmdA

×

shift $n

×

cmdB

#-adsh_step_start NO -run normal

 echo "run normal step"

 cmdNormal

#-adsh_step_end

#-adsh_step_start AB -run abnormal

 echo "run abnormal step"

 cmdAbnormal

#-adsh_step_end

#-adsh_step_start AL -run always

 echo "run always step"

 cmdAlways

#-adsh_step_end

(凡例)
○:実行します。
△:実行しません。
×:エラーになります。
-:該当しません。
空行の個所は何も指定していないことを示します。

(2) ジョブステップ正常ブロック内でエラーが発生した場合

ジョブステップ正常ブロック内でエラーが発生した場合の動作を次の表に示します。

表5-41 ジョブステップ正常ブロック内でエラーが発生した場合の動作

発生したエラーの種類後続のコマンド・制御文の動作
スクリプト拡張コマンドのエラー
シェル標準コマンドのエラー(続行できる場合)
  • ジョブステップ正常ブロック内のすべてのコマンド・制御文は実行しません。
  • ジョブステップエラーブロックが定義されている場合,ジョブステップエラーブロックを実行します。
  • ジョブステップがエラー終了します。後続のコマンド・制御文の動作はジョブステップ外でスクリプト拡張コマンドのエラーが発生したときの動作と同一です。
シェル標準コマンドのエラー(続行できない場合)ジョブ定義スクリプトの実行を終了します。
注※
onError属性がcontの場合,シェル標準コマンドのエラー(続行できる場合)がジョブステップ正常ブロック内の最後のコマンドであるときに限り,ジョブステップ正常ブロック内でエラーが発生したと見なします。

ジョブステップ正常ブロック内でエラーが発生した場合の例を,次に示します。

表5-42 ジョブステップ正常ブロック内でエラーが発生した場合の例

ジョブ定義スクリプトのコーディング例スクリプト拡張コマンドのエラーシェル標準コマンドのエラー
続行できる場合続行できる場合(onError属性がcontの場合)続行できない場合

#-adsh_step_start S1 -onError stop

 #-adsh_file JOBFILE jobfile

×

 cmdA

××

 shift $n

×

 cmdB

#-adsh_step_error

 echo "step error block"

#-adsh_step_end

#-adsh_step_start NO -run normal

 echo "run normal step"

 cmdNormal

#-adsh_step_end

#-adsh_step_start AB -run abnormal

 echo "run abnormal step"

 cmdAbnormal

#-adsh_step_end

#-adsh_step_start AL -run always

 echo "run always step"

 cmdAlways

#-adsh_step_end

(凡例)
○:実行します。
△:実行しません。
×:エラーになります。
-:該当しません。
空行の個所は何も指定していないことを示します。

(3) ジョブステップエラーブロック内でエラーが発生した場合

ジョブステップエラーブロック内でエラーが発生した場合の,後続のコマンド・制御文の動作を次の表に示します。

表5-43 ジョブステップエラーブロック内でエラーが発生した場合の動作

発生したエラーの種類後続のコマンド・制御文の動作
スクリプト拡張コマンドのエラー
  • ジョブステップエラーブロック内のすべてのコマンド・制御文を実行しません。
  • ジョブステップがエラー終了します。後続のコマンド・制御文の動作はジョブステップ外でスクリプト拡張コマンドのエラーが発生したときの動作と同一です。
シェル標準コマンドのエラー(続行できる場合)
  • ジョブステップエラーブロック内のすべてのコマンド・制御文を実行します。
  • ジョブステップがエラー終了します。後続のコマンド・制御文の動作はステップ外でスクリプト拡張コマンドのエラーが発生したときの動作と同一です。
シェル標準コマンドのエラー(続行できない場合)ジョブ定義スクリプトの実行を終了します。

ジョブステップエラーブロック内でエラーが発生した場合の例を,次に示します。

表5-44 ジョブステップエラーブロック内でエラーが発生した場合の例

ジョブ定義スクリプトのコーディング例スクリプト拡張コマンドのエラーシェル標準コマンドのエラー
続行できる場合続行できない場合

#-adsh_step_start S1 -onError stop

 echo "step normal block"

#-adsh_step_error

 #-adsh_file JOBFILE jobfile

×

 cmdA

×

 shift $n

×

 cmdB

#-adsh_step_end

#-adsh_step_start NO -run normal

 echo "run normal step"

 cmdNormal

#-adsh_step_end

#-adsh_step_start AB -run abnormal

 echo "run abnormal step"

 cmdAbnormal

#-adsh_step_end

#-adsh_step_start AL -run always

 echo "run always step"

 cmdAlways

#-adsh_step_end

(凡例)
○:実行します。
△:実行しません。
×:エラーになります。
-:該当しません。
空行の個所は何も指定していないことを示します。

(4) 注意事項

ジョブステップ外で続行できるシェル標準コマンドのエラーが発生した場合,run属性がnormalのジョブステップを除き,後続のコマンド・制御文をすべて実行します。この場合,ジョブの終了コードも後続のコマンド・制御文の終了コードで上書きされます。エラーの要因となった終了コードをジョブの終了コードに反映したい場合(JP1/AJSでジョブをエラーとしたい場合など)は,onError属性にstopを指定したジョブステップ内にコマンド・制御文を記述してください。