Hitachi

JP1 Version 11 JP1/Advanced Shell 


6.2.21 エラー注入モードの有効/無効を設定する(joberrmodeコマンド)

デバッグ中のジョブ定義スクリプトのエラー注入モードを有効または無効にするには,joberrmodeコマンドを実行します。joberrmodeコマンドの短縮形は"jem"です。joberrmodeコマンドの形式を次に示します。

joberrmode {on|off}
onを選択した場合

エラー注入モードを有効にします。これによって,ジョブ内でエラーが発生した場合のケースをテストできます。すべての実行パスを実行してもC1実行比率が100%とならない場合に,エラーをシミュレートするために使用します。C1実行比率が100%とならないケースについては,「(5) C1実行比率100%とならないケース」を参照してください。

エラー注入モードが有効な場合は次のように動作します。このとき,終了コードは変更しません。

  • run属性にabnormalまたはalwaysが指定されている場合,ジョブステップを実行する。

  • run属性が省略されているまたはnormalが指定されている場合,ジョブステップを実行しない。

  • ジョブステップ外のコマンドは実行しない。

  • ステップ正常ブロック内でエラー注入した場合,そのステップのステップエラーブロック内のコマンドは実行する。onError属性にcontが指定されていても,そのステップ内の後続のコマンドは実行しないで,ステップエラーブロックを実行する。

エラー注入モードがonの場合にrunコマンドを実行すると,エラー注入モードはoffに戻ります。

CMDRC_CMDGRP_CHECKパラメータにFUNCTIONを指定した場合,関数内で停止中に「joberrmode on」を実行しても,エラー注入モードはonに変更できません。

offを選択した場合

エラー注入モードを無効にします。

実行例1

次に示すジョブ定義スクリプトを実行した場合について説明します。左側の行番号は,実行結果に出力される行番号との対応づけのため記載しています。

001  #!/bin/sh
002  
003  #-adsh_step_start STEP001                 ←STEP001開始
004  
005  ./cmd1                                    ←ステップ正常ブロック部
006  
007  #-adsh_step_error                         ←ステップエラーブロック部
008  
009  ./cmd2
010  
011  #-adsh_step_end
012  
013  ./cmd3
014  
015  #-adsh_step_start STEP002 -run abnormal   ←STEP002開始 異常時に実行
016  
017  ./cmd4                                    ←ステップ正常ブロック部
018  
019  #-adsh_step_error                         ←ステップエラーブロック部
020  
021  ./cmd5
022  
023  #-adsh_step_end
024  
025  ./cmd6
026  
027  echo JOB01-ended
実行結果1

ステップ外で停止し,joberrmodeコマンドでエラー注入モードを有効にした場合の例を示します。行の右側に付加した番号に対する説明は,実行結果の下を参照してください。

[jobuser1@HOST01 joberrmode]$ adshexec -d joberrmode.ash                 ←1.
KNAX7901-I ジョブコントローラは,ジョブ終了時にすべての非同期実行プロセスの完了を待ちます。
KNAX0724-I ジョブ識別子を割り当てました。Jobid=000004
(adshdb) b 2                                                             ←2.
KNAX7015-W 指定した行番号("2")にブレークポイントを設定できません。次に設定できる行にブレークポイントを設定します。
KNAX7018-I ブレークポイント "1": ファイル名="joberrmode.ash" 行番号=3
(adshdb) b 17                                                            ←3.
KNAX7018-I ブレークポイント "2": ファイル名="joberrmode.ash" 行番号=17
(adshdb) run                                                             ←4.
KNAX7007-I ジョブ定義スクリプトの実行を開始します。: /home/jobuser1/joberrmode/joberrmode.ash
 
KNAX0724-I ジョブ識別子を割り当てました。Jobid=000005
KNAX0091-I ADSH000005 ジョブが開始しました。
KNAX7902-I ジョブコントローラは,"端末入力モード"で動作します。
 
KNAX7018-I ブレークポイント "1": ファイル名="joberrmode.ash" 行番号=3    ←5.
KNAX7032-I ジョブ定義スクリプトファイル("joberrmode.ash")の中で実行を停止しました。
3: #-adsh_step_start STEP001
現在位置: #-adsh_step_start STEP001
(adshdb) info status                                                     ←6.
joberrmode:off                                                           ←7.
(adshdb) joberrmode on                                                   ←8.
KNAX7126-I エラー注入モードを "on" に設定しました。
(adshdb) info status                                                     ←9.
joberrmode:on                                                           ←10.
(adshdb) c                                                              ←11.
KNAX7034-I ジョブ定義スクリプトの実行を継続します。
KNAX6508-I ADSH000005.STEP001 先行のジョブステップまたはコマンドがエラー終了したため,ジョブステップをスキップしました。
KNAX0092-I ADSH000005.STEP002 ステップが開始しました。
 
KNAX7018-I ブレークポイント "2": ファイル名="joberrmode.ash" 行番号=17  ←12.
KNAX7032-I ジョブ定義スクリプトファイル("joberrmode.ash")の中で実行を停止しました。
17: ./cmd4
現在位置: ./cmd4
(adshdb) joberrmode off
KNAX7127-E エラー注入モードの再設定に失敗しました。                     ←13.
(adshdb) c                                                              ←14.
KNAX7034-I ジョブ定義スクリプトの実行を継続します。
cmd4 start
cmd4 end
KNAX6116-I コマンド(./cmd4, 行番号=17)が正常終了しました。rc=0 E-Time=0.001s C-Time=0.000s
KNAX6597-I ADSH000005.STEP002 ジョブステップが正常終了しました。rc=0 E-Time=4.666s C-Time=0.000s
KNAX0101-E ADSH000005 ジョブを実行中にエラーが発生しました。
KNAX0098-I ADSH000005 ジョブが終了しました。rc=0 E-Time=15.203s C-Time=0.000s
KNAX6380-I ルートジョブのスプールジョブディレクトリにジョブ名を付加します。spool job directory="/home/jobuser1/test6/spool/000005-ADSH000005/"
 
(adshdb) quit
KNAX6380-I ルートジョブのスプールジョブディレクトリにジョブ名を付加します。spool job directory="/home/jobuser1/test6/spool/000004-ADSH000004/"
KNAX7999-I ルートジョブのジョブコントローラがバッチジョブを終了しました。rc=0

実行結果の右側に付加した番号に従って解説します。

デバッグを開始する。

スクリプトの途中で停止させる。

エラー時に実行するステップ内で停止させる。

スクリプトを実行する。

最初のブレークポイントで停止する。

ステータスを表示する。

エラー注入モードは無効。

エラー注入モードを有効にする。

ステータスを表示する。

エラー注入モードは有効。

デバッグを再開する。

エラー時に実行するステップ内で停止する。

エラー注入モードの切り替えはできない。

デバッグを再開する。

実行結果2

ステップ内で停止し,joberrmodeコマンドでエラー注入モードを有効にした場合の例を示します。行の右側に付加した番号に対する説明は,実行結果の下を参照してください。

[jobuser1@HOST01 joberrmode]$ adshexec -d joberrmode.ash                 ←1.
KNAX7901-I ジョブコントローラは,ジョブ終了時にすべての非同期実行プロセスの完了を待ちます。
KNAX0724-I ジョブ識別子を割り当てました。Jobid=000006
(adshdb) b 5                                                             ←2.
KNAX7018-I ブレークポイント "1": ファイル名="joberrmode.ash" 行番号=5
(adshdb) b 17                                                            ←3.
KNAX7018-I ブレークポイント "2": ファイル名="joberrmode.ash" 行番号=17
(adshdb) run                                                             ←4.
KNAX7007-I ジョブ定義スクリプトの実行を開始します。: /home/joberrmode/joberrmode/joberrmode.ash
 
KNAX0724-I ジョブ識別子を割り当てました。Jobid=000007
KNAX0091-I ADSH000007 ジョブが開始しました。
KNAX7902-I ジョブコントローラは,"端末入力モード"で動作します。
KNAX0092-I ADSH000007.STEP001 ステップが開始しました。
 
KNAX7018-I ブレークポイント "1": ファイル名="joberrmode.ash" 行番号=5    ←5.
KNAX7032-I ジョブ定義スクリプトファイル("joberrmode.ash")の中で実行を停止しました。
5: ./cmd1
現在位置: ./cmd1
(adshdb) info status                                                     ←6.
joberrmode:off                                                           ←7.
(adshdb) joberrmode on                                                   ←8.
KNAX7126-I エラー注入モードを "on" に設定しました。
(adshdb) info status                                                     ←9.
joberrmode:on                                                           ←10.
(adshdb) c                                                              ←11.
KNAX7034-I ジョブ定義スクリプトの実行を継続します。
cmd2 start
cmd2 end
KNAX6116-I コマンド(./cmd2, 行番号=9)が正常終了しました。rc=0 E-Time=0.001s C-Time=0.000s
KNAX6596-E ADSH000007.STEP001 ジョブステップがエラー終了しました。rc=0 E-Time=13.568s C-Time=0.010s
KNAX0092-I ADSH000007.STEP002 ステップが開始しました。
 
KNAX7018-I ブレークポイント "2": ファイル名="joberrmode.ash" 行番号=17  ←12.
KNAX7032-I ジョブ定義スクリプトファイル("joberrmode.ash")の中で実行を停止しました。
17: ./cmd4
現在位置: ./cmd4
(adshdb) joberrmode off
KNAX7127-E エラー注入モードの再設定に失敗しました。                     ←13.
(adshdb) c                                                              ←14.
KNAX7034-I ジョブ定義スクリプトの実行を継続します。
cmd4 start
cmd4 end
KNAX6116-I コマンド(./cmd4, 行番号=17)が正常終了しました。rc=0 E-Time=0.001s C-Time=0.000s
KNAX6597-I ADSH000007.STEP002 ジョブステップが正常終了しました。rc=0 E-Time=15.496s C-Time=0.000s
KNAX0101-E ADSH000007 ジョブを実行中にエラーが発生しました。
KNAX0098-I ADSH000007 ジョブが終了しました。rc=0 E-Time=29.066s C-Time=0.010s
KNAX6380-I ルートジョブのスプールジョブディレクトリにジョブ名を付加します。spool job directory="/home/joberrmode/test6/spool/000007-ADSH000007/"

実行結果の右側に付加した番号に従って解説します。

デバッグを開始する。

ステップ内のスクリプトの途中で止める。

エラー時に実行するステップ内で止める。

スクリプトを実行する。

最初のブレークポイントで停止する。

ステータスを表示する。

エラー注入モードは無効。

エラー注入モードを有効にする。

ステータスを表示する。

エラー注入モードは有効。

デバッグを再開する。

エラー時に実行するステップ内で停止する。

エラー注入モードの切り替えはできない。

デバッグを再開する。

実行例2

次に示すジョブ定義スクリプトを実行した場合について説明します。左側の行番号は,実行結果に出力される行番号との対応づけのため記載しています。

001  #-adsh_job JOB001
002  #-adsh_step_start STEP001 -onError cont  ←STEP001開始 -onError cont指定
003   ./cmd1                                  ←ステップ正常ブロック部
004   ./cmd2
005   ./cmd3
006  #-adsh_step_error
007   ./cmd4                                  ←ステップエラーブロック部
008   ./cmd5
009  #-adsh_step_end
010   ./cmd6                                  ←ステップ外のコマンド
実行結果

ステップ内(4行目)で停止し,joberrmodeコマンドを投入して実行した場合の例を示します。行の右側に付加した番号に対する説明は,実行結果の下を参照してください。

[jobuser1@HOST01 joberrmode]$ adshexec -d test_cont.ash                  ←1.
KNAX7901-I ジョブコントローラは,ジョブ終了時にすべての非同期実行プロセスの完了を待ちます。
KNAX0724-I ジョブ識別子を割り当てました。Jobid=000008
(adshdb) b 4                                                             ←2.
KNAX7018-I ブレークポイント "1": ファイル名="test_cont.ash" 行番号=4
(adshdb) r                                                               ←3.
KNAX7007-I ジョブ定義スクリプトの実行を開始します。: /home/jobuser1/joberrmode/test_cont.ash
 
KNAX0724-I ジョブ識別子を割り当てました。Jobid=000009
KNAX0091-I JOB001 ジョブが開始しました。
KNAX7902-I ジョブコントローラは,"端末入力モード"で動作します。
KNAX0092-I JOB001.STEP001 ステップが開始しました。
cmd1 start
cmd1 end
KNAX6116-I コマンド(./cmd1, 行番号=3)が正常終了しました。rc=0 E-Time=0.001s C-Time=0.000s
 
KNAX7018-I ブレークポイント "1": ファイル名="test_cont.ash" 行番号=4     ←4.
KNAX7032-I ジョブ定義スクリプトファイル("test_cont.ash")の中で実行を停止しました。
4:  ./cmd2
現在位置: ./cmd2
(adshdb) info status                                                     ←5.
joberrmode:off                                                           ←6.
(adshdb) jem on                                                          ←7.
KNAX7126-I エラー注入モードを "on" に設定しました。
(adshdb) info status                                                     ←8.
joberrmode:on                                                            ←9.
(adshdb) c                                                              ←10.
KNAX7034-I ジョブ定義スクリプトの実行を継続します。
cmd4 start                                                              ←11.
cmd4 end
KNAX6116-I コマンド(./cmd4, 行番号=7)が正常終了しました。rc=0 E-Time=0.002s C-Time=0.000s
cmd5 start
cmd5 end
KNAX6116-I コマンド(./cmd5, 行番号=8)が正常終了しました。rc=0 E-Time=0.001s C-Time=0.000s
KNAX6596-E JOB001.STEP001 ジョブステップがエラー終了しました。rc=0 E-Time=34.884s C-Time=0.000s
KNAX0101-E JOB001 ジョブを実行中にエラーが発生しました。
KNAX0098-I JOB001 ジョブが終了しました。rc=0 E-Time=34.886s C-Time=0.000s
KNAX6380-I ルートジョブのスプールジョブディレクトリにジョブ名を付加します。spool job directory="/home/jobuser1/test6/spool/000009-JOB001/"

実行結果の右側に付加した番号に従って解説します。

デバッグを開始する。

ステップ内のスクリプトの途中で止める。

スクリプトを実行する。

最初のブレークポイントで停止する。

ステータスを表示する。

エラー注入モードは無効。

エラー注入モードを有効にする。

ステータスを表示する。

エラー注入モードは有効。

デバッグを再開する。

ステップエラーブロック部のコマンドを実行する。