JP1/Advanced Shell
ジョブ実行中にエラーが発生した場合の,後続のコマンド・制御文の動作について説明します。発生するエラーの種類を次に示します。
- スクリプト拡張コマンドのエラー
#-adsh_fileコマンドでファイル割り当てに失敗したときなどで発生します。
- シェル標準コマンドのエラー
- 続行できる場合
指定したコマンド名が見つからないとき,正規組み込みコマンドがエラーになったときなどで発生します。
- 続行できない場合
特殊組み込みコマンドのエラーなどで発生します。
- <この項の構成>
- (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を指定したジョブステップ内にコマンド・制御文を記述してください。
All Rights Reserved. Copyright (C) 2011, 2012, Hitachi, Ltd.