#-adsh_step_startコマンド,#-adsh_step_errorコマンド,#-adsh_step_endコマンド(ジョブステップを定義する)
形式
#-adsh_step_start
[ジョブステップ名]
[-successRC 終了コード定義[,終了コード定義 ...]]
[-stepVar シェル変数名[,シェル変数名 ...]]
[-run{normal|abnormal|always}]
[-onError{cont|stop}]
... ジョブステップ内の処理...(ジョブステップ正常ブロック)
[#-adsh_step_error]
[... ジョブステップエラー時の処理...(ジョブステップエラーブロック)]
#-adsh_step_end
機能
ジョブ定義スクリプトの一部分を,ジョブステップとしてグループ化します。ジョブステップとは,グループ化した一まとまりのコマンド群のことです。ジョブステップの定義は,それぞれ4,095個まで指定できます。
引数
- ジョブステップ名
- ~<環境変数名>((1~31バイト))
- ジョブステップを識別する情報の1つであるジョブステップ名を定義します。ジョブステップ名はジョブ実行ログなどにメッセージとして表示されるほか,JP1/Advanced Shellが作成するファイル名の一部にも使用されます。
- ジョブステップ名は,ジョブ内で重複できます。
- -successRC 終了コード定義[,終了コード定義]...
- ジョブステップ正常ブロック内で実行するコマンドが正常終了したと見なす,コマンドの終了コードの値を定義します。定義を「,」で区切って複数指定した場合,どれかの定義を満たした場合に正常終了と見なします。
- 終了コード定義
- ~<符合なし整数>((0~255))
- 省略した場合,0を仮定します。終了コード定義は8個まで指定できます。
- 終了コード
終了コードの場合,正常終了します。
- 終了コード1:終了コード2
終了コード1以上,終了コード2以下の場合,正常終了します。
- 終了コード:
終了コード以上の場合,正常終了します。
- :終了コード
終了コード以下の場合,正常終了します。
- -stepVar シェル変数名[,シェル変数名 ...]
- ジョブステップ内だけで有効なシェル変数を宣言します。シェル変数名は,コンマで区切って32個まで指定できます。
- シェル変数名
~<環境変数名>((1~255バイト))
ジョブステップ内だけで有効なシェル変数の名称を指定します。
- -run{normal|abnormal|always}
- 先行ジョブステップや先行ジョブ定義スクリプト中のコマンドの状態によって,そのジョブステップを実行するかどうかを定義します。指定が省略されている場合,normalが指定されたものとします。
- normal
先行ジョブステップの中にエラー終了したジョブステップが存在しない場合,または先行ジョブ定義スクリプト中にエラー終了したコマンドが存在しない場合,実行します。
- abnormal
先行ジョブステップの中にエラー終了したジョブステップが存在する場合,または先行ジョブ定義スクリプト中にエラー終了したコマンドが存在する場合,実行します。
- always
先行ジョブステップや先行ジョブ定義スクリプト中のコマンドの結果に関係なく,常に実行します。
- onError={cont|stop}
- ジョブステップ正常ブロック内のコマンドがエラー終了したとき,ジョブステップ正常ブロック内の後続ジョブ定義スクリプトを実行しないでジョブステップエラーブロックへジャンプするか,ジョブステップ正常ブロック内の後続ジョブ定義スクリプトを実行するかを定義します。指定が省略されている場合,stopが指定されたものとします。
- cont
ジョブステップ正常ブロック内の後続ジョブ定義スクリプトを実行します。
- stop
ジョブステップ正常ブロック内の後続ジョブ定義スクリプトを実行しないで,ジョブステップエラーブロック内のジョブ定義スクリプトを実行します。
戻り値
- #-adsh_step_start,#-adsh_step_errorの場合
- #-adsh_step_endの場合
戻り値 | 意味 |
---|
ジョブステップ正常ブロック内で最後に終了したコマンドの終了コード | ジョブステップ正常終了 |
ジョブステップエラー終了 |
exitコマンドの引数 | ジョブステップエラーブロック内で引数を指定したexitコマンドを実行して終了 |
execコマンド実行直前の終了コード | 正常終了
- ステップ正常ブロック内で引数に外部コマンドを指定したexecコマンドを実行して終了
|
1 | #-adsh_step_end自身のエラー終了 |
- 注
- #-adsh_step_endコマンドのジョブステップ正常終了およびジョブステップエラー終了の戻り値は,環境設定パラメーターで変更できません。
注意事項
- ジョブステップ正常ブロックまたはジョブステップエラーブロックと,制御文(if,for,while,until,case)のブロックが交差しないようにしてください。交差した場合,実行前に文法エラーとなります。
- for文,while文,until文のブロック内に,ジョブステップを定義しないでください。これらのブロック内に関数呼び出しや外部スクリプト展開がある場合,関数や外部スクリプトにジョブステップを含むこともできません。含んだ場合,実行前に文法エラーとなります。
- if文,case文のブロック内にはジョブステップを定義できます。ただし,run属性にabnormalまたはalwaysを指定できません。
- ジョブステップ内にジョブステップを定義できません。
- #-adsh_rc_ignoreコマンドなどを使用して,ジョブステップ正常ブロックで最後に実行したコマンドが0以外で正常終了した場合,ジョブステップが正常終了してもジョブステップの終了コードが0以外となることがあります。
- ジョブ定義スクリプト
#-adsh_rc_ignore cmdA
#-adsh_step_start S1 -onError cont
cmdA #rc=4となるコマンド
cmdA #rc=4となるコマンド
#-adsh_step_end
- 実行ログ
KNAX6523-I Command cmdA(line=4) was executed. rc=4 E-Time=0.001s C-Time=0.000s
KNAX6523-I Command cmdA(line=5) was executed. rc=4 E-Time=0.026s C-Time=0.000s
KNAX6597-I ADSH012712.S1 Step succeeded. rc=4 E-Time=0.030s C-Time=0.000s
- KNAX6584-Iメッセージを出力してバッチジョブを中断する場合,最後に実行したコマンドに対しては,successRC属性の指定は有効になりません。
- ジョブステップ正常ブロック内およびジョブステップエラーブロック内に関数を定義した場合,ジョブステップがrun属性によってスキップされても,定義した関数を使用できます。
使用例
- if制御文のブロックと,ジョブステップ正常ブロックが交差するとエラーになります。
if [[ $a = $b ]]; then
#-adsh_step_start S1
fi
#-adsh_step_end
- while制御文のブロック内に,ジョブステップを定義するとエラーになります。
while [[ $a = $b ]] do
#-adsh_step_start S1
#-adsh_step_end
done
- if制御文のブロック内には,ジョブステップを定義できます。
if [[ $a = $b ]]; then
#-adsh_step_start S1
#-adsh_step_end
fi