7.3.10 CMDRC_THRESHOLD_DEFINEパラメーター(コマンドの終了コードのしきい値を定義する)
形式
#-adsh_conf CMDRC_THRESHOLD_DEFINE コマンド名 しきい値
機能
ジョブ定義スクリプトから実行されるコマンドの終了コードが0でなくても正常終了と見なしたい場合,対象となるコマンド名と,しきい値となる値を定義します。これによって,コマンドの終了コードがしきい値以下の場合が正常終了となります。
ただし,コマンドがシグナルを受信して終了した場合は,指定に関係なくコマンドがエラー終了します。
CMDRC_THRESHOLD_USE_PRESETパラメーターのENABLEの指定によってしきい値が定義されたUNIX互換コマンドに対しても,CMDRC_THRESHOLD_DEFINEパラメーターでしきい値を変更できます。
オペランド
- コマンド名 〜<コマンド名>((1〜255バイト))
終了コードのしきい値を定義するコマンドの名称を指定します。Windowsの場合は拡張子付きの指定もできます。コマンドパスは指定できません。
指定できるコマンドの種類を次に示します。これ以外のコマンドも,別プロセスで実行(パイプ,コマンド置換,|&,&を使用)した場合は対象になります。
外部コマンド
UNIX互換コマンド
シェル運用コマンド
-
コマンドとして実行したスクリプト(#!によって実行)
シェルスクリプト
子孫ジョブ
Windowsでコマンド名の拡張子の指定を省略すると,指定した名称と同じ名称のコマンドやバッチファイルが,拡張子に関係なくしきい値の管理対象となります。
Windowsでスペースを含むコマンド名を指定する場合は,"(ダブルクォーテーション)で囲んでください。
- しきい値 〜<整数>((-1〜255))
終了コードで正常終了と見なすしきい値を定義します。ここで指定したしきい値より終了コードが大きい場合,エラー終了と見なします。
-1を指定した場合,実行結果は常にエラー終了します。
255を指定した場合,実行結果は常に正常終了します。
注意事項
このパラメーターは,変数置換やエイリアスの解決後のコマンド名に対して適用されます。
このパラメーターによって設定されたコマンドのしきい値,および実行したコマンドの終了コードとの判定によって決定したコマンドの動作は,ジョブ定義スクリプトの#-adsh_rc_ignoreコマンドや,#-adsh_step_startコマンドのsuccessRC属性の設定値が優先します。
システム環境ファイルとジョブ環境ファイルの両方にこのパラメーターが定義された場合,両方の定義が有効になります。ただし,同じコマンドに対して異なるしきい値が定義されていた場合は,ジョブ環境ファイルに最後に定義された方が有効になります。
パラメーターの指定数に上限はありませんが,多数指定するとジョブ定義スクリプトの実行性能に影響が及ぶため,必要のないコマンドの定義はしないでください。
子孫ジョブとして実行するジョブ定義スクリプトの終了コードのしきい値を定義したい場合,子孫ジョブの定義にはCHILDJOB_EXTパラメーターまたはCHILDJOB_SHEBANGパラメーターを使用してください。
CHILDJOB_PGMパラメーターで子孫ジョブを定義した場合,終了コードのしきい値の対象として見なされません。
Windowsの場合,コマンド名には拡張子を含めた指定および拡張子を省略した指定ができます。
ただし,同じコマンド名に対して拡張子を含めた指定と拡張子を省略した指定をしても,同じコマンド名の指定とは見なされません。
このパラメーターで同じコマンド名に対して,拡張子を含めた指定と拡張子を省略した指定をした場合,先に指定された方が有効です。
CMDRC_THRESHOLD_USE_PRESETパラメーターでENABLEを指定して仮定されるコマンド名は拡張子を含めた名称となるため,このパラメーターをしきい値の変更の目的で指定する場合,拡張子を含めた指定としなければなりません。拡張子を省略して指定した場合は,別コマンドとして登録されます。
CMDRC_THRESHOLD_USE_PRESETパラメーターとCMDRC_THRESHOLD_DEFINEパラメーターは,指定の順番に関係なくCMDRC_THRESHOLD_USE_PRESETパラメーターが先に処理されます。
-
CMDRC_CMDGRP_CHECKパラメータにFUNCTIONを指定した場合,オペランドのコマンド名に関数名を指定することで,関数に対して正常終了とみなす終了コードしきい値を定義できます。CMDRC_CMDGRP_CHECKパラメータを指定しない場合,またはCMDRC_CMDGRP_CHECKパラメータにNONEを指定した場合,オペランドのコマンド名に関数名を指定しても,同名のコマンド名が指定されたとして処理されます。
使用例
子孫ジョブCHILD_EXEC1.shに対し,終了コードのしきい値を10(終了コードが10以下で正常終了)と定義します。
#-adsh_conf CHILDJOB_EXT sh #-adsh_conf CMDRC_THRESHOLD_DEFINE CHILD_EXEC1.sh 10
UNIX互換コマンドの終了コードのしきい値として1を一括定義します。また,それ以外のUNIX互換コマンドであるacmd,bcmd,ccmdコマンドのしきい値として20を定義します。
#-adsh_conf CMDRC_THRESHOLD_USE_PRESET ENABLE #-adsh_conf CMDRC_THRESHOLD_DEFINE acmd 20 #-adsh_conf CMDRC_THRESHOLD_DEFINE bcmd 20 #-adsh_conf CMDRC_THRESHOLD_DEFINE ccmd 20
【Windows限定】コマンド名「acmd.exe」の終了コードのしきい値として10を定義し,総称名「acmd」のしきい値として20を定義します。
#-adsh_conf CMDRC_THRESHOLD_DEFINE acmd.exe 10 #-adsh_conf CMDRC_THRESHOLD_DEFINE acmd 20
この定義順の場合,コマンド「acmd.exe」のしきい値として10が適用され,拡張子が「.exe」以外のコマンド(acmd.batなど)のしきい値として20が適用されます。
【Windows限定】コマンドの総称名「acmd」のしきい値として20を定義し,コマンド名「acmd.exe」の終了コードのしきい値として10を定義します。
名称「acmd」のコマンド(acmd.exeやacmd.batなど)の終了コードのしきい値として20が適用されます。
#-adsh_conf CMDRC_THRESHOLD_DEFINE acmd 20 #-adsh_conf CMDRC_THRESHOLD_DEFINE acmd.exe 10
この定義順の場合,最初に記述されているコマンドの総称名「acmd」に対する定義がコマンド「acmd.exe」に対しても優先的に適用されるため,コマンド「acmd.exe」のしきい値も20になります。
同じパラメーターにコマンド名「acmd.exe」を2つ指定します。しきい値はそれぞれ30と20を定義します。
#-adsh_conf CMDRC_THRESHOLD_DEFINE acmd.exe 30 #-adsh_conf CMDRC_THRESHOLD_DEFINE acmd.exe 20
この場合,最後に指定したパラメーターのしきい値の20が適用されます。
コマンド名「acmd.exe」をシステム環境ファイルにはしきい値10で指定し,ジョブ環境ファイルにはしきい値20でそれぞれ指定します。
<システム環境ファイルの指定>
#-adsh_conf CMDRC_THRESHOLD_DEFINE acmd.exe 10
<ジョブ環境ファイルの指定>
#-adsh_conf CMDRC_THRESHOLD_DEFINE acmd.exe 20
この場合,ジョブ環境ファイルに指定したしきい値の20が適用されます。
【Windows限定】UNIX互換コマンドの終了コードのしきい値として1を一括定義したのち,cmp.exeコマンドだけしきい値を2に変更します。
#-adsh_conf CMDRC_THRESHOLD_USE_PRESET ENABLE #-adsh_conf CMDRC_THRESHOLD_DEFINE cmp.exe 2
【Windows限定】次のように,CMDRC_THRESHOLD_USE_PRESETパラメーターでしきい値として1が仮定されたコマンド「cmp.exe」に対して,CMDRC_THRESHOLD_DEFINEパラメーターで「cmp 2」と指定しても,しきい値を1から2に変更することはできません。
#-adsh_conf CMDRC_THRESHOLD_USE_PRESET ENABLE #-adsh_conf CMDRC_THRESHOLD_DEFINE cmp 2
この場合,「cmp.exe」と「cmp」は別々のコマンドとして管理され,それぞれのしきい値が有効となります。
CMDRC_THRESHOLD_USE_PRESETパラメーターとCMDRC_THRESHOLD_DEFINEパラメーターを次のように異なる環境ファイルで指定した場合,コマンド「cmp.exe」のしきい値は,CMDRC_THRESHOLD_DEFINEパラメーターに指定したしきい値である2が適用されます。
<システム環境ファイルの指定>
#-adsh_conf CMDRC_THRESHOLD_DEFINE cmp.exe 2
<ジョブ環境ファイルの指定>
#-adsh_conf CMDRC_THRESHOLD_USE_PRESET ENABLE