IKJEFT01(IKJEFT1A,IKJEFT1B)
IKJEFT01:TSOのコマンドシェル・プログラム
IKJEFT01はTSOの端末モニタープログラムです。TMP(Terminal Monitoe Program)と呼ばれ、TSOセッションの開始を行います。ログオンプロシージャと呼ばれるJCLのEXEC文で定義して、ログオンが完了したユーザーのTSOユーザー空間を起動するために使われます。端末からのオンライン利用だけでなく、バッチジョブとしても実行することができ、バックグラウンドでTSOコマンドを実行することができます。同じコマンドを何度も繰り返したり、作業内容と結果を記録したい場合などに利用できます。
バッチでTSOセッションを実行するJCLのサンプルは別ページに載せてあります。==>ここ
TMPの実行
//TSOBATCH EXEC PGM=IKJEFT01 //SYSTSPRT DD SYSOUT=* //SYSPROC DD DISP=SHR,DSN=MY.CLIST //SYSTSIN DD * ALLOC DD(SYSUT1) DA('MY.TESTDATA') TSOコマンドの実行 %MYCLIST1 CLISTの実行 //
TMPのプログラム名はIKJEFT01です。MSPとVOS3ではそれぞれ、KEQEFT01、JETTFT01の名前になります。SYSTSINで実行したいコマンドを指定します。複数指定すれば、指定した順序で順番に実行されます。コマンドまたはプログラム(CALLコマンドで呼び出す等)がエラーで終了しても、ただちにTSOセッションは終了しません。後続のコマンドがあれば、処理が続けられます。バッチセッションの場合は、最後に実行したコマンドの戻りコードがステップの完了コードとなります。ただしコマンドまたはプログラムがABENDした場合は、そこで処理は打ち切られ、ステップの完了コードには12が設定されます。(MSPやVOS3でも同様の動きと思いますが、実際に完了コードがどう設定されるかは、実機を使える方はご自分で確認してみて下さい)
z/OSの場合、TMPの代替の入口点名(IKJEFT1A,IKJEFT1B)が使用できます。IKJEFT1Aまたは1Bでは、実行したコマンドがエラーになった時の動き方が変わります。後続のコマンドがどうなるか、ステップの完了コードはどう設定されるかが、IKJEFT01とは異なります。基本的には途中でコマンドがエラーになっても、指定したコマンドを最後まで実行させたいならIKJEFT01を、エラーになったところで処理をやめたいならIKJEFT1AまたはIKJEFT1Bを使用します。
TMP入口点名による動きの違い(MVS)
コマンドが0でない 戻りコードで終わった時 | コマンドがABENDした時(Unnnn) | コマンドがABENDした時(Sxxx) | |
---|---|---|---|
IKJEFT01 | 次のコマンドがあれば処理を続ける。 ステップの完了コードは最後のコマンドの戻りコード。 | 次のコマンドは実行されない。 ステップの完了コードは12。 | ←(左に同じ) |
IKJEFT1A | 次のコマンドは実行されない。 ステップの完了コードは最後のコマンドの戻りコード。 | 次のコマンドは実行されない。 ステップの完了コードは、 ユーザーABENDコードと同じ。 | 次のコマンドは実行されない。 ステップの完了コードはS04C。 |
IKJEFT1B | 次のコマンドは実行されない。 ステップの完了コードは最後のコマンドの戻りコード。 | 次のコマンドは実行されない。 ステップの完了コードはS04C。 | ←(左に同じ) |
TSOセッションで実行したコマンドが正しく終了したかどうかで、後続のステップの実行をコントロールしたいなら、必要に応じて適切なプログラム名を選べます。
CLISTの中でコマンドがエラーになった時
IKJEFT01では、CLIST内で実行したコマンドがエラーになっても、CLIST自体がノーマルに終われば完了コードは0となります。これを防ぐにはEXITステートメントでCLISTの戻りコードを明示的に指定します。
PROC 0 CALL *(MYPGM) 'MODE=PRODRUN' EXIT CODE(&MAXCC)
IKJEFT1Aおよび1Bでは、EXITステートメントがなくてもエラーになった時点で処理が打ち切られ、完了コードもエラーの戻りコードで設定されます。ただしコマンドのエラーではなく、単にEXITステートメントのCODEパラメーターで0以外のコードを指定したような場合は、打ち切られずに後続の処理が行われます。
PROC 0 EXIT CODE(28)
Comment from 野良猫
Time 2009年7月26日 at 18:53
MACXXも設定できるので判断をしてSET MAXCC = nnと変更はできます。