EXEC要素(プログラムの実行)
形式
[COND=" [(]しきい値, 演算符号 [,ステップ名[,プロシジャステップ名]] [)] [,(しきい値, 演算符号 [,ステップ名[,プロシジャステップ名]])]+ [,{EVEN|ONLY}] "] [Group="Javaバッチアプリケーション実行時のスケジュールグループ名"] [LANG="{COBOL|Java}"] [Option="{Javaのクラスパス|Javaのシステムプロパティ}"] [PGM="{*|コマンド名|Javaアプリケーションクラス名}"] [PARM="{引数|<Javaバッチアプリケーションのmainメソッドに渡す引数>…}"] [PARMSPLIT="{YES|NO}"] [STDOUTCLASS="クラス名"] [STDERRCLASS="クラス名"]
機能
実行するプログラムとプログラムを実行する条件を定義する。
属性
- COND="
-
[(]しきい値, 演算符号 [,ステップ名[,プロシジャステップ名]] [)]
[,(しきい値, 演算符号 [,ステップ名[,プロシジャステップ名]])]+
[,{EVEN|ONLY}] "
先行する全ジョブステップまたは特定のジョブステップの終了コードや,異常終了した先行ジョブステップの有無によって,このジョブステップを実行するかどうかを決定するための条件を指定する。
-
しきい値〜<符号なし整数>((0〜4095))
先行する全ジョブステップまたは特定のジョブステップの終了コードと比較するしきい値を指定する。1つでも条件を満たした場合,該当するジョブステップをスキップする。
-
演算符号〜(({EQ|NE|GT|GE|LT|LE}))
演算符号の意味を次に示す。
EQ:しきい値は終了コードと等しい。
NE:しきい値は終了コードと等しくない。
GT:しきい値は終了コードより大きい。
GE:しきい値は終了コードより大きいか等しい。
LT:しきい値は終了コードより小さい。
LE:しきい値は終了コードより小さいか等しい。
-
ステップ名〜<記号名称>((1〜31文字))
判定対象となる終了コードを返すジョブステップ名を指定する。ただし,該当するジョブステップがプロシジャ中のジョブステップの場合には,ステップ名としてプロシジャを呼び出したCALL要素のステップ名を指定したあと,続いてプロシジャステップ名を指定する。
プロシジャ内でプロシジャステップ名を指定しないでステップ名だけ指定した場合,はじめにそのプロシジャ内のジョブステップ名を検索し,見つからない場合はジョブ定義XMLファイルの先頭から,プロシジャ外のジョブステップ名を検索する。
-
プロシジャステップ名〜<記号名称>((1〜31文字))
該当するジョブステップがプロシジャ中のジョブステップの場合に,判定対象となる終了コードを返すプロシジャ中のSTEP要素に指定したステップ名を指定する。
-
EVEN
先行したジョブステップのどれかが異常終了したかどうかに関係なく,無条件にこのジョブステップを実行する。
-
ONLY
先行したジョブステップのどれかが異常終了した場合に,このジョブステップを実行する。
-
- Group="Javaバッチアプリケーション実行時のスケジュールグループ名"〜<グループ名>((1〜63))
-
Javaバッチアプリケーション実行時,ジョブスケジューリング機能を使用する場合に,CTMがバッチアプリケーションの実行をスケジューリングするときに割り当てるバッチサーバのスケジュールグループを指定する。スケジュールグループ名は,usrconf.cfg(バッチアプリケーション用オプション定義ファイル)でも指定できる。デフォルト値はJOBGROUPとなる。スケジュールグループ名の指定の優先順位は次のとおり。
-
コマンドライン
-
usrconf.cfg (バッチアプリケーション用オプション定義ファイル)
-
デフォルト値
詳細についてはマニュアル「Cosminexus アプリケーションサーバ V8 リファレンス コマンド編」を参照のこと。
-
-
COBOL
COBOL2002でコンパイルしたプログラムを実行する場合,実行するプログラム言語"COBOL"を指定する。プログラム言語がCOBOL以外の場合は指定しないこと。
-
この属性の指定によって,ジョブステップ内のDD要素で指定したDD要素名から生成する環境変数に"CBL_"を付けて,"CBL_"+"DD要素名"という名称に変換する。
-
この属性を省略した場合,ジョブステップ内のDD要素で指定したDD要素名から生成する環境変数に"DDN_"を付けて,"DDN_"+"DD要素名"という名称に変換する。
-
-
Java
Cosminexus 08-00以降でバッチアプリケーションを実行する場合,実行するプログラム言語"Java"を指定する。プログラム言語がJava以外の場合は指定しないこと。この属性の指定によって,PGM属性にJavaアプリケーションクラス名,PARM属性にmainメソッドに渡す引数,Group属性にスケジュールグループ名,Option属性にJavaオプションを引数とするバッチアプリケーション実行コマンドcjexecjobを実行する。
Option="{Javaのクラスパス|Javaのシステムプロパティ}"〜<任意文字列>((1〜1023))
-
Javaのクラスパス
-cpまたは-classpathオプションを指定する。ジョブコントローラは,この属性に指定されたオプションを,そのままJavaオプションとしてcjexecjobコマンドに渡す。
複数のクラスパスを異なる手段で指定した場合の検索順は次のとおり。
-
usrconf.cfg(バッチサーバ用オプション定義ファイル)
-
コマンドライン引数
-
usrconf.cfg (バッチアプリケーション用オプション定義ファイル)
-
-
Javaのシステムプロパティ
cjexecjobコマンドに渡す,Java実行環境のシステムプロパティを指定する。同じキーのシステムプロパティを指定した場合,あとに指定したプロパティが優先される。同じキーのシステムプロパティを異なる手段で指定した場合の優先順位は次のとおり。
-
コマンドライン引数
-
usrconf.properties(バッチアプリケーション用ユーザプロパティファイル)
-
usrconf.cfg(バッチアプリケーション用オプション定義ファイル)
-
usrconf.properties(バッチサーバ用ユーザプロパティファイル)
-
usrconf.cfg(バッチサーバ用オプション定義ファイル)
詳細はマニュアル「Cosminexus アプリケーションサーバ V8 リファレンス コマンド編」を参照のこと。
-
- PGM="{*|コマンド名|Javaアプリケーションクラス名}"
-
実行するプログラムを指定する。この属性は,REPLACE要素内でEXEC要素を置換する場合にだけ省略できる。
-
*
実行するプログラム,コマンド,スクリプトの名称と,その引数を要素の内容に指定していることを示す。
-
コマンド名〜<任意文字列>((1〜247文字))
実行するプログラム,コマンド,スクリプトの名称を指定する。
プログラムの名称の一部として拡張子を指定しなかった場合,".exe"を追加する。最後が1つのピリオド"."で終了し拡張子が含まれていない場合や,パス名が含まれている場合,".exe"は追加しない。
-
Javaアプリケーション〜<クラス名>((1〜247文字))
パッケージ名を含めたJavaアプリケーションクラス名を指定する。
-
- PARM="{引数|mainメソッドに渡す引数…}"〜<任意文字列>((1〜958文字))
-
-
引数
実行するプログラムに与える引数を指定する。ただし,PGM属性が"*"の場合は指定しても無視する。
文字列中に空白を含む場合は,この属性が指定されたEXEC要素のPARMSPLIT属性の指定に従い,プログラムにどのように引数を与えるかを決定する。
-
Javaバッチアプリケーションのmainメソッドに渡す引数
LANG="Java"の場合はJavaアプリケーションのmainメソッドに渡す引数を指定する。
-
- PARMSPLIT="{YES|NO}"
-
PARM属性値が空白を含む場合,プログラムにどのように引数を与えるかを指定する。この属性を省略した場合,設定ファイルのEXEC_PARMSPLITパラメータの指定値が有効になる。
-
YES
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[!と!]]>で囲んで,プログラム名,引数など,Windowsのコマンドプロンプトに記述できるコマンド行を指定する。プログラム名や引数に,属性値の引用符内の文字列に指定できない<,",または&の文字が含まれている場合に,この要素の内容に記述する。
注意事項
-
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属性に"*"を指定してスクリプトを記述し,OSの仕様に従って空白を含む引数を指定する。
<EXEC PGM="*"> <![CDATA[ ! program△AAA△"BBB△CCC" ! ]]> </EXEC>
-
DTD上はDD要素の属性にJSPEC属性が含まれるが,この属性値はバッチジョブ実行システムではサポートしない。JSPEC属性を指定した場合,バッチジョブ実行システムはジョブ定義XMLファイルの解析エラーとする。
-
TYPE属性値に"TEMP"および"TEMPISAM"を指定した場合,ジョブコントローラはDSN属性が指定されていても無視する。
使用例
プログラムPROG1を実行する場合の使用例を次に示す。
<?xml version="1.0" encoding="Shift_JIS" ?> <HitachiBatchJobExec version="1.2" os="windows"> <JOB NAME="JOB1"> <STEP NAME="STEP"> <EXEC PGM="PROG1" /> </STEP> </JOB> </HitachiBatchJobExec>
また,Windowsのバッチファイルとして実行する場合の使用例を次に示す。
<?xml version="1.0" encoding="Shift_JIS" ?> <HitachiBatchJobExec version="1.2" os="windows"> <JOB NAME="JOB1"> <STEP NAME="STEP"> <EXEC PGM='*'> <![CDATA[ ! PROG1 ! ]]> </EXEC> </STEP> </JOB> </HitachiBatchJobExec>