EXEC要素(プログラムの実行)
形式
[COND=" [(]しきい値, 演算符号 [,ジョブステップ名[,プロシジャステップ名]] [)] [,(しきい値, 演算符号 [,ジョブステップ名[,プロシジャステップ名]])]+ [,{EVEN|ONLY}] "] [Group="Javaバッチアプリケーション実行時のスケジュールグループ名"] [JSPEC="{YES|NO}"] [LANG="{COBOL|JP1Script|Java}"] [Option="{Javaのクラスパス|Javaのシステムプロパティ}"] [PGM="{*|コマンド名|スクリプトファイル名| Javaアプリケーションクラス名}"] [PARM="{引数|mainメソッドに渡す引数}"] [PARMSPLIT="{YES|NO}"] [STDOUTCLASS="クラス名"] [STDERRCLASS="クラス名"]
機能
実行するプログラムとプログラムを実行する条件を定義する。
属性
- COND="
-
[(]しきい値, 演算符号 [,ジョブステップ名[,プロシジャステップ名]] [)]
[,(しきい値, 演算符号 [,ジョブステップ名[,プロシジャステップ名]])]+
[,{EVEN|ONLY}] "
先行する全ジョブステップまたは特定のジョブステップの終了コードや,異常終了した先行ジョブステップの有無によって,このジョブステップを実行するかどうかを決定するための条件を指定する。
-
しきい値 〜<符号なし整数>((0〜255))
先行する全ジョブステップまたは特定のジョブステップの終了コードと比較するしきい値を指定する。1つでも条件を満たした場合,該当するジョブステップをスキップする。
-
演算符号 〜(({EQ|NE|GT|GE|LT|LE}))
演算符号の意味を次に示す。
EQ:しきい値は終了コードと等しい。
NE:しきい値は終了コードと等しくない。
GT:しきい値は終了コードより大きい。
GE:しきい値は終了コードより大きいか等しい。
LT:しきい値は終了コードより小さい。
LE:しきい値は終了コードより小さいか等しい。
-
ジョブステップ名 〜<記号名称>((1〜31文字))
判定対象となる終了コードを返すジョブステップ名を指定する。ただし,該当するジョブステップがプロシジャ中のジョブステップの場合には,ジョブステップ名としてプロシジャを呼び出したCALL要素のジョブステップ名を指定したあと,続いてプロシジャステップ名を指定する。
プロシジャステップ名を指定しないでジョブステップ名だけ記述した場合,ジョブコントローラは次の順序でジョブステップ名を検索する。
AIXの場合
ジョブ定義XMLファイルの先頭から,プロシジャ外のジョブステップ名を検索する。
Linuxの場合
該当するプロシジャ内のジョブステップ名を検索し,見つからない場合はジョブ定義XML ファイルの先頭から,プロシジャ外のジョブステップ名を検索する。
-
プロシジャステップ名 〜<記号名称>((1〜31文字))
該当するジョブステップがプロシジャ中のジョブステップの場合に,判定対象となる終了コードを返すプロシジャ中のSTEP要素に指定したジョブステップ名を指定する。
-
EVEN
先行したジョブステップのどれかが異常終了したかどうかに関係なく,無条件にこのジョブステップを実行する。
-
ONLY
先行したジョブステップのどれかが異常終了した場合に,このジョブステップを実行する。
-
- Group="Javaバッチアプリケーション実行時のスケジュールグループ名" 〜<グループ名>((1〜63))
-
Javaバッチアプリケーション実行時,ジョブスケジューリング機能を使用する場合に,CTMがバッチアプリケーションの実行をスケジューリングするときに割り当てるバッチサーバのスケジュールグループを指定する。スケジュールグループ名は,usrconf.cfg(バッチアプリケーション用オプション定義ファイル)でも指定できる。
デフォルト値はJOBGROUPとなる。スケジュールグループ名の指定の優先順位は次のとおりになる。
-
コマンドライン
-
usrconf.cfg(バッチアプリケーション用オプション定義ファイル)
-
デフォルト値
詳細については,マニュアル「Cosminexus アプリケーションサーバ V8 リファレンス コマンド編」を参照のこと。
-
- JSPEC="{YES|NO}"
-
ジョブステップを並列実行する場合に,そのジョブステップの種類を指定する。
-
YES
並列実行するサブステップに指定する。ジョブの最終ジョブステップにこの属性を指定しても無視される(ジョブの最終ジョブステップは必ずメインステップとなる)。
-
NO
メインステップに指定する。先行するジョブステップにJSPEC="YES"の指定がなければ,このジョブステップは並列実行しない。
-
- LANG="{COBOL|JP1Script|Java}"
-
-
COBOL
COBOL2002でコンパイルしたプログラムを実行する場合,実行するプログラム言語"COBOL"を指定する。プログラム言語がCOBOL以外の場合は指定しないこと。
この属性の指定によって,ジョブステップ内のDD要素で指定したDD要素名から生成する環境変数に"CBL_"を付加し,"CBL_"+"DD要素名"という名称に変換する。
この属性を省略した場合,ジョブステップ内のDD要素で指定したDD要素名から生成する環境変数に"DDN_"を付ける。
-
JP1Script
JP1/Scriptを実行する場合,実行するプログラム言語として"JP1Script"を指定する。JP1/Script以外を実行する場合は指定しないこと。この属性の指定によって,PGM属性にスクリプトファイル名を指定し,PARM属性に位置変数とオプションを指定する。この指定によってスクリプトファイル名,位置変数,オプションを引数とするJP1/Script実行コマンドsptxeを実行する。
-
Java
Cosminexus 08-00以降でバッチアプリケーションを実行する場合,実行するプログラム言語として"Java"を指定する。プログラム言語がJava以外の場合は指定しないこと。この属性の指定によって,PGM属性にJavaアプリケーションクラス名,PARM属性にmainメソッドに渡す引数,Group属性にスケジュールグループ名,Option属性にJavaオプションを引数とするバッチアプリケーション実行コマンドcjexecjobを実行する。
-
- Option="{Javaのクラスパス|Javaのシステムプロパティ}" 〜<任意文字列>((1〜1022))
-
-
Javaのクラスパス
-cpまたは-classpathオプションを指定する。ジョブコントローラは,この属性に指定されたオプションを,そのままJavaオプションとしてcjexecjobコマンドに渡す。
複数のクラスパスを異なる手段で指定した場合の検索順は次のとおりになる。
1. usrconf.cfg(バッチサーバ用オプション定義ファイル)
2. コマンドライン引数
3. usrconf.cfg(バッチアプリケーション用オプション定義ファイル)
-
Javaのシステムプロパティ
cjexecjobコマンドに渡す,Java実行環境のシステムプロパティを指定する。同じキーのシステムプロパティを指定した場合,あとに指定したプロパティが優先される。同じキーのシステムプロパティを異なる手段で指定した場合の優先順位は次のとおりになる。
1. コマンドライン引数
2. usrconf.properties(バッチアプリケーション用ユーザプロパティファイル)
3. usrconf.cfg(バッチアプリケーション用オプション定義ファイル)
4. usrconf.properties(バッチサーバ用ユーザプロパティファイル)
5. usrconf.cfg(バッチサーバ用オプション定義ファイル)
詳細については,マニュアル「Cosminexus アプリケーションサーバ V8 リファレンス コマンド編」を参照のこと。
-
- PGM="{*|コマンド名|スクリプトファイル名|Javaアプリケーションクラス名}"
-
実行するプログラムを指定する。この属性は,REPLACE要素内でEXEC要素を置換する場合にだけ省略できる。
-
*
実行するプログラム,コマンド,シェルスクリプトの名称と,その引数を要素の内容に指定していることを示す。
-
コマンド名〜<任意文字列>((1〜64文字))
実行するプログラム,コマンド,シェルスクリプトの名称を指定する。
-
スクリプトファイル名〜<任意文字列>((1〜1023文字))
JP1/Scriptのスクリプトファイル名を指定する。
-
Javaアプリケーションクラス名〜<任意文字列>((1〜1023文字))
パッケージ名を含めたJavaアプリケーションクラス名を指定する。
-
- PARM="{引数|mainメソッドに渡す引数}" 〜<任意文字列>((1〜958文字))
-
-
引数
実行するプログラムに与える引数を指定する。ただし,PGM属性が"*"の場合は指定しても無視する。
文字列中に空白を含む場合は,この属性が指定されたEXEC要素のPARMSPLIT属性の指定に従い,プログラムにどのように引数を与えるかを決定する。
LANG="JP1Script"の場合はJP1/Scriptに渡す引数としてsptxeの位置変数とオプションを指定する。位置変数とオプションは,空白で区切って指定する。この場合は,PARMSPLIT属性の指定は無視される。
-
メソッドに渡す引数
LANG="Java"の場合はJavaアプリケーションのmainメソッドに渡す引数を指定する。
-
- PARMSPLIT="{YES|NO}"
-
PARM属性値が空白を含む場合,プログラムにどのように引数を与えるかを指定する。この属性を省略した場合,設定ファイルのEXEC_PARMSPLITパラメータの指定値が有効になる。
-
YES
UNIXの一般的な引数インタフェースであるC言語インタフェースに従った形式を使用する場合に,YESを指定する。PARM属性値が空白を含む場合,空白で区切られた複数の引数としてプログラムに渡される。
-
NO
VOS3から移行したCOBOLプログラムなどのVOS3インタフェースに従った形式を使用する場合に,NOを指定する。PARM属性値が空白を含む場合,空白を含む1つの引数としてプログラムに渡される。
EXEC要素のPARMSPLIT属性と設定ファイルのEXEC_PARMSPLITパラメータの指定によるPARM属性の扱いを次の表に示す。
表9‒4 EXEC要素のPARMSPLIT属性と設定ファイルのEXEC_PARMSPLITパラメータの指定によるPARM属性の扱い EXEC_PARMSPLITパラメータ
PARMSPLIT属性
YES
NO
省略
YESまたは省略
分割する※1。
分割しない※2。
分割する※1。
NO
分割する※1。
分割しない※2。
分割しない※2。
-
注※1 空白で分割した複数の引数とする。
注※2 空白を含む1つの引数とする。
- STDOUTCLASS="クラス名" 〜<記号名称>((1〜31文字))
-
ユーザプログラムの標準出力を格納するファイルの出力クラスを指定する。この属性を省略した場合は,JOB要素のSTDOUTCLASS属性で指定された出力クラスとなる。
出力クラス名をSysoutClassパラメータで定義していない場合は,KAKC1124-Eメッセージを出力してジョブ定義XMLファイルエラーとなる。
- STDERRCLASS="クラス名" 〜<記号名称>((1〜31文字))
-
ユーザプログラムの標準エラー出力を格納するファイルの出力クラスを指定する。この属性を省略した場合は,JOB要素のSTDERRCLASS属性で指定された出力クラスとなる。
出力クラス名をSysoutClassパラメータで定義していない場合は,KAKC1124-Eメッセージを出力してジョブ定義XMLファイルエラーとなる。
内容
PGM属性値に"*"を指定した場合,この要素の内容に,<![CDATA[!と!]]>で囲んで,プログラム名,引数など,シェルスクリプトを指定する。プログラム名や引数に,属性値の引用符内の文字列に指定できない<,",または&の文字が含まれている場合に,この要素の内容に記述する。
JP1/AJSで起動したJP1/ASのスクリプトから実行するときは,JP1/AJSが環境変数SHELLにJP1/ASを設定することがあるので,PGM属性値に"*"を指定した場合,注意が必要である。詳細は,「表5-1 JP1/AJSからバッチジョブを起動した場合の強制終了の方法と制限事項」を参照のこと。
注意事項
-
EXEC要素は,STEP要素内に1つだけ指定できる。ただし,同一STEP要素内にCALL要素がある場合には指定できない。
-
COND属性の注意事項を次に示す。
-
条件パラメータにジョブステップ名およびプロシジャステップ名を記入していない場合,先行するすべてのジョブステップが判定の対象となる。
-
条件パラメータで指定したジョブステップ名およびプロシジャステップ名が先行するジョブステップ中に2つ以上ある場合,該当するジョブステップ中の先頭が判定の対象となる。
-
条件パラメータは,EVENまたはONLYを含めて8つまで指定できる。
-
1つの条件パラメータだけ記入する場合,両端の括弧"( )"を省略できる。
-
EVENまたはONLYは,必ずしも条件パラメータの最後に記入しなくてもよい。
-
EXEC要素とJOB要素の両方でCOND属性を指定した場合,JOB要素で指定した条件を満たすと,EXEC要素で指定した条件を満たさないときも,後続のジョブステップを実行しない。
-
指定した先行するジョブステップが条件付き実行によってすでに実行がスキップされている場合,COND属性は無視される。
-
自ジョブステップと並列実行するジョブステップを参照しても無効となる。
-
-
空白で分割した複数の引数としてプログラムに渡される場合,次に示すような引数に空白を含む指定はできない。
引数1: AAA 引数2: BBB△CCC
このような指定をしたい場合は,PGM属性に"*"を指定してシェルスクリプトを記述し,シェルの仕様に従って空白を含む引数を指定する。
<EXEC PGM="*"> <![CDATA[ ! program△AAA△"BBB△CCC" ! ]]> </EXEC>
使用例
プログラムPROG1を実行する場合の使用例を次に示す。
<?xml version="1.0" encoding="Shift_JIS" ?> <HitachiBatchJobExec version="1.3" os="unix"> <JOB NAME="JOB1"> <STEP NAME="STEP"> <EXEC PGM="PROG1" /> </STEP> </JOB> </HitachiBatchJobExec>
また,シェルとして実行する場合の使用例を次に示す。
<?xml version="1.0" encoding="Shift_JIS" ?> <HitachiBatchJobExec version="1.3" os="unix"> <JOB NAME="JOB1"> <STEP NAME="STEP"> <EXEC PGM='*'> <![CDATA[ ! PROG1 ! ]]> </EXEC> </STEP> </JOB> </HitachiBatchJobExec>